![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DBGrid-блокировка ввода текста с клавиатуры
vitv © (2007-04-13 09:54:00)Есть DBGrid, значения которого заполняются всплывающими меню или листбоксами. Возможно ли заблокировать ввод с клавиатуры в определённый столбцы?
vitv (2007-04-14 10:10:00) [1]Почитал. Но решил сделать так:
Кинул на форму DBLookupComboBox и при отрисовке ячейки вызываю:
procedure TForm1.DBGrid11DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
if (gdFocused in State) then
begin
if (Column.FieldName = 'list') then
DBLookupComboBox1.Left := Rect.Left+Test.DBGrid11.Left;
DBLookupComboBox1.Top :=Rect.Top +Test.DBGrid11.Top;
DBLookupComboBox1.Width := Column.Width+5;
DBLookupComboBox1.Visible := True;
end;
end;
Desdechado (2007-04-13 12:54:00) [2]С каких пор пиклист стал называться лукапным полем?
Справку почитай по ftLookup и Lookup Fields
vitv (2007-04-13 12:40:00) [3]Desdechado © (13.04.07 12:15) [6]
И как ты в лукапные поля что-то вводишь?
var n:integer;
begin
n:=0;
if DBGrid11.Columns.Count>0 then
begin
while DBGrid11.Columns[n].FieldName<>'List' do
inc(n);
while not DataModule2.IBQuery1.Eof do with
DBGrid11.Columns[n].PickList do
begin
DBGrid11.Columns[n].PickList.Clear;
DataModule2.IBQuery1.Next;
end;
DataModule2.IBQuery1.Close;
DataModule2.IBQuery1.Open;
end;
while DBGrid11.Columns[n].FieldName<>'List' do
inc(n);
while not DataModule2.IBQuery1.Eof do with
DBGrid11.Columns[n].PickList do
begin
add(DataModule2.IBQuery1List.AsString);
DataModule2.IBQuery1.Next;
end;
DataModule2.IBQuery1.Close;
Сергей М. (2007-04-13 12:18:00) [4]
> vtiv (13.04.07 12:10) [5]
Если контрол запрещен, то интерактивный ввод в него, хоть с клавиатуры хоть еще откуда-то, невозможен по определению.
Desdechado (2007-04-13 12:15:00) [5]И как ты в лукапные поля что-то вводишь?
vtiv (2007-04-13 12:10:00) [6]Сергей М. © (13.04.07 12:03) [3]
> vtiv
У тебя есть событие OnCellClick с параметром Column.
В его обработчике разрешай или запрещай контролы в колонке Column.
Я это всё сделал и всё работает ОК. Но проблема в том, что я не знаю как запретить ввод руками с клавиатуры.
Desdechado (2007-04-13 12:05:00) [7]да ну?
Сергей М. (2007-04-13 12:03:00) [8]
> vtiv
У тебя есть событие OnCellClick с параметром Column.
В его обработчике разрешай или запрещай контролы в колонке Column.
vtiv (2007-04-13 11:54:00) [9]Я использую лукапные поля, но ввод текста всё равно возможен.
Desdechado (2007-04-13 11:43:00) [10]TColumn.ButtonStyle
или лукапные поля использовать