Определенная ячейка или все ячейки в одном столбце?
Вы можете настроить столбец для чтения только таким образом:
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;