Spraw, aby klawisz Enter działał jak karta
Fokus Kontrola następnego wpisu Po naciśnięciu klawisza Enter
Getty Images/Prateek Prajapati/EyeEm
Wiemy, że generalnie naciśnięcie klawisza Tab przenosi fokus wprowadzania do następnej kontrolki, a Shift-Tab do poprzedniej w kolejności tabulacji formularza. Podczas pracy z Aplikacje Windows , niektórzy użytkownicy intuicyjnie oczekują, że klawisz Enter będzie zachowywał się jak klawisz Tab.
Istnieje wiele kodu firm trzecich do implementacji lepszego przetwarzania danych wejściowych w Delphi. Oto kilka najlepszych dostępnych metod (z pewnymi modyfikacjami).
Poniższe przykłady zostały napisane przy założeniu, że na formularzu nie ma domyślnego przycisku. Gdy formularz zawiera przycisk, którego właściwość Default jest ustawiona na True, naciśnięcie klawisza Enter wczas pracywykonuje dowolny kod zawarty w obsłudze zdarzeń OnClick przycisku.
Wprowadź jako Tab
Następny kod powoduje, że Enter zachowuje się jak Tab, a Shift+Enter jak Shift+Tab:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedura TForm1.Edit1KeyPress (Sender: TObject; var Key: Char) ;
zaczynać
Jeśli klucz = #13, to rozpocznij
Jeśli HiWord(GetKeyState(VK_SHIFT)) 0 to
WybierzDalej (Nadawca jako TWinControl,False,True)
w przeciwnym razie
SelectNext(Sender as TWinControl,True,True) ;
Klucz := #0
koniec;
koniec;
~~~~~~~~~~~~~~~~~~~~~~~~~~~
w DBGrid
Jeśli chcesz mieć podobne przetwarzanie Enter (Shift+Enter) wDBGrid:
~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedura TForm1.DBGrid1KeyPress (Sender: TObject; var Key: Char) ;
zaczynać
Jeśli klucz = #13, to rozpocznij
Jeśli HiWord(GetKeyState(VK_SHIFT)) 0 to zacznij
z (nadawca jako TDBGrid) do
jeśli wybrany indeks > 0 to
wybranyindeks := wybranyindeks - 1
inny zacząć
DataSource.DataSet.Prior;
selectedindex := liczba pól - 1;
koniec;
koniec inny początek
z (nadawca jako TDBGrid) do
jeśli wybrany indeks<(fieldcount - 1) then
wybranyindeks := wybranyindeks + 1
inny zacząć
DataSource.DataSet.Next;
wybranyindeks := 0;
koniec;
koniec;
Klucz := #0
koniec;
koniec;
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Więcej informacji o aplikacjach Delphi
- Symfonia klawiatury Zapoznaj się z procedurami zdarzeń OnKeyDown, OnKeyUp i onKeyPress, aby reagować na różne kluczowe działania lub obsługiwać i przetwarzać znaki ASCII wraz z innymi klawiszami specjalnego przeznaczenia.
- Co oznacza #13#10 w kodzie Delphi? Jeśli zastanawiasz się, co oznaczają te postacie, oto odpowiedź.