![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StringGrid как запретить редактирование в определенном столбце? [D7, WinXP]
MadGhost © (2005-01-24 21:44:00)в StringGrid есть два столбца, один столбец значение, второй параметр, так вот, как сделать так чтобы в первом столбце запретить редактирование, а во втором можно было?
заранее спасибо.
MadGhost (2005-01-24 22:40:00) [1]> begin...end © (24.01.05 22:03) [2]
вау :) при большущее спасибо :), большего и желать нельзя :) тот самый компонент который нужен :) и без геморою.
спасибо.
begin...end (2005-01-24 22:03:00) [2]> MadGhost © (24.01.05 21:44)
Обрабатывайте событие TStringGrid.OnSelectSell и в зависимости от номера столбца выбираемой ячейки включайте/исключайте из свойства TStringGrid.Options значение goEditing.
Пример:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
with (Sender as TStringGrid) do
if (ACol = 1) and (goEditing in Options) then
Options := Options - [goEditing]
else if (ACol = 2) and not (goEditing in Options) then
Options := Options + [goEditing]
end
Кстати, если таблица только из этих двух столбцов и состоит, то лучше заменить её на компонент TValueListEditor - он как раз для таких целей и предназначен.
> [1] dimaxx © (24.01.05 21:56)
После исключения goEditing обработчик TStringGrid.OnSetEditText, вероятно, больше вызываться не будет.
dimaxx (2005-01-24 21:56:00) [3]Через OnSetEditText
procedure(Sender: TObject; ACol, ARow: Longint; const Value: String) of object;
Проверяем ACol. Если ACol=2, то делаем добавление в Options параметра goEditing. Иначе - убираем этот параметр.