VirtualTreeView和VCL样式

时间:2015-06-04 15:30:32

标签: delphi virtualtreeview vcl-styles

我在我的应用程序中使用VirtualTreeView(作为网格 - 在Delphi XE7中),我也选择使用Carbon VCL风格。 出现这个问题是因为我需要根据每一行的某些状态为某些行着色,即使我在一条线上使用浅色,字体颜色也会保持白色。所以无法读取数据。当我使用Iceberg Classico风格时,不会发生此问题。

所以基本上,我可以根据所选的样式更改我的行颜色集,这是一个解决方案。但我正在寻找一种根据行颜色背景修改字体颜色的方法吗?

我正在做事件中的着色代码:BeforeCellPaint,我试图修改字体颜色而没有任何成功。

有什么想法吗?

1 个答案:

答案 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(sfTreeItemTextNorma‌​l, clBlack) 
else
   TCustomStyleExt(TStyleManager.ActiveStyle).SetStyleFontColor(sfTreeItemTextNorma‌​l, aFontColor); 
TargetCanvas.FillRect(CellRect); 

有了这个,我可以改变字体颜色。

劳伦