Конференция "WinAPI" » Как перехватить событие клавиши TAB
 
  • well © (30.03.12 12:26) [0]
    В отличие от обычных клавиш, обработчик события нажатия клавиши не срабатывает для TAB. Например:
    void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
         TShiftState Shift)
    {
       if(VK_TAB)
           ShowMessage("Клавиша TAB");    
    }


    Посоветуйте, как перехватить событие нажатия клавиши TAB.
  • begin...end © (30.03.12 13:06) [1]
    Ловить в обработчике CM_DIALOGKEY.
  • Inovet © (30.03.12 13:07) [2]
    > [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, при этом функция перехода на новый контрол не отменяется, а мне нужно именно перехватить.
  • Inovet © (02.04.12 13:50) [7]
    > [6] well ©   (02.04.12 12:50)
    > а мне нужно именно перехватить.

    Handled = true;

    Но учти, что это сообщения всего приложения.
 
Конференция "WinAPI" » Как перехватить событие клавиши TAB
Есть новые Нет новых   [134431   +5][b:0][p:0.001]