![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в форме отловить нажатие VK_TAB ? [D5]
kserg@ukr.net © (2002-04-17 12:04:00)Прикол в том, что у меня есть 2 проги, в котр. на событие OnKeyDown в поле ред-ния прописаны обработчики нажатия TAB.
Так вот, в одной всё работает, а в др. проге - нет?
Уже просмотрел все зенки, но отличий в коде и формах не вижу...
Подскажите, где еще покопаться.
Anatoly Podgoretsky (2002-04-17 13:50:00) [1]Надо обрабатывать сообщение WM_GETDLGCODE
Starkom (2002-04-17 12:40:00) [2]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;
kserg@ukr.net (2002-04-17 12:28:00) [3]>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:20:00) [4]у меня, кстати, по VK_TAB и VK_ESC тоже ни возникает ни OnKeyDown, ни OnKeyPress. Все реализовано через FormShortCut.
Starkom (2002-04-17 12:17:00) [5]я в курсе, что такое TabStop.
сами спросили, где еще покопаться. Нужен код, хотя бы примерный.
можно перевешать обработку в FormShortCut, там проверять ActiveControl.
kserg@ukr.net (2002-04-17 12:13:00) [6]>Starkom (17.04.02 12:07)
Уважаемый, св-во TabStop указывает, будет ли Control принимать фокус по нажатию ТАБа. А мне надо отловить само нажатие ТАБа в поле.
Starkom (2002-04-17 12:07:00) [7]OnKeyDown у Edit"a?
может быть TabStop у Edit"a равен false, хотя не знаю, возникает ли тогда OnKeyDown