-
well © (30.03.12 12:26) [0]В отличие от обычных клавиш, обработчик события нажатия клавиши не срабатывает для TAB. Например:void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(VK_TAB)
ShowMessage("Клавиша TAB");
}
Посоветуйте, как перехватить событие нажатия клавиши TAB. -
Ловить в обработчике CM_DIALOGKEY.
-
> [0] well © (30.03.12 12:26)
> Посоветуйте, как перехватить событие нажатия клавиши TAB.
Так TAB нужен для навигации. Ну вот так можно
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
if(Msg.message == WM_KEYDOWN)
{
switch(Msg.wParam)
{
case VK_TAB:
ShowMessage("Клавиша TAB");
break;
case VK_SPACE:
ShowMessage("Клавиша SPACE");
break;
}
}
} -
Anatoly Podgoretsky © (30.03.12 13:26) [3]WantTabs
-
Anatoly Podgoretsky © (30.03.12 13:32) [4]WM_GETDLGCODE
-
Anatoly Podgoretsky © (30.03.12 13:34) [5]Q-168: Как отловить нажатие клавиш в контроле?
http://podgoretsky.com/ftp/Docs/Delphi/FAQ/ru.delphi.html#N168 -
well © (02.04.12 12:50) [6]Inovet, при этом функция перехода на новый контрол не отменяется, а мне нужно именно перехватить.
-
> [6] well © (02.04.12 12:50)
> а мне нужно именно перехватить.
Handled = true;
Но учти, что это сообщения всего приложения.