我正在覆盖OnDrawCell
字符串网格。在某些情况下,我想使用TColor
系统绘制时用于所选行的法线(否OnDrawCell
)。
那是哪个颜色(u)r?clXXX ?
我正在覆盖OnDrawCell
字符串网格。在某些情况下,我想使用TColor
系统绘制时用于所选行的法线(否OnDrawCell
)。
那是哪个颜色(u)r?clXXX ?
在 Delphi 2010 之前,您可以使用clHighlight
颜色。
在 Delphi 2010 中,TStringGrid、TDrawGrid 和 TDBGrid 组件现在有一个DrawingStyle
属性,并且根据这个值(gdsClassic、gdsGradient、gdsThemed),您必须以这种方式计算颜色。
1.供gdsClassic 使用clHighlight
;
2.for gdsGradient使用GradientFillCanvas
方法
GradientFillCanvas(Canvas, GetShadowColor(clHighlight, 45), GetShadowColor(clHighlight, 10), LRect, gdVertical);
3.为gdsThemed调用 的DrawElement
方法TCustomStyleServices
StyleServices.DrawElement(Canvas.Handle, StyleServices.GetElementDetails(tgCellSelected), LRect, ARect);
在引入 vcl 样式的 Delphi XE2(和 XE3)中,您必须使用与上述相同的样式,但检查当前样式是否为“自定义样式”(vcl 样式)
1.for gdsGradient使用GradientFillCanvas 方法以这种方式计算渐变的颜色
StyleServices.GetElementColor(StyleServices.GetElementDetails(tgGradientCellRowSelectedRight), ecGradientColor1, StartColor); //StartColor is a TColor variable
StyleServices.GetElementColor(StyleServices.GetElementDetails(tgGradientCellRowSelectedRight), ecGradientColor2, EndColor);//EndColor is a TColor variable
2.gdsClassic _
StyleServices.GetElementColor(StyleServices.GetElementDetails(tgClassicCellRowSelectedRight), ecFillColor, LColor); //LColor is a TColor variable
如果您想查看 VCL 如何绘制选定(突出显示)单元格/行的示例,请尝试执行该TCustomGrid.DrawCellHighlight
方法。