Seite 1 von 1
Problem mit ExplorerTreeGadget
Verfasst: 15.11.2012 16:41
von enigma
Hallo,
mein ExplorerTreeGadget macht was es will.
Code: Alles auswählen
If OpenWindow(0, 0, 0, 300, 300, "ExplorerTreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ExplorerTreeGadget(0, 10, 10, 280, 280, "*.*",#PB_Explorer_AlwaysShowSelection)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 0
If EventType()=#PB_EventType_LeftClick ; <-- z.B
Debug("Linke Maustaste wurde gedrückt")
EndIf
EndSelect
EndSelect
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
jedesmal wenn ich mit der linken Maustaste ein Verzeichnis öffne oder eine Datei auswähle soll ein Eintrag im Debug-Fenster erscheinen.
Manchmal kommt der Eintrag, manchmal nicht.
Was mache ich falsch?
Gruß
enigma
PB v5.00 x64
Windows 7 64bit
Re: Problem mit ExplorerTreeGadget
Verfasst: 15.11.2012 16:47
von STARGÅTE
enigma hat geschrieben:Was mache ich falsch?
Etwas was viele falsch machen, du verwendest mehrmals WaitWindowEvent() in der selben Schleife.
Logischerweise, wird dann öffter mal das Event "unten" ausgegeben, wo du es aber nicht abfragst.
Code: Alles auswählen
If OpenWindow(0, 0, 0, 300, 300, "ExplorerTreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ExplorerTreeGadget(0, 10, 10, 280, 280, "*.*",#PB_Explorer_AlwaysShowSelection)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 0
If EventType()=#PB_EventType_LeftClick ; <-- z.B
Debug("Linke Maustaste wurde gedrückt")
EndIf
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
Re: Problem mit ExplorerTreeGadget
Verfasst: 15.11.2012 17:24
von enigma
Vielen Dank STARGÅTE für die schnelle Antwort. Da wäre ich nie drauf gekommen.
Gruß
Enigma
Re: Problem mit ExplorerTreeGadget
Verfasst: 15.11.2012 17:56
von enigma
eine weitere Frage:
wie kann ich verhindern das bei einem Doppelklick auch der einfache Linksklick erkannt wird?
Code: Alles auswählen
If OpenWindow(0, 0, 0, 300, 300, "ExplorerTreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ExplorerTreeGadget(0, 10, 10, 280, 280, "*.*",#PB_Explorer_AlwaysShowSelection)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 0
Select EventType()
Case #PB_EventType_LeftDoubleClick
Debug("Doppelklick mit Links")
Case #PB_EventType_LeftClick
Debug("Linke Maustaste wurde gedrückt")
End
;If EventType()=#PB_EventType_LeftDoubleClick
; Debug("Doppelklick mit Links")
;ElseIf EventType()=#PB_EventType_LeftClick ; <-- z.B
; Debug("Linke Maustaste wurde gedrückt")
;EndIf
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndIf
Auch das Wechseln von If nach Select hilft mir hier nicht weiter da immer auch der erste Klick eines Doppelklicks erkannt wird. Gibt es dafür eine Lösung? Das wäre nur Interessehalber da mich dieses Verhalten in meinem Vorhaben nicht stört.
Gruß
Enigma
Re: Problem mit ExplorerTreeGadget
Verfasst: 15.11.2012 18:11
von STARGÅTE
Garnicht! Denn um einen Doppelklick zu machen, musst du ja mindestens einmal einen Klick machen, und der Klick weiß ja nicht vorher ob du danach noch ein machst (um das mal Bildhaft auszudrücken).
Re: Problem mit ExplorerTreeGadget
Verfasst: 15.11.2012 18:29
von enigma
das habe ich mir schon gedacht.
Trotzdem Danke
Gruß
Enigma