我在我的应用程序中使用VirtualTreeView(作为网格 - 在Delphi XE7中),我也选择使用Carbon VCL风格。 出现这个问题是因为我需要根据每一行的某些状态为某些行着色,即使我在一条线上使用浅色,字体颜色也会保持白色。所以无法读取数据。当我使用Iceberg Classico风格时,不会发生此问题。
所以基本上,我可以根据所选的样式更改我的行颜色集,这是一个解决方案。但我正在寻找一种根据行颜色背景修改字体颜色的方法吗?
我正在做事件中的着色代码:BeforeCellPaint,我试图修改字体颜色而没有任何成功。
有什么想法吗?
答案 0 :(得分:1)
我找到了一个对这个主题有很多帮助的图书馆:
// unit for the VCL Styles Utils
// github.com/RRUZ/vcl-styles-utils
TargetCanvas.Brush.Color := aColor;
if TStyleManager.ActiveStyle.Name = 'Carbon' then
TCustomStyleExt(TStyleManager.ActiveStyle).SetStyleFontColor(sfTreeItemTextNormal, clBlack)
else
TCustomStyleExt(TStyleManager.ActiveStyle).SetStyleFontColor(sfTreeItemTextNormal, aFontColor);
TargetCanvas.FillRect(CellRect);
有了这个,我可以改变字体颜色。
劳伦