FMX.Forms.TCommonCustomForm.KeyDown

Aus Appmethod Libraries
Wechseln zu: Navigation, Suche

Object Pascal

procedure KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState); virtual;

C++

virtual void __fastcall KeyDown(System::Word &Key, System::WideChar &KeyChar, System::Classes::TShiftState Shift);

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
procedure
function
public
FMX.Forms.pas
FMX.Forms.hpp
FMX.Forms TCommonCustomForm

Beschreibung

Wird beim Drücken einer Taste ausgeführt, während dieses Formular den Eingabefokus hat.

Im FireMonkey-Framework ist KeyDown die Hauptmethode zum Verarbeiten von Tasten in Formularen. KeyDown wird immer beim Drücken einer Taste ausgeführt, wenn dieses Formular den Eingabefokus hat. KeyDown wird intern zum Aktivieren der Menüs und Aktionen und zum Behandeln der TAB-Anforderungen verwendet, um die untergeordneten Steuerelemente dieses Formulars zu durchlaufen. Editoren können KeyDown verwenden, um einem bearbeiteten Text Symbole hinzufügen.

KeyDown kann überschrieben werden, um eine weitere Behandlung für Tasten in Unterklassen bereitzustellen.

Für KeyDown sind die folgenden Parameter verfügbar:

Parameter Beschreibung

Key

Ist der Scancode der gedrückten Tastaturtaste oder $0.

Die Unit UITypes definiert virtuelle Tasten und stellt symbolische Konstanten für Scancodes der Tastaturtasten bereit.

Physische Scancodes derselben Taste können auf verschiedenen Plattformen (Windows oder iOS) unterschiedlich sein. Im FireMonkey-Framework sollten plattformspezifische Units (iOS für die Unit FMX.Platform.Mac.pas) native Mac-Scancodes in die entsprechenden in der Unit UITypes definierten Windows-Codes übersetzen. Deshalb werden die Scancode-Werte von Key durch vkXXXX-Konstanten in UITypes definiert. Beispiel:

vkReturn = $0D; { 13 } entspricht der Tastaturtaste EINGABE
vkEscape = $1B; { 27 } entspricht der Tastaturtaste ESC
vkSpace = $20; { 32 } entspricht der Tastaturtaste LEER
vkF2 = $71; { 113 } entspricht der Tastaturtaste F2.

Tasten mit Ziffern und Buchstaben – unabhängig von der ausgewählten Eingabesprache und der Groß-/Kleinschreibung der alphabetischen Tasten – enthalten Werte, die den "0".."9"- und "A".."Z"-Symbolen entsprechen. Key = vkP = $50 entspricht beispielsweise der Tastaturtaste "P".

Wenn Key = $0, enthält KeyChar ein gedrücktes Symbol entsprechend der aktuellen Eingabesprache der Tastatur, dem Tastaturmodus (FESTSTELLTASTE und NUM-Taste), dem Shift-Status der Tastatur und dem Status des Eingabemethodeneditors (Input Method Editor, IME).

Kombinationen der Parameter Key und Shift können in Tastenkürzelkombinationen übersetzt werden.

KeyChar

Ist das gedrückte Zeichen (Ziffer) oder #0.

Wenn eine gedrückte Tastenkombination als druckbares Zeichen oder Ziffer behandelt werden kann, ist Key = 0 und KeyChar enthält ein gedrücktes Symbol entsprechend der aktuellen Eingabesprache der Tastatur, dem Tastaturmodus (FESTSTELLTASTE und NUM-Taste), dem Shift-Status der Tastatur und dem Status des Eingabemethodeneditors (Input Method Editor, IME). Editoren können dieses Symbol in den gerade bearbeiteten Text einfügen.

Shift

Gibt den Status der Tasten STRG, ALT, UMSCHALT und CMD (nur Mac) an, wenn Sie eine beliebige Taste drücken.

KeyDown verarbeitet gedrückte Tasten entsprechend dem folgenden Algorithmus:

  1. KeyDown ruft zuerst IsDialogKey mit den für KeyDown angegebenen Parametern auf. Der Parameter IsDialog gibt True zurück, wenn KeyChar < ' ' oder Shift eine der Tasten STRG, ALT oder CMD ist. Das heißt, wenn die Kombination KeyChar und Shift eine Steuerkombination - kein druckbares Zeichen - bezeichnet. Ansonsten wird False zurückgegeben. Das Zeichen ' ' hat den ASCII-Wert $20. ASCII-Werte kleiner als $20 geben Steuerkombinationen an.
  2. Wenn IsDialogKey im Parameter IsDialog True zurückgibt, wird die gedrückte Tastenkombination an alle untergeordneten Steuerelemente, Menüs und Aktionslisten im Formular in der folgenden Reihenfolge übergeben, bis diese Tastenkombination verarbeitet wurde:
    1. An das Steuerelement, das den Fokus hat.
    2. An das Kontextmenü des Steuerelements, das den Fokus hat.
    3. An alle anderen Menüs und Kontextmenüs im Formular.
    4. An alle anderen Steuerelemente (ohne Fokus) im Formular.
    5. An Aktionslisten im Formular und in allen untergeordneten Komponenten mit zugewiesenen Aktionslisten-Elementen.
    6. An Menüs und Aktionslisten in allen anderen Formularen.
    7. Wenn die gedrückte Tastenkombination in vorherigen Schritten verarbeitet wurde, setzt KeyDown Key = 0 und KeyChar = #0 und dann wird KeyDown beendet.
  3. Bei Key = vkTab setzt KeyDown den Fokus auf das nächste Steuerelement in der "Tabulatorreihenfolge" der Steuerelemente und dann wird KeyDown beendet.
  4. Bei Key <> 0 oder KeyChar <> #0 ruft KeyDown die Methode KeyDown des Steuerelements mit dem Fokus und dann die Ereignisbehandlungsroutine OnKeyDown des Formulars auf, sofern eine zugewiesen ist.
  5. Im finally-Abschnitt speichert KeyDown das aktuelle Datum und die aktuelle Uhrzeit in den Eigenschaften LastKeyPress und LastUserActive der aktuellen Anwendung.

Siehe auch