只读的TDBGrid / TwwDBGrid细胞在Delphi?(ReadOnly TDBGrid/

2019-10-19 00:34发布

是有可能设置一个TDBGrid中(或TwwDBGrid)细胞只读在Delphi? 目前,我与字面花白的细胞和编辑后清除它摆弄周围,但它不是很理想。

干杯,杰米

Answer 1:

特定的细胞或一列中的所有单元?

您可以设置一栏,只读了这种方式:

TDBGrid.Colums[IndexOfColumn].ReadOnly := True;

如果你想控制一个特定的细胞,那么你可以尝试编程在OnCellClickEvent一个“保护”方案。 我猜你甚至可以设置TDBGrid.Colums [IndexOfColumn] .ReadOnly:= TRUE; 在这种情况下,当一个给定的电池应该是只读的。 就像是:

procedure TForm.DBGridCellClick(Column: TColumn);
begin
  Column.ReadOnly := ConditionForReadOnly(Column);
end;

编辑后:

我检查了这个解决方案,它的工作原理。

例如,如果您希望编辑只有细胞列大于第一和它们的值必须是0(对于能够对其进行修改),然后保护方案是这样的:

procedure TForm.DBGridCellClick(Column: TColumn);
begin
  Column.ReadOnly := (qry['FieldWithValue'] <> 0) or (Column.Index < 1);  //Index is 0-based
end;


Answer 2:

正如Wodzu说, TColumn具有ReadOnly属性。



文章来源: ReadOnly TDBGrid/TwwDBGrid Cell in Delphi?