DBGrid将某个单元格设置为只读

时间:2016-11-02 10:19:47

标签: delphi dbgrid

使用dbgrid,我们可以将某些列设置为只读

DBGrid1.Columns[C].ReadOnly := True;

在我的情况下,我需要将一些单元格(以及并非此列中的所有单元格)设置为只读。

dbgrid

您可以在我的图片中看到,如果No中有“field1”值,我们应该在字段Tx上启用编辑功能。但如果我有“Yes”值,我们应将Tx字段设为ReadOnly

有可能吗?

1 个答案:

答案 0 :(得分:6)

是的,有可能。解决这个问题的关键是连接到网格的数据集的数据集光标与网格中的当前行同步,因为TDBGrid的编码方式。

因此,您需要做的就是为数据集设置AfterScroll事件,并将代码设置为网格的ReadOnly属性。就我而言,以下工作正常:

procedure TForm1.CDS1AfterScroll(DataSet: TDataSet);
begin
  DBGrid1.Columns[4].ReadOnly := Odd(CDS1.FieldByName('ID').AsInteger);
end;

显然,在您的情况下,您可以测试您的是/否字段的内容。

如果您希望网格立即对您用于确定列是否应为只读的字段值的更改做出反应,则应在数据集中执行相同的代码{{{ 1}}事件。