Delphi中的ReadOnly TDBGrid / TwwDBGrid单元?

时间:2010-01-05 10:54:34

标签: delphi tdbgrid

是否可以在Delphi中设置TDBGrid(或TwwDBGrid)单元格ReadOnly?目前我正在摆弄细胞并在编辑后清除细胞,但是它不是很令人满意。

干杯,杰米

2 个答案:

答案 0 :(得分:5)

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

您可以将列设置为仅以这种方式读取:

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;

答案 1 :(得分:0)

正如Wodzu所说,TColumn有一个ReadOnly属性。