Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Вниз

Как в форме отловить нажатие VK_TAB ? 


kserg@ukr.net   (2002-04-17 12:04) [0]

Прикол в том, что у меня есть 2 проги, в котр. на событие OnKeyDown в поле ред-ния прописаны обработчики нажатия TAB.
Так вот, в одной всё работает, а в др. проге - нет?
Уже просмотрел все зенки, но отличий в коде и формах не вижу...
Подскажите, где еще покопаться.



Starkom   (2002-04-17 12:07) [1]

OnKeyDown у Edit"a?
может быть TabStop у Edit"a равен false, хотя не знаю, возникает ли тогда OnKeyDown



kserg@ukr.net   (2002-04-17 12:13) [2]

>Starkom (17.04.02 12:07)
Уважаемый, св-во TabStop указывает, будет ли Control принимать фокус по нажатию ТАБа. А мне надо отловить само нажатие ТАБа в поле.



Starkom   (2002-04-17 12:17) [3]

я в курсе, что такое TabStop.
сами спросили, где еще покопаться. Нужен код, хотя бы примерный.
можно перевешать обработку в FormShortCut, там проверять ActiveControl.



Starkom   (2002-04-17 12:20) [4]

у меня, кстати, по VK_TAB и VK_ESC тоже ни возникает ни OnKeyDown, ни OnKeyPress. Все реализовано через FormShortCut.



kserg@ukr.net   (2002-04-17 12:28) [5]

>Starkom (17.04.02 12:20)
Извини, насчет поучения ТАБ-ом - не хотел обидеть.
Ниже - работающий пример приложения БД.
А вот когда его перенес в новое приложение,
то он там не работает.

procedure TfmEdit_Invoice.Edit_NCOMPKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=VK_DOWN) then quTemp.Next;
if (Key=VK_UP) then quTemp.Prior;
if (Key=VK_TAB) then begin
Edit_NN_INV.SetFocus;
edit_NCOMP.text:= quTemp.Fieldbyname("NCOMP").AsString;
end;
end;



>Все реализовано через FormShortCut
примерчик можешь подкинуть для общего развития ?



Starkom   (2002-04-17 12:40) [6]

procedure TForm.FormShortCut(var Msg: TWMKey;
var Handled: Boolean);
var Ctrl,Shift:boolean;
begin
if (Word(GetAsyncKeyState(VK_SHIFT)) and 32768)<>0 then Shift:=True else Shift:=False;
if (Word(GetAsyncKeyState(VK_CONTROL)) and 32768)<>0 then Ctrl:=True else Ctrl:=False;
case Msg.CharCode of
VK_ADD:begin end;
VK_SUBTRACT:begin end;
VK_INSERT: if Ctrl then begin end
else if Shift then begin end;
VK_UP:if Ctrl then
begin
Handled:=true;Msg.CharCode:=0;
end;
VK_DOWN:if Ctrl then
begin
Handled:=true;Msg.CharCode:=0;
end;
end;
end;



Anatoly Podgoretsky   (2002-04-17 13:50) [7]

Надо обрабатывать сообщение WM_GETDLGCODE




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.019 c
4-94620           Cheis                 2002-02-23 23:54  2002.04.29  
Здраствуйте. Как выключить в e равую клавишу мыши, чтобы popup меню не вылезало.


7-94601           Albun                 2002-01-31 23:33  2002.04.29  
USB Программирование


14-94539          kaif                  2002-03-21 00:05  2002.04.29  
Как купить D5 Pro?


1-94433           dnk                   2002-04-15 19:01  2002.04.29  
FreeReport.frf -> FastReport.frf


1-94377           a_k                   2002-04-17 15:05  2002.04.29  
Form.OnClose