![]() |
Shift gedrückt?
Moin moin
Ich möchte gern wissen ob die Shift-Taste gedrückt ist, aber es funktioniert nicht.
Delphi-Quellcode:
Wenn ich nun auf den Button1 klicke und dabei shift gedrücke halte, dann zeigts im Debugfenster: 'shift ist nicht gedrückt' :gruebel:
procedure TForm1.Button1Click(Sender: TObject);
var state: TShiftState; begin if ssShift in state then Outputdebugstring('shift ist gedrückt') else Outputdebugstring('shift ist nicht gedrückt'); end; Weiss jemand wieso? Gruss Jjep |
Re: Shift gedrückt?
Versuch es mal in MouseDown.
|
Re: Shift gedrückt?
Wo wird die Variable state zugewiesen?
Versuch mal Dein Glück in MousDown, MouseUp des Buttons oder des Forms. Dort heisst der Parameter dann aber Shift. |
Re: Shift gedrückt?
Delphi-Quellcode:
Hmm in der MouseDown-Methode funktioniert es einwandfrei. Muss man vieleicht "state" nocht irgendwie vorbereiten?
procedure TForm1.Button1Click(Sender: TObject);
var state: TShiftState; begin if ssShift in state then Outputdebugstring('shift ist gedrückt') else Outputdebugstring('shift ist nicht gedrückt'); end; procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssShift in Shift then Outputdebugstring('shift ist gedrückt') else Outputdebugstring('shift ist nicht gedrückt'); end; Leider will ich es umbedingt mit der Button1Click-Methode machen. Wüsste jemand wie das möglich ist? |
Re: Shift gedrückt?
Ganz einfach,
Du machst ne "Globale" Variable die du bei Mouse Down Setzt und bei Mouse Up Reset Dann kannst du die Variable in Click prüfen. Wenn doch nur alles so einfach wäre ;) |
Re: Shift gedrückt?
Zitat:
Du MUSST es in MouseDown oder MouseUp machen. |
Re: Shift gedrückt?
Zitat:
Zitat:
Kann man vieleicht via WinApi auf den Zustand zugreifen? |
Re: Shift gedrückt?
Zitat:
In dem Moment, wenn Deine Button1OnClick ausgeführt wird, könnte der Status der Shift-Taste schon wieder ein ganz anderer sein. Oder hält der Benutzer die Taste so lange fest, bis Du ihm sagst, dass er sie loslassen darf? Nur im Event-Handler für OnMouseDown wird die Shift-Taste ausgewertet und an Deine Button1MouseDown kann der Status ausgewertet werden. Die einzige Möglichkeit ist es, im MouseDown den Status zwischenspeichern und im Click auszuwerten. Es ist einfach so, es gibt da keine bessere Version. Das einzige wäre ein MouseHook, aber das willst Du nicht machen, glaub mir. Das ist sehr viel Aufwand. |
Re: Shift gedrückt?
Oke
Danke an alle |
Re: Shift gedrückt?
hallo jjep,
Zitat:
Gruß, Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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