![]() |
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 |
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
|
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? |
Re: Abfrage von Tastaturereignissen
Ctrl-Shift-U:
Delphi-Quellcode:
vielleicht geht das auch (nicht getestet):
if (ssCtrl in Shift) and (ssShift in Shift) and (Key=71) then
Delphi-Quellcode:
Shift-U:
if ([ssCtrl,ssShift] in Shift) and (Key=71) then
Delphi-Quellcode:
if (ssShift in Shift) and (Key=71) then
|
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 ? |
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 |
Re: Abfrage von Tastaturereignissen
Delphi-Quellcode:
Hinweis:
// 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; Für die virtual keys gibt es in der Unit Windows Konstanten, wie z.b.
Delphi-Quellcode:
für die Shift-Taste, etc.
VK_SHIFT
Für Buchstaben nimmst Du am besten
Delphi-Quellcode:
für 'U'.
ord('U')
Achtung, immer GROSSE Buchstaben verwenden. Habe hier auf der Arbeit keinen Compiler, aber so müsste das stimmen. |
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: |
Re: Abfrage von Tastaturereignissen
Mein Delphi kennt das Schlüsselwort failed nicht. :roll:
|
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. |
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