Obsługa skrótu Ctrl+Enter w Edit

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:

showmessage('Ok');

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

1

Możesz wykorzystać zdarzenie OnKeyDown:

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = VK_RETURN) and (ssCtrl in Shift) then
    ShowMessage('Ok');
end;
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;

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 :]

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)

1 użytkowników online, w tym zalogowanych: 0, gości: 1