30. april 2010 - 18:32Der er
7 kommentarer og 1 løsning
Nemmeste og rigtigste metode til at fange tastesekvens
Hvad er den nemmeste og mest rigtige metode til at fange en bestemt taste sekvens i Delphi? Jeg har brug for at kunne fange at brugeren trykker CTRL+ALT+S
Du får begge muligheder. Hvis du kun har en form så kan du benytte FormKeyDown muligheden, husk at sætte formens KeyPreview=true. Hvis du har flere forme så brug MyOnMessage muligheden.
type TForm1 = class(TForm) procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormCreate(Sender: TObject); private { Private declarations } procedure MyOnMessage(var Msg: TMsg; var Handled: Boolean); public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin { if (Key=83) then if (GetKeyState(VK_CONTROL)<0) and (GetKeyState(VK_MENU)<0) then showmessage('CTRL+ALT+S');} end;
procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage:=MyOnMessage; end;
procedure TForm1.MyOnMessage(var Msg: TMsg; var Handled: Boolean); begin if Msg.message=WM_KEYDOWN then begin if (Msg.wParam=83) and (GetKeyState(VK_CONTROL)<0) and (GetKeyState(VK_MENU)<0) then begin showmessage('CTRL+ALT+S'); Handled:=true; end; end; end;
Kroning har svaret på dit spørgsmål! jf. dit #2 og løsningen virker ligegyldigt hvor mange forms du har.
Hvis dit spm. skulle handle om at ctrl+alt+s skulle aktivere et af dine vinduer, ligegyldig hvilken applikation der er aktiv, skal du nok stille et nyt spørgsmål.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.