08. marts 2004 - 15:56Der er
8 kommentarer og 1 løsning
Opfange muse tast
Heysa
Jeg er stolt :P ejer af en logitech MX 500 mus... På denne er der på venstre side 2 knapper, der kan virke som tilbage/frem knapper med iexplorer mm...
Det jeg godt kunne tænke mig var at kunne opfange om der bliver trykket på disse taster og afhængig af hvilket udføre noget bestemt
Prøv at oprette et nyt Delphi-projekt, og skriv følgende i formens OnKeyDown-event:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of 167: begin ShowMessage('Frem'); Key := 0; end; 166: begin ShowMessage('Tilbage'); Key := 0; end; end; end;
Jeg ved, at browsere i hvert fald opfatter disse taster (167 og 166) som frem og tilbage. Det ville ikke undre mig, hvis din mus (evt. gennem et af de programmer der kører i baggrunden) sender samme tastekoder :o)
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin ShowMessage(IntToStr(key)); end;
når jeg trykker på de knapper jeg ønsker viser den "18", lige meget hvilket af de 2 jeg trykker på... formen reagerer derimod ikke hvis jeg trykker på de normale højre/venstre knapper
Jeg kan oplyse dig om, at 37 og 39 er henholdsvis venstre og højre piltast. De er ikke nok i sig selv til at få browseren til at navigere frem og tilbage - alt-tasten skal være holdt nede. Alt-tasten har værdien 18, derfor fik du den værdi :o)
Man kan tjekke om alt-tasten er hold nede på følgende måde:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssAlt in Shift) then // Gør et eller andet... ShowMessage('Alt-tasten holdes nede'); end;
Et fuldt eksempel kan derfor se ud som følgende:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssAlt in Shift) then case Key of 37: ShowMessage('Tilbage'); 39: ShowMessage('Frem'); end; end;
Man kan evt. med fordel bruge de faste konstanter for piltasterne, for et bedre overblik over koden:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssAlt in Shift) then case Key of VK_LEFT: ShowMessage('Tilbage'); VK_RIGHT: ShowMessage('Frem'); end; end;
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.