修复lazarus在银河麒麟 Object Inspector下拉不显示的Bug
作者:互联网
修复lazarus在银河麒麟 Object Inspector下拉不显示的Bug,
打开lazarus\components\ideintf\objectinspector.pp(3489行开始),按红字的修改后重新编译lazarus就可以。
procedure TOICustomPropertyGrid.ValueComboBoxDrawItem(Control: TWinControl; Index: Integer; ARect: TRect; State: TOwnerDrawState); var CurRow: TOIPropertyGridRow; ItemValue: string; AState: TPropEditDrawState; FontColor: TColor; begin if (FItemIndex>=0) and (FItemIndex<FRows.Count) then begin CurRow:=Rows[FItemIndex]; if (Index>=0) and (Index<ValueComboBox.Items.Count) then ItemValue:=ValueComboBox.Items[Index] else ItemValue:=''; AState:=[]; if odSelected in State then Include(AState,pedsSelected); if odFocused in State then Include(AState,pedsFocused); if odComboBoxEdit in State then Include(AState,pedsInEdit) else Include(AState,pedsInComboList); if not(odBackgroundPainted in State) then ValueComboBox.Canvas.FillRect(ARect); FontColor := ValueComboBox.Canvas.Font.Color; ValueComboBox.Canvas.Font.Assign(FDefaultValueFont); if odSelected in State then ValueComboBox.Canvas.Font.Color := FontColor else //ValueComboBox.Canvas.Font.Color := clWindowText; //2022.5.24 LBZ 以下代码修正字体颜色与背景颜色相同的Bug begin if FontColor<> clWindowText then ValueComboBox.Canvas.Font.Color := clWindowText else ValueComboBox.Canvas.Font.Color := clWindow; end; //2022.5.24 LBZ 以上代码修正字体颜色与背景颜色相同的Bug if CurRow.Editor.HasDefaultValue and (ItemValue = CurRow.Editor.GetDefaultValue) then ValueComboBox.Canvas.Font.Style := ValueComboBox.Canvas.Font.Style + [fsItalic]; CurRow.Editor.ListDrawValue(ItemValue,Index,ValueComboBox.Canvas,ARect,AState); end; end;
修复前:
修复后:
标签:Index,Canvas,lazarus,Object,ValueComboBox,Inspector,Font,CurRow 来源: https://www.cnblogs.com/qiufeng2014/p/16305303.html