Только чтение TDBGrid / TwwDBGrid Cell в Delphi? - PullRequest
1 голос
/ 05 января 2010

возможно ли установить ячейку TDBGrid (или TwwDBGrid) для чтения только в Delphi? В настоящее время я возился с буквально серым цветом ячейки и очищаю ее после редактирования, но это не очень удовлетворительно.

Ура, Джейми

Ответы [ 2 ]

5 голосов
/ 05 января 2010

Определенная ячейка или все ячейки в одном столбце?

Вы можете настроить столбец для чтения только таким образом:

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;
0 голосов
/ 05 января 2010

Как сказал Водзу, TColumn обладает свойством ReadOnly.

...