Autor Beitrag
matze.de
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 576

Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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



BeitragVerfasst: Mi 27.07.05 13:49 
Habs jetzt nicht ausprobiert, aber sollte es so oder ählich nicht funktionieren ?

ausblenden 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 user profile iconMotzi: Code- durch Delphi-Tags ersetzt.
hallo
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 450

WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
BeitragVerfasst: 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



BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 576

Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 27.07.05 16:24 
Warum benutzt du eigentlich nicht die Ereignisse des Formulars?
Es gibt doch onDblClick und onClick!
matze.de Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 576

Win95, Win98 SE, WinXp Prof SP2
D7P, D8P, FPC2.0
BeitragVerfasst: Mi 27.07.05 16:36 
:D jaenicke Wir sprechen hier von nonVCL, da is das ned ganz so einfach.

mfg matze

_________________
si tacuisses, philosophus mansisses.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 27.07.05 17:33 
:oops: :oops: :oops:
Ähh, da hab ich nicht drauf geachtet...

Aber wie wärs mit den entsprechenden Botschaften:
msdn.microsoft.com/l...wm_lbuttondblclk.asp