【发布时间】:2016-08-12 10:20:17
【问题描述】:
我想为 TStringGrid 实现一个 FillCell 过程。我想用颜色填充某个单元格,但前提是未选择单元格(行)。
procedure TMyStrGrid.FillCell(Rect: TRect; aColor: TColor);
begin
//if NOT (gdSelected in State) then <---- how do I obtain the 'State' here?
begin
Canvas.Brush.Color:= aColor;
Canvas.FillRect(Rect);
end;
end;
这只是一个练习 :) 我正在尝试找出非常复杂的 VCL.Grids.pas。
【问题讨论】:
-
你什么时候打电话给
FillCell?响应哪个事件?OnDrawCell提供绘制状态。 -
OnDraw。我知道您要建议什么:将 State 作为参数传递。但我想知道是否可以在不将 State 作为参数传递的情况下找到它。
-
你到底为什么要这么做?您已经有了正确的解决方案。传递参数。
-
@DavidHeffernan-这是我目前的解决方案。我只是好奇。我查看了 VCL.Grids.pas,试图弄清楚该怎么做,但我做不到。
-
为什么不在 OnSelectCell 事件中存储当前选中的行呢?然后在需要时使用存储的 rownr。
标签: delphi graphics vcl delphi-xe7 tstringgrid