Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

DBGrid-блокировка ввода текста с клавиатуры   Найти похожие ветки 

 
vitv ©   (2007-04-13 09:54) [0]

Есть DBGrid, значения которого заполняются всплывающими меню или листбоксами. Возможно ли заблокировать ввод с клавиатуры в определённый столбцы?


 
Desdechado ©   (2007-04-13 11:43) [1]

TColumn.ButtonStyle
или лукапные поля использовать


 
vtiv   (2007-04-13 11:54) [2]

Я использую лукапные поля, но ввод текста всё равно возможен.


 
Сергей М. ©   (2007-04-13 12:03) [3]


> vtiv


У тебя есть событие OnCellClick с параметром Column.
В его обработчике разрешай или запрещай контролы в колонке Column.


 
Desdechado ©   (2007-04-13 12:05) [4]

да ну?


 
vtiv   (2007-04-13 12:10) [5]

Сергей М. ©   (13.04.07 12:03) [3]

> vtiv

У тебя есть событие OnCellClick с параметром Column.
В его обработчике разрешай или запрещай контролы в колонке Column.

Я это всё сделал и всё работает ОК. Но проблема в том, что я не знаю как запретить ввод руками с клавиатуры.


 
Desdechado ©   (2007-04-13 12:15) [6]

И как ты в лукапные поля что-то вводишь?


 
Сергей М. ©   (2007-04-13 12:18) [7]


> vtiv   (13.04.07 12:10) [5]


Если контрол запрещен, то интерактивный ввод в него, хоть с клавиатуры хоть еще откуда-то, невозможен по определению.


 
vitv ©   (2007-04-13 12:40) [8]

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;


 
Desdechado ©   (2007-04-13 12:54) [9]

С каких пор пиклист стал называться лукапным полем?
Справку почитай по ftLookup и Lookup Fields


 
vitv ©   (2007-04-14 10:10) [10]

Почитал. Но решил сделать так:
Кинул на форму 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;



Страницы: 1 вся ветка

Текущий архив: 2007.05.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
2-1176837805
Beks
2007-04-17 23:23
2007.05.06
Копирование файлов


2-1176317178
Strate
2007-04-11 22:46
2007.05.06
Совместная работа с файлами


2-1176656178
Sholah_Weras
2007-04-15 20:56
2007.05.06
Открытие нескольких файлов.


15-1175875277
Суслик
2007-04-06 20:01
2007.05.06
Как написать адрес в России на английском?


15-1175712277
Real
2007-04-04 22:44
2007.05.06
Bug TCP/IP