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