【问题标题】:DBGrid save cell color after OnCellClick (delphi, lazarus)DBGrid 在 OnCellClick 之后保存单元格颜色(delphi,lazarus)
【发布时间】:2017-04-16 15:51:45
【问题描述】:

对不起我的英语。 我有一些表(来自数据源->mssql 服务器-> 视图),我需要删除/隐藏/分配文本颜色 = 白色/DBGrid 中 单击的单元格 的任何其他内容。 比如:我点击了单元格->单元格字体=白色(或点击了.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不太了解,这让我很复杂谢谢!

【问题讨论】:

  • 你能告诉我们你为什么要改变颜色吗? i need to delete/hide/assign 是什么意思?你想达到什么目标?
  • 我需要隐藏从 DBGrid 中点击过的单元格
  • 您想隐藏一列还是只指定单元格?
  • 只是特定的单元格。指定单元格中的值。

标签: delphi lazarus dbgrid


【解决方案1】:

我相信这是因为您在状态下使用了 if gdselected。一次只选择一个单元格,因此仅使用您的消隐代码绘制该单元格。

您需要在单击单元格时设置一个属性(例如设置标签 = 1,或类似的东西),然后沿着“如果 Sender.Tag > 0 then ”的行检查该标签。我相信发件人是单元格本身,因此诸如 TControl( Sender ).tag 之类的东西或其他适当的演员将为您提供所需的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多