EXEMPLE DETAILLE
MOIS DE AVRIL 2002
L'exemple passé A LA LOUPE | ||
Description de l'exemple |
Catégorie |
Télécharger un exemple (incluant sources + exécutable + ce fichier .html avec explications) |
Utiliser les touches du clavier | Système - Windows | ![]() Pour télécharger cet exemple, allez dans la rubrique "Téléchargements" |
L'utilisation des touches du clavier dans une application Delphi n'est pas très compliquée. De plus, cela vous permet d'affecter des événements à certaines touches sans écrire beaucoup de lignes de code ; vous offrez également à l'utilisateur un moyen d'accéder à des fonctions plus rapidement (par simple raccourci). Voyons plus bas, quelles sont ces possibilités.... Bon maintenant, assez jacassé, passons à la pratique .... |
Description des évènements
property OnKeyUp: TKeyEvent;
Le gestionnaire d'évènement OnKeyUp permet d'effectuer un traitement spécifique quand une touche est relâchée. Le gestionnaire OnKeyUp peut répondre à toutes les 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.
Le TKeyEvent pointe sur une méthode gérant les événements du clavier. Le paramètre Key indique la touche du clavier.
Le paramètre Shift indique si les touches Maj, Alt or Ctrl sont combinées dans la frappe de touche.property OnKeyDown: TKeyEvent;
Le gestionnaire d'événement OnKeyDown permet d'effectuer un traitement spécifique quand une touche est enfoncée. Le gestionnaire OnKeyDown peut répondre à toutes les 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.property OnKeyPress: TKeyPressEvent;
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.
type TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
Le type TShiftState est utilisé par les gestionnaires du clavier et de la souris pour déterminer l'état des touches Alt, Ctrl et Maj ainsi que l'état des boutons de la souris au moment où l'événement se produit.
Signification
ssShift La touche Maj est enfoncée.
ssAlt La touche Alt est enfoncée.
ssCtrl La touche Ctrl est enfoncée.
ssLeft Le bouton gauche de la souris est enfoncé.
ssRight Le bouton droit de la souris est enfoncé.
ssMiddle Le bouton central de la souris est enfoncé.
ssDouble On a double-cliqué sur la souris.
*** Les évènements OnKeyUp, OnKeyDown et OnKeyPress fonctionnent avec entre autres les composants suivants :
- TForm, TEdit, TButton, TMemo, TComboBox, TListBox, TRadioButton, TCheckBox, etc....
Voici la liste des valeurs possibles pour Key :
VK_F1 Touche F1
VK_F2 Touche F2
VK_F3 Touche F3
VK_F4 Touche F4
VK_F5 Touche F5
VK_F6 Touche F6
VK_F7 Touche F7
VK_F8 Touche F8
VK_F9 Touche F9
VK_F10 Touche F10
VK_F11 Touche F11
VK_F12 Touche F12VK_F13 Touche F13
VK_F14 Touche F14
VK_F15 Touche F15
VK_F16 Touche F16
VK_F17 Touche F17
VK_F18 Touche F18
VK_F19 Touche F19
VK_F20 Touche F20
VK_F21 Touche F21
VK_F22 Touche F22
VK_F23 Touche F23
VK_F24 Touche F24VK_LBUTTON Bouton gauche de la souris
VK_RBUTTON Bouton droit de la souris
VK_CANCEL Ctrl+Pause
VK_MBUTTON Bouton central de la souris
VK_BACK Touche Retour arrière
VK_TAB Touche Tabulation
VK_CLEAR Touche Effacer
VK_RETURN Touche Entrée
VK_SHIFT Touche Maj
VK_CONTROL Touche Ctrl
VK_MENU Touche Alt
VK_PAUSE Touche Pause
VK_CAPITAL Touche Verrouillage MajusculesVK_ESCAPE Touche Echap
VK_SPACE Barre d'espace
VK_PRIOR Touche Page Haut
VK_NEXT Touche Page Bas
VK_END Touche Fin
VK_HOME Touche DébutVK_LEFT Touche flèche vers la gauche
VK_UP Touche flèche vers le haut
VK_RIGHT Touche flèche vers la droite
VK_DOWN Touche flèche vers le bas VK_NUMLOCK Touche Verrouillage Pavé Numérique
VK_SCROLL Touche Arrêt défilementVK_NUMPAD0 Touche 0 (pavé numérique)
VK_NUMPAD1 Touche 1 (pavé numérique)
VK_NUMPAD2 Touche 2 (pavé numérique)
VK_NUMPAD3 Touche 3 (pavé numérique)
VK_NUMPAD4 Touche 4 (pavé numérique)
VK_NUMPAD5 Touche 5 (pavé numérique)
VK_NUMPAD6 Touche 6 (pavé numérique)
VK_NUMPAD7 Touche 7 (pavé numérique)
VK_NUMPAD8 Touche 8 (pavé numérique)
VK_NUMPAD9 Touche 9 (pavé numérique)
VK_MULTIPLY Touche Multiplication (pavé numérique)
VK_ADD Touche Plus (pavé numérique)
VK_SEPARATOR Touche Séparateur (pavé numérique)
VK_SUBTRACT Touche Moins (pavé numérique)
VK_DECIMAL Touche décimale (pavé numérique)
VK_DIVIDE Touche Division (pavé numérique)
VK_SNAPSHOT Touche Impression écran
VK_INSERT Touche Insertion
VK_DELETE Touche Suppression
VK_HELP Touche d'aide
Voici les procédures reprises dans cet exemple (fichier Zip que vous pouvez télécharger plus haut)
Ici, on utilise le composant TForm comme support
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_F2 then // si la touche F2 est relâchée
Label2.caption:='la touche F2 à été relâchée'; // ici, on place le traitement à faire : cela peut être une procédure ou un événement
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = VK_F1 then // si appuie sur la touche F1
ShellExecute(GetDesktopWindow,'open','Calc.exe',nil, nil,SW_SHOWNORMAL); // la calculatrice de windows apparaît
if Key=VK_F2 then // si appuie sur la touche F2
Label2.caption:='la touche F2 est appuyée';
if Key=Vk_Shift then // si appuie sur la touche Shift
Label2.caption:='la touche Shift est appuyée';
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
// si appuie sur une touche quelconque
Label2.caption:='Vous avez pressé une touche'; // alors message dans le label
Application.ProcessMessages;
Sleep(1000);
Label2.caption:='';
end;Bien sur, vous pouvez utiliser les autres valeurs de Key énoncées dans le tableau ci-dessus
Vous pouvez aussi regarder l'exemple HookSouris (197 ko) de Fobec : utilisation des touches en interceptant les messages du clavier (allez dans la rubrique "Téléchargements"- catégorie Exemples détaillés)
Voilà c'est tout.... Maintenant à vous de jouer...