Tastendruck im Fenster registrieren
-
Hallo,
ich habe ein bestehenden Projekt mit mehreren Fenstern.
Ich würde gerne in jedem Fenster auf gewisse Tastendrücke reagieren.
Bsp. ESC Taste wird gedrückt -> Fenster schließen
Oder F6 Taste wird gedrückt -> alle Werte abspeichernDazu habe ich evtl. schon einen Action-Handler gefunden:
Fenster Ereginisse: onShow und dort in einer erstellten Methode einen Keylistener zu implementieren. Leider wird beim Erstellen der Methode kein Key mit übergeben:void __fastcall TFSetupTool::FormShow(TObject *Sender) { // Diese Methode nutzen um Tasteneingaben abzufangen. }
Ist dieses überhaupt die geeignete Methode?
Wie kann ich die Tasten dann letztendlich einlesen?Besten Dank im Voraus
-
Jede Form hat dafür KeyDown/KeyPress/KeyUp-Ereignisse, s.a. Understanding and Processing Keyboard Events [in Delphi]) (gilt analog für C++ Builder / RAD Studio)
-
Habe mal meinen Code so erstellt. Jedoch wird diese Methode nie aufgerufen, bzw. bekomme keine Meldungen wenn ich bswp. F1 drücke.
void __fastcall TFSetupTool::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { // Diese Methode nutzen um Tasteneingaben abzufangen. // Bswp. F9 für Accept und F10 für Cancel UND ESC für Fenster schließen switch( Key ) { case VK_RETURN: ShowMessage("You pressed Enter"); break; case VK_F1: ShowMessage("Help is not available at the moment"); ::MessageBox(NULL, "Testmessage", VersionInfo.swName.c_str(),MB_ICONINFORMATION); break; case VK_DELETE: ShowMessage("Can't Delete This"); break; case 'K': // If the user press Ctrl + K if( Shift.Contains(ssCtrl) ) ShowMessage("K was pressed"); break; } } //---------------------------------------------------------------------------
-
Da du offensichtlich kein Englisch kannst oder zu faul bist, den oben verlinkten Artikel zu lesen:
Du musst die Eigenschaft
KeyPreview
des Formulars auftrue
setzen.
-
Sorry, habe ich wohl überflogen.
Habe den Haken gesetzt -> läuft nun wie gewünscht.
besten Dank!