是否可以在Delphi中设置TDBGrid(或TwwDBGrid)单元格ReadOnly?目前我正在摆弄细胞并在编辑后清除细胞,但是它不是很令人满意。
干杯,杰米
答案 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
属性。