Controls.TWinControl.OnKeyPress
Contents |
Informations Delphi
De Controls.pas
property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress;
Unité : Controls
Type : événement
Visibilité : protected
Membre de : TWinControl
Informations C++
De Controls.hpp
__property TKeyPressEvent OnKeyPress;
Unité : Controls
Type : propriété
Visibilité : protected
Membre de : TWinControl
Description
Se produit lorsqu'une touche est appuyée.
Le gestionnaire d'événement OnKeyPress permet d'effectuer un traitement spécifique quand une touche correspondant à un caractère alphanumérique est enfoncée.
Le paramètre Key du gestionnaire d'événement OnKeyPress est de type Char ; cependant l'événement OnKeyPress enregistre le caractère ASCII correspondant à la touche enfoncée. Les touches n'ayant pas d'équivalent ASCII (Maj ou F1, par exemple) ne génèrent pas d'événement OnKeyPress. Les combinaisons de touches (comme Maj+A), ne génèrent qu'un seul événement OnKeyPress (dans cet exemple, Maj+A donne pour Key la valeur "A" si Verr Maj est désactivé). Pour répondre aux touches non-ASCII ou aux combinaisons de touches, utilisez le gestionnaire d'événement OnKeyDown ou OnKeyUp.
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é. Vous devez définir Key sur #0 pour empêcher le contrôle d'intercepter le message WM_CHAR.
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.
Voir aussi
Exemples de code