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