Vi vet att generellt, genom att trycka på Tab-tangenten flyttas inmatningsfokus till nästa kontroll och Shift-Tab till föregående i formulärets flikordning. När du arbetar med Windows-applikationer förväntar sig vissa användare intuitivt att Enter-tangenten ska fungera som en Tab-nyckel.
Det finns många tredjepartskoder för att implementera bättre datainmatning i Delphi. Här är några av de bästa metoderna där ute (med några ändringar).
Exempel nedan skrivs med antagandet att det inte finns någon standardknapp på formuläret. När ditt formulär innehåller en knapp vars standardegenskap är inställd på True, genom att trycka på Enter vid körning körs någon kod som finns i knappens OnClick-händelseshanterare.
Nästa kod får Enter att bete sig som Tab och Shift + Enter som Shift + Tab:
~~~~~~~~~~~~~~~~~~~~~~~~~
procedur TForm1.Edit1KeyPress (avsändare: TObject; var Key: Char);
Börja
Om nyckel = # 13 Börja sedan
Om HiWord (GetKeyState (VK_SHIFT)) 0 då
Välj nästa (avsändare som TWinControl, False, True)
annan
Välj nästa (avsändare som TWinControl, True, True);
Nyckel: = # 0
slutet;
slutet;
~~~~~~~~~~~~~~~~~~~~~~~~~
Om du vill ha liknande Enter (Shift + Enter) -behandling i DBGrid:
~~~~~~~~~~~~~~~~~~~~~~~~~
procedur TForm1.DBGrid1KeyPress (avsändare: TObject; var Key: Char);
Börja
Om nyckel = # 13 Börja sedan
Om HiWord (GetKeyState (VK_SHIFT)) 0 börjar sedan
med (avsändare som TDBGrid) gör
om valdindex> 0 då
valdindex: = valdindex - 1
annars börjar
DataSource.DataSet.Prior;
valdindex: = fältantal - 1;
slutet;
slut annat börjar
med (avsändare som TDBGrid) gör
om vald index < (fieldcount - 1) then
valdindex: = valdindex + 1
annars börjar
DataSource.DataSet.Next;
vald index: = 0;
slutet;
slutet;
Nyckel: = # 0
slutet;
slutet;
~~~~~~~~~~~~~~~~~~~~~~~~~