Maw*_*awg 6 delphi winapi tstringgrid
我压倒OnDrawCell一个字符串网格.在某些情况下,我想TColor在系统执行绘图时使用用于所选行的法线(否OnDrawCell).
那是哪个colo(你)?clXXX?
RRU*_*RUZ 11
在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);
Run Code Online (Sandbox Code Playgroud)
3.对于gdsThemed 调用DrawElement的方法TCustomStyleServices
StyleServices.DrawElement(Canvas.Handle, StyleServices.GetElementDetails(tgCellSelected), LRect, ARect);
Run Code Online (Sandbox Code Playgroud)
在Delphi XE2(和XE3)中引入vcl样式时,必须使用与上面相同的内容,但检查当前样式是否为"自定义样式"(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
Run Code Online (Sandbox Code Playgroud)
2.for gdsClassic
StyleServices.GetElementColor(StyleServices.GetElementDetails(tgClassicCellRowSelectedRight), ecFillColor, LColor); //LColor is a TColor variable
Run Code Online (Sandbox Code Playgroud)
如果要检查VCL如何绘制选定(突出显示的)单元格/行的示例,请尝试执行该TCustomGrid.DrawCellHighlight方法.
| 归档时间: |
|
| 查看次数: |
1618 次 |
| 最近记录: |