FMX.Forms.TCommonCustomForm.KeyDown

De Appmethod Libraries
Aller à : navigation, rechercher

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);

Propriétés

Type Visibilité  Source Unité  Parent
procedure
function
public
FMX.Forms.pas
FMX.Forms.hpp
FMX.Forms TCommonCustomForm


Description

Est exécutée lorsqu'une touche est enfoncée alors que cette fiche détient la focalisation d'entrée.

Dans le framework FireMonkey, KeyDown est la méthode principale permettant de traiter l'appui de touches dans les fiches. KeyDown est exécutée chaque fois qu'une touche est enfoncée, lorsque cette fiche détient la focalisation d'entrée. KeyDown est utilisée en interne : pour activer des menus et des actions et pour que les requêtes TAB bouclent sur les contrôles enfant de cette fiche. Les éditeurs peuvent utiliser KeyDown pour ajouter des symboles dans un texte en cours d'édition.

Vous pouvez redéfinir KeyDown pour ajouter un traitement de touche supplémentaire dans les sous-classes.

KeyDown comprend les paramètres suivants :

Paramètres Description

Key

Représente le code de balayage de la touche du clavier enfoncée ou $0.

L'unité UITypes définit les touches virtuelles fournissant les constantes symboliques des codes de balayage des touches du clavier.

Les codes de balayage physique de la même touche peuvent différer selon les plates-formes (Windows ou iOS). Sous le framework FireMonkey, les unités spécifiques à la plate-forme (par exemple FMX.Platform.Mac.pas) doivent traduire les codes de balayage natifs (iOS pour l'unité FMX.Platform.Mac.pas) dans les codes Windows correspondants définis dans l'unité UITypes. En conséquence, les valeurs du code de balayage de Key sont toujours définies par les constantes vkXXXX de UITypes. Par exemple,

vkReturn = $0D; { 13 } correspond à la touche du clavier ENTREE
vkEscape = $1B; { 27 } correspond à la touche ECHAP
vkSpace = $20; { 32 } correspond à la touche ESPACE
vkF2 = $71; { 113 } correspond à la touche du clavier F2

Les touches des chiffres et des lettres -- indépendamment de la langue d'entrée sélectionnée et de la casse des touches alphabétiques -- ont des valeurs correspondant aux symboles '0'..'9' et 'A'..'Z'. Par exemple, Key = vkP = $50 correspond à la touche du clavier 'P'.

Si Key = $0, alors KeyChar contient un symbole enfoncé conformément à la langue d'entrée en cours du clavier, au mode du clavier (touches Verr Maj et Verr Num), à l'état Shift du clavier et à l'état IME (éditeur de méthode de saisie).

Les combinaisons de paramètres Key et Shift peuvent se traduire en combinaisons de touches de raccourcis.

KeyChar

Représente le caractère enfoncé (chiffre) ou #0.

Si une combinaison de touches enfoncée peut être gérée comme un caractère ou un chiffre imprimable, alors Key = 0 et KeyChar contiennent un symbole enfoncé conformément à la langue d'entrée en cours du clavier, au mode du clavier (touches Verr Maj et Verr Num), à l'état Shift du clavier et à l'état IME. Les éditeurs peuvent utiliser ce symbole pour l'ajouter dans un texte en cours d'édition.

Shift

Détermine l'état des touches CTRL, ALT, MAJ et CMD (seulement pour Mac) au moment où vous appuyez sur la touche.


KeyDown traite les touches enfoncées selon l'algorithme suivant :

  1. KeyDown appelle d'abord IsDialogKey avec les mêmes paramètres que ceux spécifiés pour KeyDown. Le paramètre IsDialog renvoie True si KeyChar < ' ' ou si Shift est l'une des touches CTRL, ALT ou CMD. C'est-à-dire si la combinaison KeyChar et Shift identifie une combinaison de contrôle, et non un caractère imprimable. Sinon, elle renvoie False. Le caractère ' ' a la valeur ASCII $20. Les valeurs ASCII inférieures à $20 identifient les combinaisons de contrôle.
  2. Si IsDialogKey renvoie True dans le paramètre IsDialog, la combinaison de touches enfoncée est transmise, dans l'ordre suivant, à tous les contrôles enfant, menus et listes d'actions de la fiche jusqu'à ce que cette combinaison de touches soit traitée :
    1. Au contrôle détenant la focalisation.
    2. Au menu contextuel du contrôle détenant la focalisation.
    3. A tous les autres menus et menus contextuels de la fiche.
    4. A tous les autres contrôles (ne détenant pas la focalisation) de la fiche.
    5. Aux listes d'actions de la fiche et à tous les composants enfant auxquels sont assignés des éléments de listes d'actions.
    6. Aux menus et aux listes d'actions de toutes les autres fiches.
    7. Si la combinaison de touches enfoncée a été traitée lors d'une des étapes précédentes, alors KeyDown définit Key = 0 et KeyChar = #0, et se termine.
  3. Si Key = vkTab, alors KeyDown déplace la focalisation sur le contrôle suivant dans "l'ordre de tabulation" des contrôles et se termine.
  4. Si Key <> 0 ou KeyChar <> #0, alors KeyDown appelle la méthode KeyDown du contrôle détenant la focalisation, puis appelle le gestionnaire d'événement OnKeyDown de la fiche, si un tel gestionnaire est assigné.
  5. Dans le bloc finally, KeyDown stocke la date et l'heure en cours dans les propriétés LastKeyPress et LastUserActive de l'application en cours.

Voir aussi