Avatar billede hugopedersen Nybegynder
30. april 2010 - 18:32 Der 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
Avatar billede kroning Nybegynder
30. april 2010 - 18:59 #1
OnKeyDown eventen sammen med GetKeyState kan normalt bruges
Avatar billede hugopedersen Nybegynder
30. april 2010 - 19:01 #2
Jo men den er vel ikke global?
Jeg skal fange tastkombinationen ligegyldigt hvor jeg er i applikationen.
Avatar billede kroning Nybegynder
30. april 2010 - 19:14 #3
Har du flere forme ?
Avatar billede kroning Nybegynder
30. april 2010 - 19:22 #4
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.


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

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;


end.
Avatar billede hugopedersen Nybegynder
02. maj 2010 - 20:10 #5
Jeg har i omegnen af 15 formularer så derfor skal det helst være lidt universalt
Avatar billede a_nor Nybegynder
02. maj 2010 - 20:51 #6
Hej Hugo,

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.
Avatar billede hugopedersen Nybegynder
03. maj 2010 - 07:58 #7
kroning> jeg kan kun sige tak og smid et svar :-)  det virker perfekt så vidt jeg har kunnet teste.

Funktionen skal bruges til at vise et 'Secrets' menupunkt for brugeren på min hovedmenu og det skal kunne aktiveres overalt i programmet.
Avatar billede kroning Nybegynder
03. maj 2010 - 17:09 #8
Og svar
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester