Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Genaue Taste bei einer Message ermitteln (https://www.delphipraxis.net/73549-genaue-taste-bei-einer-message-ermitteln.html)

halinchen 19. Jul 2006 17:59


Genaue Taste bei einer Message ermitteln
 
Ich hab eine Procedure geschrieben und die beim Starten des Progs in "Application.OnMessage" eingetragen.
Jetzt überprüf ich ob eine Taste gedrückt wird:
Delphi-Quellcode:
 
procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg = WM_KeyDown then begin
     //Hier soll die Taste abgefragt werden
     end;
end;
Wie kann ich jetzt noch überprüfen welche Taste genau gedrückt worden ist.

Ich will nämlich die Esc-Taste abfangen.

ferby 19. Jul 2006 21:37

Re: Genaue Taste bei einer Message ermitteln
 
Hallo,

wie du es so machst, weiß ich nicht,
ich könnte nur eine Alternative Vorschlagen,
nämlich das FormKeyDown Ereigniss

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if key=VK_ESCAPE then close;
end;

SirThornberry 19. Jul 2006 21:42

Re: Genaue Taste bei einer Message ermitteln
 
wenn du es direkt in der Messageroutine machst sollte ein Blick in's MSDN helfen:
MSDN-Library durchsuchenWM_KeyDown

3_of_8 19. Jul 2006 21:43

Re: Genaue Taste bei einer Message ermitteln
 
Das kann so doch gar nicht gehen.

TMsg ist ein record, WM_KEYDOWN ist ein integraler Wert.

Du musst machen:

Delphi-Quellcode:
if msg.message=WM_KEYDOWN then...
Und die Taste steht in msg.wparam oder msg.lparam, wo genau weiß ich nicht, aber ich glaube in wparam.

dataspider 20. Jul 2006 10:02

Re: Genaue Taste bei einer Message ermitteln
 
Hi,

stehen in wparam, musste mal ein eigenes KeyHandling wie folgt integrieren:

Delphi-Quellcode:
procedure TrwCustomForm.WMKeyPress(var Message: TMessage);
Var
  Key: Word;
  Keyboard: TKeyboardState;
  Shift: TShiftState;
begin
  GetKeyboardState(Keyboard);
  Shift := KeyboardStateToShiftState(Keyboard);
  if (Message.WParam >= Low(Word)) and (Message.WParam <= High(Word)) then
  begin
    key := Message.WParam;
    // eigene Routine aufrufen
    // wichtig ist Result, damit Behandlung abgebrochen wird, wenn von KeyPressEx behandelt
    Message.Result := KeyPressEx(Key, Shift);
  end;
end;
Cu, Frank

halinchen 22. Jul 2006 21:52

Re: Genaue Taste bei einer Message ermitteln
 
So erstmal danke für eure Hilfe, aber auf jeden Fall geht Form1.OnKeyPressed nicht.
Denn wenn da ein Button den Fokus hat kommt da nix an.

Den Rest schau ich mir morgen an.
Und noch mal danke für die Antworten.
:cheers:

3_of_8 22. Jul 2006 22:24

Re: Genaue Taste bei einer Message ermitteln
 
Mit TForm.KeyPreview=True dürfte das gehen.

halinchen 23. Jul 2006 11:47

Re: Genaue Taste bei einer Message ermitteln
 
Stimmt funktioniert alles.
Naja viele Wege führen nach Rom :-D .

Danke für die vielen Tipps.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz