2010-01-05 1 views
1

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

Приветствия, Джейми

ответ

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; 
+0

Спасибо, в сочетании с рендерингом серого OnDrawCell, который идеально подходит. –

0

As Wodzu сказал: TColumn имеет ReadOnly собственности.

 Смежные вопросы

  • Нет связанных вопросов^_^