PureBoard
http://forums.purebasic.com/german/

Wie unterscheidet man Linksklick von Doppellinksklick?
http://forums.purebasic.com/german/viewtopic.php?f=16&t=31672
Seite 1 von 1

Autor:  bin_neu_hier [ 29.09.2019 11:44 ]
Betreff des Beitrags:  Wie unterscheidet man Linksklick von Doppellinksklick?

Hallo Allerseits!

in der PB-Hilfe ist ein Beispiel zum Thema EventType(), in dem LinksKlick und Doppellinksklick abgefragt werden, ungefähr so:

Code:
Select EventType()
Case #PB_EventType_LeftClick
   debug "links"
Case #PB_EventType_LeftDoubleClick
   debug "doppellinks"
Endselect


Da ja jeder Doppelklick mit einem Einfachklick beginnt, gibt Debug zuerst "links" und dann "dopppellinks" aus. Wie unterscheidet man die Klickarten "sauber" voneinander? Ein einfacher Linksklick ist ja erst dann einer, wenn nicht innerhalb soundsovieler millisekunden kein zweiter linksklick folgt. Wie unterscheidet man das?

Autor:  mk-soft [ 29.09.2019 13:57 ]
Betreff des Beitrags:  Re: Frage: Wie unterscheidet man inksklick von Doppellinkskl

Eigentlich gar nicht

Das Problem ist das man zu lange warten muss um den unterschied zwischen LeftClick und LeftDoubleClick zu unterscheiden.
Somit dauert es zu lange um auf einem LeftClick zu reagieren.
Code:
If OpenWindow(0, 0, 0, 270, 140, "ListViewGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListViewGadget(0, 10, 10, 250, 120)
  For a = 1 To 12
    AddGadgetItem (0, -1, "Item " + Str(a) + " of the Listview")   ; definieren des Listview-Inhalts
  Next
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0
            Select EventType()
              Case #PB_EventType_LeftClick
                ;Debug "LeftClick"
                AddWindowTimer(0, 1000, DoubleClickTime())
              Case #PB_EventType_LeftDoubleClick
                Debug "LeftDoubleClick"
                RemoveWindowTimer(0, 1000)
            EndSelect
        EndSelect
      Case #PB_Event_Timer
        Select EventTimer()
          Case 1000
            Debug "Delayed LeftClick"
            RemoveWindowTimer(0, 1000)
        EndSelect
           
    EndSelect
  ForEver
EndIf

Autor:  RSBasic [ 29.09.2019 15:27 ]
Betreff des Beitrags:  Re: Frage: Wie unterscheidet man inksklick von Doppellinkskl

Da die Doppelklickzeit je Windows-Konfiguration auch mal unterschiedlich sein kann, wenn der Benutzer das explizit eingestellt hat, ist es empfehlenswert, die echte Zeit zu ermitteln:
Code:
Debug GetDoubleClickTime_()

(nur für Windows)

Autor:  STARGÅTE [ 29.09.2019 15:46 ]
Betreff des Beitrags:  Re: Frage: Wie unterscheidet man inksklick von Doppellinkskl

Unterscheidet sich das von DoubleClickTime()?
Code:
Debug DoubleClickTime()
Debug GetDoubleClickTime_()

Zitat:
500
500


Zu der aussage von bin_neu_hier:
"Ein einfacher Linksklick ist ja erst dann einer, wenn nicht innerhalb soundsovieler millisekunden kein zweiter linksklick folgt."
Ist das wirklich so?
Ich hätte gesagt, LeftClick ist definiert als: Down + Up (egal was davor/danach passiert)
LeftDoubleClick ist definiert als: Down + Up + Down (also kein Up mehr nötig)

Die Frage ist auch, in welcher Situation soll ein Doppelklick keinen einfachen Klick auslösen?

Autor:  RSBasic [ 29.09.2019 15:58 ]
Betreff des Beitrags:  Re: Frage: Wie unterscheidet man inksklick von Doppellinkskl

STARGÅTE hat geschrieben:
Unterscheidet sich das von DoubleClickTime()?
Code:
Debug DoubleClickTime()
Debug GetDoubleClickTime_()

Zitat:
500
500

Oh sry, ich hab das nicht gesehen, dass DoubleClickTime() verwendet wird. Dann ist alles gut.

Autor:  Shardik [ 29.09.2019 18:15 ]
Betreff des Beitrags:  Re: Frage: Wie unterscheidet man inksklick von Doppellinkskl

Ich habe im Mai 2011 in diesem Beitrag im englischen Forum "Feature Requests and Wishlists" eine Multiplattform-Version von GetDoubleClick() gezeigt. Im August 2011 hat freak im gleichen Thread bekannt gegeben, dass er die GetDoubleClick()-Funktion nativ in PureBasic implementiert hat:
freak hat geschrieben:
I added the double click events and a native DoubleClickTime() function as well :)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/