Borland C++ Builder zdarzenie keydown. Nie działają strzałki.

0

Witam, mam taki kawałek kodu

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
        ShowMessage(Key);
} 

Dlaczego nic się nie pokazuje kiedy naciskam strzałki, a kiedy inne klawisze to działa?
Dlaczego przy zdarzeniu keyup już działa?

EDIT
W TForm1::FormCreate mam to:
Form1->KeyPreview = true;

EDIT
Okazało się że nie działa jeżeli mam dodanego aktywnego buttona, jak zrobić żeby działało z buttonem?

EDIT
Witem że chodzi o taborder i tabStop.

1

Strzałkami w windowsach się przełącza pomiędzy przyciskami na formatce, czy aby na pewno chcesz z tym walczyć?
Owszem się da ale jest to skomplikowane, zaś sądząc po pytaniach - za wcześnie.

1

Okazało się że nie działa jeżeli mam dodanego aktywnego buttona, jak zrobić żeby działało z buttonem?

Możesz użyć komponentu ApplicationEvents i zaimplementować jego funkcję-zdarzenie OnMessage w poniższy sposób:

//przechwytuje klawisze tylko, gdy któryś z przycisków jest aktywny (ma focus)
  if(dynamic_cast<TButton*>(ActiveControl) && Msg.message == WM_KEYDOWN)
  {
    ShowMessage(Msg.wParam);
    Handled = false;//zostanie również wykonana domyślna akcja (np. przeniesienie focusu)
  } 

Można w warunku określić, o który konkretnie przycisk chodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1