我在我的应用程序中使用了VirtualTreeView (作为Delphi中的网格XE7),我也选择了Carbon VCL风格。出现这个问题的原因是,我需要根据每一行上的某些状态为一些行着色,即使我在一行上使用浅色,字体颜色仍然保持为白色。所以读取数据是不可能的。当我使用Iceberg Classico风格时,这个问题不会发生。
所以基本上,我可以根据所选的样式更改我的行集的颜色,这是一种解决方案。但是我正在寻找一种根据行颜色背景修改字体颜色的方法?
我正在做事件中的着色代码: BeforeCellPaint,我试图修改字体颜色,但没有成功。
有什么想法吗?
发布于 2015-06-15 16:59:24
我发现一个库在这个问题上有很大的帮助:
// 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); 这样我就可以改变字体的颜色了。
Laurent
https://stackoverflow.com/questions/30648083
复制相似问题