【发布时间】:2015-06-04 15:30:32
【问题描述】:
我在我的应用程序中使用 VirtualTreeView(作为网格 - 在 Delphi XE7 中),我还选择使用 Carbon VCL 样式。 出现问题是因为我需要根据每行的某些状态为某些行着色,即使我在一行上使用浅色,字体颜色也会保持白色。所以无法读取数据。当我使用 Iceberg Classico 风格时,不会出现此问题。
所以基本上,我可以根据所选样式更改我的一组行颜色,这是一种解决方案。但是我正在寻找一种根据行颜色背景修改字体颜色的方法?
我正在事件中进行着色代码:BeforeCellPaint,我尝试修改字体颜色但没有成功。
有什么想法吗?
【问题讨论】:
-
请发布您的着色代码。
-
顺便说一句,我找到了一个对这个主题有很大帮助的库: // VCL Styles Utils 的单元 // github.com/RRUZ/vcl-styles-utils TargetCanvas.Brush.Color := aColor;如果 TStyleManager.ActiveStyle.Name = 'Carbon' 然后 TCustomStyleExt(TStyleManager.ActiveStyle).SetStyleFontColor(sfTreeItemTextNormal, clBlack) 否则 TCustomStyleExt(TStyleManager.ActiveStyle).SetStyleFontColor(sfTreeItemTextNormal, aFontColor); TargetCanvas.FillRect(CellRect);有了这个我可以改变字体颜色。
-
将其发布为答案 :-)
标签: delphi virtualtreeview vcl-styles