Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Abfrage von Tastaturereignissen (https://www.delphipraxis.net/7229-abfrage-von-tastaturereignissen.html)

Tyrael Y. 6. Aug 2003 11:07


Abfrage von Tastaturereignissen
 
Hi,
innerhalb meines Formulars soll der Benutzer STRG + G oder
STRG+Shift+G drücken....

ich habe eine Abfrage in der ich prüfen möchte ob die erste oder die zweite Tastenkombinaton gedrckt wurde ....

in OnKeyDown Frage ich....

if Shift = [ssShift] then
begin
if ((Shift = [ssCtrl]) and (Key = Ord('G')))then
ActEditUserExecute(Sender);
end;

für STRG+SHIFT+G....
nur klappt das nicht.....

wie kann ich rausfinden, ob CTRL+Shift gedrückt wurde ????

Danke euch schon mal..

Grüße Tyrael

Chewie 6. Aug 2003 11:19

Re: Abfrage von Tastaturereignissen
 
Das kann so auch nicht gehen. Du fragst ab, ob Shift gleich ssShift ist, und dann ob es gleich ssCtrl ist. Beides kann aber nicht sein. Um herrauszufinden, ob beides gedrückt wurde, musst du den in-Operator verwenden:

Delphi-Quellcode:
if ssShift in Shift then

Tyrael Y. 6. Aug 2003 11:31

Re: Abfrage von Tastaturereignissen
 
und für Ctrl+Shift+U ???

.... if Shift in [ssCtrl, ssShift] and Key = 71 then ??

...wenn ja, dann trifft diese bedingung doch auch für Ctrl+U und Shift+U zu..., oder?

Chewie 6. Aug 2003 11:39

Re: Abfrage von Tastaturereignissen
 
Ctrl-Shift-U:
Delphi-Quellcode:
if (ssCtrl in Shift) and (ssShift in Shift) and (Key=71) then
vielleicht geht das auch (nicht getestet):
Delphi-Quellcode:
if ([ssCtrl,ssShift] in Shift) and (Key=71) then
Shift-U:
Delphi-Quellcode:
if (ssShift in Shift) and (Key=71) then

Dannyboy 6. Aug 2003 11:49

Re: Abfrage von Tastaturereignissen
 
Vielleicht geht das ja einfacher mit dem Windows-Ereignis GetAsyncKeyState.
Dieses wendet man auf alle 3 Tasten an und dann funst das.
Kleines Beispiel gefällig ?

Tyrael Y. 6. Aug 2003 12:03

Re: Abfrage von Tastaturereignissen
 
@chewie ... danke für das Beispiel..., so funktioniert es jetzt

@danny ...wäre nett ein kleines Besispiel, weil so sagt es mir jetzt erst mal nix...


danke euch allen

Tyrael

Dannyboy 6. Aug 2003 13:46

Re: Abfrage von Tastaturereignissen
 
Delphi-Quellcode:
// Funktion gibt True zurück, wenn Taste 'VK_KEY' gedrückt wurde.

Function MyKeyRead(VK_KEY : Integer) : Boolean;
begin
  result:= failed(GetAsyncKeyState(VK_KEY));
end;


// Funktion gibt True zurück, wenn alle 3 Tasten gedrückt wurden

Function Read_3_Keys(Key1, Key2, Key3 : Integer) : Boolean;
begin
  Result:= MyKeyRead(Key1) AND MyKeyRead(Key2) AND MyKeyRead(Key3);
end;
Hinweis:

Für die virtual keys gibt es in der Unit Windows Konstanten,
wie z.b.
Delphi-Quellcode:
VK_SHIFT
für die Shift-Taste, etc.
Für Buchstaben nimmst Du am besten
Delphi-Quellcode:
ord('U')
für 'U'.
Achtung, immer GROSSE Buchstaben verwenden.

Habe hier auf der Arbeit keinen Compiler, aber so müsste das stimmen.

Tyrael Y. 6. Aug 2003 14:20

Re: Abfrage von Tastaturereignissen
 
danke dir danny, es läuft mittlerweile auf die andere Art, wei es oben beschrieben ist, aber ich werde auch diese Variante mal testen....


vielen dank ... da mach ich doch mal einen Luftspru.. :bounce1:

:hello:

Luckie 6. Aug 2003 14:21

Re: Abfrage von Tastaturereignissen
 
Mein Delphi kennt das Schlüsselwort failed nicht. :roll:

Tyrael Y. 6. Aug 2003 15:12

Re: Abfrage von Tastaturereignissen
 
... ich wollte es gerade auch testen und mein Delphi kennt failed auch nicht ..... :cry:

.. ich benutze Delphi 5 Pro...
..welche Version benutzt du ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz