我在我的应用程序中使用VirtualTreeView(作为Delphi XE7中的网格),我还选择使用Carbon VCL样式。问题出现了,因为我需要根据每行的一些状态对一些行进行着色,即使我在一行上使用浅色,字体颜色也保持白色。因此读取数据是不可能的。当我使用Iceberg Classico样式时,不会出现此问题。
基本上,我可以根据选择的样式改变行集的颜色,这是一个解决方案。但我正在寻找一种方法来修改字体颜色根据行颜色背景?
我正在事件:BeforeCellPaint中进行着色代码,我试图修改字体颜色,但没有成功。
任何想法?
我找到了一个对这个主题很有帮助的库:
// 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);
我可以改变字体的颜色。
劳伦特