Nous savons que, généralement, appuyer sur la touche Tab déplace le focus d'entrée vers le contrôle suivant et Shift-Tab vers le précédent dans l'ordre de tabulation du formulaire. Lorsque vous travaillez avec des applications Windows, certains utilisateurs s'attendent intuitivement à ce que la touche Entrée se comporte comme une touche de tabulation.
Il existe de nombreux codes tiers pour implémenter un meilleur traitement de saisie de données dans Delphi. Voici quelques-unes des meilleures méthodes disponibles (avec quelques modifications).
Les exemples ci-dessous sont écrits en supposant qu'il n'y a pas de bouton par défaut sur le formulaire. Lorsque votre formulaire contient un bouton dont la propriété Default est définie sur True, appuyez sur Entrée lors de l'exécution pour exécuter tout code contenu dans le gestionnaire d'événements OnClick du bouton.
Le code suivant fait qu'Enter se comporte comme Tab et Shift + Enter comme Shift + Tab:
~~~~~~~~~~~~~~~~~~~~~~~~~
procédure TForm1.Edit1KeyPress (Sender: TObject; var Key: Char);
commencer
Si la clé = # 13 alors commencez
Si HiWord (GetKeyState (VK_SHIFT)) 0 alors
SelectNext (Expéditeur en tant que TWinControl, False, True)
autre
SelectNext (Expéditeur en tant que TWinControl, True, True);
Clé: = # 0
fin;
fin;
~~~~~~~~~~~~~~~~~~~~~~~~~
Si vous souhaitez avoir un traitement Entrée (Maj + Entrée) similaire dans DBGrid:
~~~~~~~~~~~~~~~~~~~~~~~~~
procédure TForm1.DBGrid1KeyPress (Sender: TObject; var Key: Char);
commencer
Si la clé = # 13 alors commencez
Si HiWord (GetKeyState (VK_SHIFT)) 0 commence alors
avec (Sender as TDBGrid) do
si index sélectionné> 0 alors
selectedindex: = selectedindex - 1
sinon commencer
DataSource.DataSet.Prior;
selectedindex: = fieldcount - 1;
fin;
fin sinon commencer
avec (Sender as TDBGrid) do
si sélectionné < (fieldcount - 1) then
selectedindex: = selectedindex + 1
sinon commencer
DataSource.DataSet.Next;
indice sélectionné: = 0;
fin;
fin;
Clé: = # 0
fin;
fin;
~~~~~~~~~~~~~~~~~~~~~~~~~