在OnCellClick之后DBGrid保存单元格颜色(delphi,lazarus)

时间:2017-04-16 15:51:46

标签: delphi lazarus dbgrid

抱歉我的英文。 我有一些表(来自datasource-> mssql server-> views),我需要在DBGrid中删除/隐藏/分配text white /任何其他东西单击的单元格。 喜欢:我点击了细胞 - >细胞font = white(或点击.text:=''/ etc ..);保存;点击下一个细胞;重复。 我尝试这样做:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if gdSelected in State
  then begin
    with  DBGrid1.Canvas do
    begin
        Brush.Color:=clWhite;
        Font.Color:=clWhite;
        FillRect(Rect);
    end;
    end;
end;

但它仅适用于1个单元格:当我单击下一个单元格时,前一个单元格的颜色变为标准(如DBGrid中的另一个单元格)。如何为所有点击的细胞保存细胞颜色? //由于我对Delphi不太了解而感到复杂谢谢!

1 个答案:

答案 0 :(得分:0)

我相信这是因为你正在使用gdselected in state。一次只选择一个单元格,因此只使用您的消隐代码绘制该单元格。

你需要在单击一个单元格时设置一个属性(比如set tag = 1,或类似的东西),然后沿着"如果Sender.Tag>行检查该标记。 0然后。我相信发件人本身就是单元格,所以像TControl(发件人).tag或其他一些适当的演员会得到你想要的东西。