| Autor |
Beitrag |
matze.de
      
Beiträge: 576
Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
|
Verfasst: Mo 25.07.05 12:24
Hi,
Ich versuche die Ganze Zeit schon einen Doppelklick bei mir im Programm zu implementieren. Die Struktur sieht bei mir so aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| Function WndProc(HWND: HWND; uMsg: UINT; wParam: wParam; lParam: lParam): LRESULT; Stdcall; Begin Result := 0; Case uMsg Of WM_COMMAND: Begin If HiWord(wParam) = BN_CLICKED Then Begin End; If HiWord(wParam) = BN_DOUBLECLICKED Then Begin End; End; End Else Result := DefWindowProc(HWND, uMsg, wParam, lParam); End; End; |
Jetzt geht der bei nem Doppelklick aber in den BN_CLICKED Zweig, was ja auch logisch ist, denn nen Doppelklick sind ja nur 2 aufeinanderfolgende Klicks. Jetzt von mir die Frage: Wie realisiere ich einen Doppelklick?
mfg matze
_________________ si tacuisses, philosophus mansisses.
|
|
jaenicke
      
Beiträge: 19336
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 25.07.05 12:36
Es gibt Mausbotschaften für Klick und Doppelklick. Dort wird allerdings der erste Klick wohl auch als Einzelklick gegeben und ZUSÄTZLICH als Doppelklick.
Möglichkeit: Mit GetSystemMetrics die Doppelklickzeit herausfinden und nach einem Klick diese Zeit warten, ob ein weiterer Klick folgt.
|
|
Overdosed
Hält's aus hier
Beiträge: 14
|
Verfasst: Mi 27.07.05 13:49
Habs jetzt nicht ausprobiert, aber sollte es so oder ählich nicht funktionieren ?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| Function WndProc(HWND: HWND; uMsg: UINT; wParam: wParam; lParam: lParam): LRESULT; Stdcall; Begin Result := 0; Case uMsg Of WM_COMMAND: Begin If HiWord(wParam) = BN_DOUBLECLICKED Then Begin End; If HiWord(wParam) = BN_CLICKED Then Begin End; End; End Else Result := DefWindowProc(HWND, uMsg, wParam, lParam); End; End; |
Sprich, die zwei IF's in ihrer Reihenfolge tauschen ?
Dann kann im Begin/End des BN_DOUBLECLICKED die Funktion beendet werden, ohne dass er je in BN_CLICKED springt.
Gruss, Perry
Moderiert von Motzi: Code- durch Delphi-Tags ersetzt.
|
|
hallo
      
Beiträge: 450
WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
|
Verfasst: Mi 27.07.05 13:54
Das wird nicht funktionieren...
Zuerst wird der normale Klick ausgelöst, und da weiß der noch nix vom Doppelclick!
_________________ Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
|
|
Overdosed
Hält's aus hier
Beiträge: 14
|
Verfasst: Mi 27.07.05 14:08
Also willst du mir damit sagen, dass ein Doppelklick nicht abfangbar ist, weil ja sowieso immer nur der erste klick ausgewertet wird ?
Muss doch irgendwie gehen ?!
|
|
Overdosed
Hält's aus hier
Beiträge: 14
|
Verfasst: Mi 27.07.05 14:37
So, hab also nochmal schnell ein bisschen rumgespielt und hab die Unterscheidung zwischen dem Doppel- und dem Einzelklick nicht hinbekommen.
Kann zwar auf den Doppelklick reagieren, aber nur bei "ausgeschaltetem" Klick.
Wichtig ist aber der Style des Buttons, BN_DOUBLECLICKED funktioniert nur mit BS_OWNERDRAW or BS_RADIOBUTTON, dran denken und die WIN-SDK-Hilfe befragen.
|
|
matze.de 
      
Beiträge: 576
Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
|
Verfasst: Mi 27.07.05 16:06
Ich hatte nun das Problem in der Listbox, aber das is gelöst, da die ListBox ne eigene Message sendet bei nem Doppelklick auf einen String. Aber wenn man nun auf die Form nen Doppelklick machen will, das bleibt immernoch offen....
mfg matze
_________________ si tacuisses, philosophus mansisses.
|
|
jaenicke
      
Beiträge: 19336
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 27.07.05 16:24
Warum benutzt du eigentlich nicht die Ereignisse des Formulars?
Es gibt doch onDblClick und onClick!
|
|
matze.de 
      
Beiträge: 576
Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
|
Verfasst: Mi 27.07.05 16:36
 jaenicke Wir sprechen hier von nonVCL, da is das ned ganz so einfach.
mfg matze
_________________ si tacuisses, philosophus mansisses.
|
|
jaenicke
      
Beiträge: 19336
Erhaltene Danke: 1751
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 27.07.05 17:33
Ähh, da hab ich nicht drauf geachtet...
Aber wie wärs mit den entsprechenden Botschaften:
msdn.microsoft.com/l...wm_lbuttondblclk.asp
|
|