FormKeyDown mit Pfeiltasten



  • Hallo,
    Ich weiss nur, daß das "KeyPress"-Ereignis nur auf ASCII-Tasten reagiert. Ansonsten kann ich dir leider auch nicht helfen !!

    Viel Glück weiterhin....

    Grüsse Bernd.



  • Ahaa..
    Danke.



  • Weiß vielleicht sonst noch jemand wie ich das ändern kann.
    Ich bin schon ganz verzweifelt.

    Ich habe schon alles versucht, ich komm einfach nicht darauf.

    Bitte helft mir!!!



  • Hallo,
    Hab mittlererweile eine Möglichkeit gefunden mittles einer eigenen Routine die

    Application->OnMessage
    

    abzufangen und auszuwerten.

    Jedoch was bleibt ist das Problem daß immernoch der Fokus hin- und herwandert, was nicht gerade daß ist was sein soll!

    Weiß vielleicht jemand wie ich das abstellen kann?

    Ich bin für jeden Tipp dankbar.

    Grüsse...



  • Hallo..... hört mich noch jemand ???????????
    Kann mir irgendjemand Antworten ?????????? bitte !!!!!!!!!!!!



  • Hallo,

    So... 🙄 😉 Du kannst Probleme haben... 🙂
    Jetzt hab' ich erstmal Dein Problem erkannt...

    Also : Um ein Wechseln des Fokus zu verhindern, kannst Du zur Not jedes Element auf ein Panel legen (dann kann der Fokus nicht weiterspringen, jedenfalls nicht mit den Pfeiltasten). Oder Du nimmst "TSpeedButton", der kann keinen Fokus annehmen.
    Zum Problem, daß kein Ereignis ausgelöst wird, bei "OnKeyDown"... da wird's glaube ich keine einfache Lösung geben, da die Pfeil-Tasten genau dafür gedacht sind. "OnKeyUp" funktioniert (siehe Code unten), nur "OnKeyDown" nicht (warum das so ist... frag mich nicht, das ist mir zu aufregend um mich weiter damit zu beschäftigen 😉 ).
    Nimm einfach andere Tasten... :p

    void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
    {
    if (Key == VK_UP)
    {
      Label1->Caption="Hallo KeyDown VK_UP";
      Beep(1000, 50);
    }  // if (Key == VK_UP)
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
    {
    if (Key == VK_UP)
    {
      Label1->Caption="Hallo KeyUp VK_UP";
      Beep(4000, 50);
    }  // if (Key == VK_UP)
    }
    //---------------------------------------------------------------------------
    

    Bis dann denn,
    🙂
    Nash



  • 🙂 🙂 🙂

    Dankeee !!!!!

    Is ja easy ........

    es scheint zu gehen !!!!!!!!!!!!!!!

    Danke !!!

    Grüsse



  • Ach ja und das mit dem KeyDown hab ich auch im Griff.

    Nicht das Ereigniss onKeyDown benutzten sondern mit

    Application->OnMassage=MeinHandler
    

    die Nachricht auf meine Methode leiten und dort mit If-Überprüfungen feststellen ob es eine der Taste ist die ich brauche.

    OnKeyUp verwende ich wie bisher....

    Servus....



  • Setz die Eigenschaft "Keypreview" des Hauptformulars auf true, damit werden alle Keyereignisse zuerst zum Hauptformular geleitet, bevor sie an die entsprechende Komponente weitergereicht wird.
    So einfach ist das 😉



  • Hallo,

    ...So einfach ist das

    Naja... 🙄 ich würde sagen, probiers einfach mal aus, und dann würdest Du sehen, so einfach ist das nicht.

    Bis dann denn,
    🙂
    Nash


Anmelden zum Antworten