是否可以在 Delphi 中设置 TDBGrid(或 TwwDBGrid)单元格只读?目前,我正在摆弄从字面上使单元格变灰并在编辑后将其清除,但这并不是很令人满意。
干杯,杰米
一列中的特定单元格或所有单元格?
您可以通过这种方式将列设置为只读:
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;
正如 Wodzu 所说,TColumn
拥有ReadOnly
财产。