Faire en sorte que la touche Entrée fonctionne comme l'onglet

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.

Entrer en tant qu'onglet

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;
~~~~~~~~~~~~~~~~~~~~~~~~~

dans DBGrid

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;
~~~~~~~~~~~~~~~~~~~~~~~~~

Plus d'informations sur les applications Delphi

  • Keyboard Symphony Familiarisez-vous avec les procédures d'événement OnKeyDown, OnKeyUp et onKeyPress pour répondre à diverses actions de touches ou gérer et traiter des caractères ASCII avec d'autres touches spéciales.
  • Que signifie # 13 # 10 dans le code Delphi? Si vous vous demandez ce que ces personnages représentent, voici la réponse.