Stellen Sie sicher, dass die Eingabetaste wie die Registerkarte funktioniert

Wir wissen, dass im Allgemeinen durch Drücken der Tabulatortaste der Eingabefokus zum nächsten Steuerelement und die Umschalt-Tabulatortaste zum vorherigen in der Tabulatortastenreihenfolge des Formulars verschoben wird. Bei der Arbeit mit Windows-Anwendungen erwarten einige Benutzer intuitiv, dass sich die Eingabetaste wie eine Tabulatortaste verhält.

Es gibt eine Menge Code von Drittanbietern für die Implementierung einer besseren Dateneingabeverarbeitung in Delphi. Hier sind einige der besten Methoden (mit einigen Modifikationen).

Die folgenden Beispiele basieren auf der Annahme, dass das Formular keine Standardschaltfläche enthält. Wenn Ihr Formular eine Schaltfläche enthält, deren Standardeigenschaft auf True festgelegt ist, führt das Drücken der Eingabetaste zur Laufzeit den im OnClick-Ereignishandler der Schaltfläche enthaltenen Code aus.

Als Tab eingeben

Der nächste Code bewirkt, dass sich die Eingabetaste wie die Tabulatortaste verhält und Umschalt + Eingabetaste wie die Umschalt + Tabulatortaste:

~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TForm1.Edit1KeyPress (Absender: TObject; var Key: Char);
Start
   Wenn Key = # 13, dann beginne
    Wenn HiWord (GetKeyState (VK_SHIFT)) 0 dann
     SelectNext (Absender als TWinControl, False, True)
    sonst
     SelectNext (Absender als TWinControl, True, True);
     Schlüssel: = # 0
   Ende;
Ende;
~~~~~~~~~~~~~~~~~~~~~~~~~~

in DBGrid

Wenn Sie eine ähnliche Eingabetaste (Umschalt + Eingabetaste) in DBGrid verwenden möchten:

~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TForm1.DBGrid1KeyPress (Absender: TObject; var Key: Char);
Start
   Wenn Key = # 13, dann beginne
    Wenn HiWord (GetKeyState (VK_SHIFT)) 0, dann beginne
     mit (Absender als TDBGrid) machen
     wenn ausgewählt, dann Index> 0
      ausgewählter Index: = ausgewählter Index - 1
     sonst fange an
      DataSource.DataSet.Prior;
      selectedindex: = fieldcount - 1;
     Ende;
    Ende sonst fange an
     mit (Absender als TDBGrid) machen
     falls ausgewähltindex < (fieldcount - 1) then
      ausgewählter Index: = ausgewählter Index + 1
     sonst fange an
      DataSource.DataSet.Next;
      ausgewählter Index: = 0;
     Ende;
   Ende;
   Schlüssel: = # 0
   Ende;
Ende;
~~~~~~~~~~~~~~~~~~~~~~~~~~

Weitere Informationen zu Delphi-Anwendungen

  • Keyboard Symphony Machen Sie sich mit den Ereignisprozeduren OnKeyDown, OnKeyUp und onKeyPress vertraut, um auf verschiedene Tastenaktionen zu reagieren oder ASCII-Zeichen zusammen mit anderen Sondertasten zu verarbeiten.
  • Wofür steht # 13 # 10 in Delphi-Code? Wenn Sie sich fragen, wofür diese Zeichen stehen, finden Sie hier die Antwort.