gpt4 book ai didi

delphi - TStringGrid:是否可以找出单元格的“状态”?

转载 作者:行者123 更新时间:2023-12-03 19:49:42 26 4
gpt4 key购买 nike

我想为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,这很复杂。

最佳答案

根据注释,您正在从OnDrawCell处理程序调用此函数。该OnDrawCell处理程序将传递一个TGridDrawState参数,该参数指定是否选择该单元格。事件处理程序具有以下形式:

TDrawCellEvent = procedure (Sender: TObject; ACol, ARow: Longint;
Rect: TRect; State: TGridDrawState) of object;


您正在询问是否可以忽略 TGridDrawState并在以后以某种方式恢复信息。原则上可以:


您有可用的行和列。这将标识该单元格,您可以检查该单元格是否在当前选择中。
如果您也要忽略行和列,则可以检查提供的 TRect。将其映射回行和列,然后根据当前选择再次检查。


坦率地说,您认为我的做法很愚蠢。有充分的理由为您提供了绘制状态。它具有您需要的信息。用它。

关于delphi - TStringGrid:是否可以找出单元格的“状态”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38915585/

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