Obsługa skrótu Ctrl+Enter w Edit

Obsługa skrótu Ctrl+Enter w Edit
K1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0

Witam, chciałbym stworzyć oraz obsłużyć skrót tylko dla jednego komponentu. Ustawiam setFocus na Edit1 i chciałbym aby po nacisnięciu Ctrl+Enter aby pokazał się komunikat:

Kopiuj
showmessage('Ok');

Jak mogę wykonać obsługę tego zdarzenia?

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gorlice
1

Możesz wykorzystać zdarzenie OnKeyDown:

Kopiuj
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_RETURN) and (ssCtrl in Shift) then
    ShowMessage('Ok');
end;
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
3

Wystarczy oprogramować zdarzenie OnKeyDown komponentu Edit; W parametrze Key podany jest kod klawisza (jako liczba), a w Shift znajduje się zbiór flag określający wciśnięte klawisze specjalne;

Kopiuj
procedure TForm.EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (Shift = [ssCtrl]) and (Key = VK_RETURN) then
    Application.MessageBox('Ctrl+Enter pressed', 'Shortcut', MB_OK);
end;

Edit: MessageBox zostanie wyświetlony tylko i wyłącznie w przypadku, gdy wciśnięto konkretnie dwa klawisze - Ctrl i Enter; Jeżeli klawiszy specjalnych będzie wciśniętych więcej (np. Shift+Ctrl+Enter) to okienko nie zostanie wyświetlone;

Kod poprzednika umożliwi wyświetlenie okienka, nawet jeśli wciśnie się Shift+Ctrl+Alt+Enter :]

Gimo
  • Rejestracja: dni
  • Ostatnio: dni
0

Należy wyjaśnic że w owych przykładach chodzi o:
ssCtrl in Shift (key ctrl znajduje się w grupie key, można potraktować ten przykład jako key or key)
ssCtrl = Shift (ctrl musi być równy key)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.