Laat de Enter-toets als een tab werken

We weten dat over het algemeen het indrukken van de Tab-toets de invoerfocus naar het volgende besturingselement verplaatst en Shift-Tab naar het vorige in de tabvolgorde van het formulier. Bij het werken met Windows-toepassingen verwachten sommige gebruikers intuïtief dat de Enter-toets zich als een Tab-toets gedraagt.

Er is veel code van derden voor een betere verwerking van gegevensinvoer in Delphi. Hier zijn een paar van de beste methoden die er zijn (met enkele wijzigingen).

De onderstaande voorbeelden zijn geschreven in de veronderstelling dat het formulier geen standaardknop bevat. Wanneer uw formulier een knop bevat waarvan de eigenschap Default is ingesteld op True, wordt tijdens het uitvoeren van de code op Enter gedrukt tijdens de uitvoering van de OnClick-gebeurtenishandler van de knop..

Voer in als Tab

De volgende code zorgt ervoor dat Enter zich gedraagt ​​als Tab en Shift + Enter als Shift + Tab:

~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TForm1.Edit1KeyPress (afzender: TObject; var Key: Char);
beginnen
   Als sleutel = # 13, begin dan
    Als HiWord (GetKeyState (VK_SHIFT)) 0 dan
     SelectNext (afzender als TWinControl, False, True)
    anders
     SelectNext (afzender als TWinControl, True, True);
     Sleutel: = # 0
   einde;
einde;
~~~~~~~~~~~~~~~~~~~~~~~~~

in DBGrid

Als u vergelijkbare DB-verwerking (Shift + Enter) wilt verwerken in DBGrid:

~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TForm1.DBGrid1KeyPress (afzender: TObject; var Key: Char);
beginnen
   Als sleutel = # 13, begin dan
    Als HiWord (GetKeyState (VK_SHIFT)) 0 dan begint
     met (Sender as TDBGrid) doen
     als geselecteerdindex> 0 dan
      selectedindex: = selectedindex - 1
     anders begint
      DataSource.DataSet.Prior;
      selectedindex: = fieldcount - 1;
     einde;
    einde anders beginnen
     met (Sender as TDBGrid) doen
     indien geselecteerd index < (fieldcount - 1) then
      selectedindex: = selectedindex + 1
     anders begint
      DataSource.DataSet.Next;
      selectedindex: = 0;
     einde;
   einde;
   Sleutel: = # 0
   einde;
einde;
~~~~~~~~~~~~~~~~~~~~~~~~~

Meer informatie over Delphi-toepassingen

  • Toetsenbordsymfonie Raak vertrouwd met de OnKeyDown-, OnKeyUp- en onKeyPress-gebeurtenisprocedures om te reageren op verschillende toetsacties of ASCII-tekens te verwerken en verwerken samen met andere speciale toetsen.
  • Waar staat # 13 # 10 voor in Delphi Code? Als je je afvraagt ​​waar die personages voor staan, is hier het antwoord.