Главная страница
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.025 c
2-1176723674
IgorMish
2007-04-16 15:41
2007.05.06
Закрывается приложение


3-1171435004
DimonS
2007-02-14 09:36
2007.05.06
Обновление БД Access


3-1171802805
Rav
2007-02-18 15:46
2007.05.06
TAdoQuery - "обновление"??? при удалении записи


1-1173719390
Servelat
2007-03-12 20:09
2007.05.06
TValueListEditor, тот что с вкладки Additional


2-1176534590
vegarulez
2007-04-14 11:09
2007.05.06
Как правильно "растянуть" рисунок на кнопке?