Form.KeyDown löst nicht aus



  • Hey,

    Mein Code ist nicht falsch, das Problem, das ich habe ist wohl generell. Ich programmiere derzeit ein Spiel und möchte hierbei Tastendrücke über das KeyDown Event der Form abfangen und diese auswerten. Mit W, A, S und D klappt das wunderbar. Mit den Pfeiltasten aber nicht. Das Event wird schlicht nicht ausgelöst, was wohl an dem Button auf meiner Form liegt. Das Event KeyUp löst übrigens aus. Ich denke, dass das daran liegt, dass man während der Laufzeit durch die Pfeiltasten ja Komponenten auswählen kann. Kann man das Problem irgendwie lösen?

    PS: KeyPrieview ist an 🙂

    Danke



  • Sauber lösen wirst du es nur, indem du die richtige Message abfängst, in diesem Fall
    CM_CHILDKEY.
    Dazu musst du allerdings die protected Methode WndProc überschreiben bzw. die Nachricht mappen.
    Beispiel;

    void __fastcall TForm1::WndProc(Messages::TMessage &Message)
    {
       switch(Message.Msg) {
          case CM_CHILDKEY:
             switch (Message.WParamLo) {
                case VK_LEFT : 
                   // dein Code
                   Message.Result = 1; // Nachricht nicht weiter verarbeien
                break;
                case VK_UP : 
                   // weiterer Code
                   Message.Result = 1;
                break;
                .
                .
                .
              }
           break;
       }
       TForm::WndProc(Message);
    }
    

    Peter



  • Hallo @mods,

    wenn man die Beiträge von @zailaiboke anschaut, ist dieses hier der 3. Thread, in den er sinnfrei postet. Könnt ihr das bereinigen?

    MfG
    Peter



  • Hallo

    Das war ein Spammer, ich habe ihn gebannt.

    bis bald
    akari


Anmelden zum Antworten