修复lazarus在linux(ubuntu、银河麒麟等) Object Inspector下拉文字不显示的问题。
打开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
{$ifdef windows}
ValueComboBox.Canvas.Font.Color := clWindowText;
{$else}
ValueComboBox.Canvas.Font.Color := clHighlightText;//2022.5.24 LBZ 字体颜色与背景颜色相同的Bug
{$endif}
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;
修复前:
修复后:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~