Problem mit ExplorerTreeGadget

Anfängerfragen zum Programmieren mit PureBasic.
enigma
Beiträge: 52
Registriert: 13.09.2011 13:52

Problem mit ExplorerTreeGadget

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Problem mit ExplorerTreeGadget

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
enigma
Beiträge: 52
Registriert: 13.09.2011 13:52

Re: Problem mit ExplorerTreeGadget

Beitrag von enigma »

Vielen Dank STARGÅTE für die schnelle Antwort. Da wäre ich nie drauf gekommen.

Gruß
Enigma
enigma
Beiträge: 52
Registriert: 13.09.2011 13:52

Re: Problem mit ExplorerTreeGadget

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Problem mit ExplorerTreeGadget

Beitrag 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).
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
enigma
Beiträge: 52
Registriert: 13.09.2011 13:52

Re: Problem mit ExplorerTreeGadget

Beitrag von enigma »

das habe ich mir schon gedacht.

Trotzdem Danke

Gruß
Enigma
Antworten