Vcl.Controls.TWinControl.OnKeyDown
Delphi
property OnKeyDown: TKeyEvent read FOnKeyDown write FOnKeyDown;
C++
__property TKeyEvent OnKeyDown = {read=FOnKeyDown, write=FOnKeyDown};
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
event | protected | Vcl.Controls.pas Vcl.Controls.hpp |
Vcl.Controls | TWinControl |
Description
Se produit quand l'utilisateur appuie sur une touche alors que le contrôle détient la focalisation.
Le gestionnaire d'événements OnKeyDown permet d'effectuer un traitement spécifique quand une touche est enfoncée. Le gestionnaire OnKeyDown peut répondre aux touches du clavier, y compris les touches de fonction et les combinaisons avec les touches Maj, Alt et Ctrl, ainsi qu'avec les boutons de la souris.
Remarque : TCheckBox ne déclenche pas les événements OnKeyDown pour les touches fléchées.
OnKeyDown est un gestionnaire d'événements du type Vcl.Controls.TKeyEvent. Voir TKeyEvent pour une description des paramètres.
Une application récupère les messages Windows WM_KEYDOWN de toutes les touches quand l'utilisateur appuie sur une touche. Ces messages déclenchent indirectement l'événement OnKeyDown. En définissant Key sur #0, vous empêchez tout traitement ultérieur de ce message. Mais pour les touches qui génèrent des caractères, Windows produit également le message WM_CHAR. Au moment du déclenchement de votre événement OnKeyDown, le message WM_CHAR de la touche sera déjà dans la file d'attente des messages. Comme la définition de Key sur #0 n'arrête pas sa livraison, l'événement OnKeyPress est déclenché. En définissant Key sur #0, OnKeyPress n'a pas le droit d'être déclenché pour les touches n'ayant pas de caractères. Pour les touches représentant des caractères, OnKeyPress continuera à être déclenché.
Cette méthode d'organisation du traitement des touches a des avantages. Le code ne prenant en charge que les caractères, y compris les caractères de contrôle comme #13 pour le retour chariot, #3 pour CTRL-C et ainsi de suite, doit être placé dans l'événement OnKeyPress. Le code prenant en charge les touches qui ne génèrent pas de caractères doit être placé dans l'événement OnKeyDown.