【发布时间】:2010-01-05 10:54:33
【问题描述】:
是否可以在 Delphi 中将 TDBGrid(或 TwwDBGrid)单元格设置为只读?目前我正在摆弄将单元格变灰并在编辑后将其清除,但这并不是很令人满意。
干杯,杰米
【问题讨论】:
是否可以在 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 属性。
【讨论】: