Virtuelle Tastencodes kombinieren



  • Guten Abend!

    Eine schnelle Frage noch heute abend:

    In einem OnKeyDown Ereignis kann ich eine Taste abfangen, zB

    if (Key == VK_RETURN)
    {
      [...]
    }
    

    Aber ich möchte STRG + RETURN oder ALT + RETURn abfangen.

    habe if (Key == VK_CONTROL + VK_RETURN) und so einen Kram versucht, aber da kommt nix rum bei...
    Ich denke mal die Frage kam schon mal irgendwo, habe aber über die Suche nix gefunden, also hoffe ich mal jemand kann mir weiterhelfen.

    Danke schonmal,
    Tippo



  • Hallo

    Bei den OnKey-Events wird immer der Parameter vom Typ TShiftState übergeben, den du abfragen kannst ob Alt, Shift oder Ctrl gedrückt wurden.
    Für Kombinationen mit anderen Tasten must du entweder die WinAPI-Funktion GetASynchKeyState verwenden oder dir die jeweils letzten Tasten zwischenspeichern.

    bis bald
    akari



  • Hallo,

    siehe auch hier: ➡ Tastenkombination CTRL + ^ auswerten

    Die Suche zu *Tastenkombination* im VCL/CLX spuckt auch ne ganze Menge aus. Ist da nix dabei?

    MfG



  • void __fastcall TChatForm::RichEdit1KeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
      if ( (Key == VK_RETURN) && (Shift.Contains(ssCtrl)) )
      {
        Key = 0;
      }
    }
    

    Ach verdammt, ich habe zwar die ganze Zeit TShiftState abgefragt, aber a) nicht bedacht das es vom Typ Set ist und b) nach VK_CONTROL und nicht nach ssCtrl gesucht. 🙄

    thx for support,
    Tippo


Anmelden zum Antworten