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?
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?
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;
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 :]
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)