gpt4 book ai didi

delphi - 选定的 stringgrid 行的正常颜色是多少?

转载 作者:行者123 更新时间:2023-12-03 14:57:51 30 4
gpt4 key购买 nike

我正在重写字符串网格的OnDrawCell。在某些情况下,我想在系统进行绘图时使用用于所选行的常规 TColor(无 OnDrawCell)。

那是什么颜色? clXXX ?

最佳答案

在 Delphi 2010 之前,您可以使用 clHighlight 颜色。

在 Delphi 2010 中,TStringGrid、TDrawGrid 和 TDBGrid 组件现在具有 DrawingStyle属性并根据此值(gdsClassic、gdsGradient、gdsThemed),您必须以此方式计算颜色。

1.对于gdsClassic使用clHighlight;

2.对于gdsGradient,使用GradientFillCanvas方法

GradientFillCanvas(Canvas, GetShadowColor(clHighlight, 45), GetShadowColor(clHighlight, 10), LRect, gdVertical);

3.对于gdsThemed调用TCustomStyleServicesDrawElement方法

StyleServices.DrawElement(Canvas.Handle, StyleServices.GetElementDetails(tgCellSelected), LRect, ARect);

在Delphi XE2(和XE3)中引入了vcl样式,您必须使用与上面相同的样式,但检查当前样式是否是“自定义样式”(vcl样式)

1.对于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 方法。

关于delphi - 选定的 stringgrid 行的正常颜色是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13060257/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com