Vcl.Controls.TWinControl.OnKeyPress

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress;

C++

__property TKeyPressEvent OnKeyPress = {read=FOnKeyPress, write=FOnKeyPress};

Propriétés

Type Visibilité  Source Unité  Parent
event protected
Vcl.Controls.pas
Vcl.Controls.hpp
Vcl.Controls 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 qui ne correspondent pas à une valeur Char ASCII (Maj ou F1, par exemple) ne génèrent pas un é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é. 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 CTROL-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