Autor |
Beitrag |
wayneschlegel
Hält's aus hier
Beiträge: 11
WIN 7 Ultimate 32-
Delphi 4.0
|
Verfasst: Sa 06.08.11 17:31
Hey !
ich möchte ein onkeypress Ereignis auf ein Objekt erstellen. Es soll allerdings nur stattfinden wenn beim doppelklick zusätzlich strg+alt gedrückt wird.
das kann für die profis hier nicht so schwierig sein. bei mir haperts an der syntax...hat vielleicht jemand ein paar stückchen code für mich ?
vielen dank !
M.
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Sa 06.08.11 18:44
wayneschlegel hat folgendes geschrieben : | ich möchte ein onkeypress Ereignis auf ein Objekt erstellen. Es soll allerdings nur stattfinden wenn beim doppelklick zusätzlich strg+alt gedrückt wird. |
OnKeyPress findet bei einem Tastaturdruckereignis statt, der Doppelklick ist hingegen ein Mausereignis (OnDblClick). Beides sind getrennte Ereignisse, die sich m.E. nicht so ohne weiteres "mischen" bzw. "vereinen" lassen.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 06.08.11 18:47
wayneschlegel hat folgendes geschrieben : | ich möchte ein onkeypress Ereignis auf ein Objekt erstellen. Es soll allerdings nur stattfinden wenn beim doppelklick zusätzlich strg+alt gedrückt wird. |
Also du willst ein OnKeyPress benutzen, aber einen Doppelklick abfangen, wenn andere Tasten unten sind? Wie jetzt?
Also mal zur Klarstellung:
OnKeyPress dient zur Reaktion auf einen Tastendruck mit der Tastatur.
OnDblClick dient zur Reaktion auf einen Doppelklick mit der Maus.
So, dann zum Problem:
Du kannst in OnKeyDown auf die Tastendrücke von Strg + Alt reagieren und dir deren Status merken und zurücksetzen, wenn sie in OnKeyUp wieder losgelassen werden. Dann kannst du im Doppeklick Ereignis einfach diesen Status abfragen.
Eine andere Möglichkeit wäre die Abfrage des Tastenstatus mit GetAsyncKeyState, aber das hat den Nachteil, dass eine Verzögerung bei der Doppelklickbehandlung dazu führen kann, dass die Tasten dann schon wieder losgelassen sind. Dafür hat es den Vorteil, dass es auch klappt, wenn beim Drücken der Tasten das Fenster noch nicht den Eingabefokus hatte.
|
|
wayneschlegel 
Hält's aus hier
Beiträge: 11
WIN 7 Ultimate 32-
Delphi 4.0
|
Verfasst: Sa 06.08.11 20:39
ja genau ! Nur wenn die beiden Tasten shift und crtl zusammen gedrückt sind, dann soll das Ereignis stattfinden.
Das muss doch irgendwie gehen oder? Auf jeden Fall doch mit einer Abfrage beim Doppelklickereignis oder habe ich einen Denkfehler ?
Beipiel:
formKeydown...
if (shift = ([ssCtrl, ssShift]) + blabla then
begin
...
end;
was denkt Ihr ?
M.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 06.08.11 21:28
Wie ich schon sagte: jaenicke hat folgendes geschrieben : | Du kannst in OnKeyDown auf die Tastendrücke von Strg + Alt reagieren und dir deren Status merken und zurücksetzen, wenn sie in OnKeyUp wieder losgelassen werden. Dann kannst du im Doppeklick Ereignis einfach diesen Status abfragen. |
Shift abfragen ist da schon eine gute Idee, nur musst du auch den Status speichern usw.
|
|
wayneschlegel 
Hält's aus hier
Beiträge: 11
WIN 7 Ultimate 32-
Delphi 4.0
|
Verfasst: Sa 06.08.11 22:35
cool ! hast du evtl. nen demo code oder sowas ?
ein beispiel ?`was glaubst du wohl was ich alles ausprobiert habe...
M.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 06.08.11 22:43
|
|
wayneschlegel 
Hält's aus hier
Beiträge: 11
WIN 7 Ultimate 32-
Delphi 4.0
|
Verfasst: So 07.08.11 00:28
hm...und das soll funktionieren ? probier ich gleich morgen mal aus aber ich bin da eher skeptisch ehrlich gesagt.
M.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: So 07.08.11 00:37
wäre es nicht eventuell einfach einfach GetAsyncKeystate in der DoubleClick-Procedure abzufragen?
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 07.08.11 08:23
|
|
wayneschlegel 
Hält's aus hier
Beiträge: 11
WIN 7 Ultimate 32-
Delphi 4.0
|
Verfasst: Do 11.08.11 21:47
Stimmt ! Hat super hingehauen !
Vielen Dank für die Hilfe !!!!
|
|