Seite 1 von 1

zweimal treegadget-event

Verfasst: 08.05.2009 20:59
von jojo1541
Hallo Leute. Ich hab mal wieder eine Frage, diesmal bezüglich Treegadgets.

Ich habe den Code:

Code: Alles auswählen

If WaitWindowEvent() = #PB_Event_Gadget
  
  Select EventGadget()
     
     Case #treegadget 
     
         Debug GetGadgetState(#treegadget)
     
  EndSelect

EndIf
Da passt alles, ich bekomme pro Klick immer genau ein event vom Treegadget.

Sobald ich aber

Code: Alles auswählen

If event = #PB_Event_Gadget
  
  Select EventGadget()
     
     Case #treegadget
     
         Debug GetGadgetState(#treegadget)
             
   EndSelect 
     
EndIf
verwende, bekomm ich immer, wenn ich von einem Item auf dessen unteritem wechsle gleich zwei events. Das gleiche passiert, wenn ich direkt auf das Gadget klicke, nachdem ich vorher auf einem anderen Gadget war.Bei der ersten Möglichkeit bekomme ich ein Event, bei der zweiten bekomme ich zwei Events.
Weiß jemand, woran das liegen könnte?

Verfasst: 08.05.2009 21:04
von Kaeru Gaman
mit unvollständigem code ist das so ne sache...
da kann man rumraten bis man bluescreen wird...

wie funktioniert das:

Code: Alles auswählen

Repeat
  Event = WaitWindowEvent()
  EvGad = EventGadget()

  Select Event 
    Case #PB_Event_Gadget
      Select EvGad
        Case #treegadget
          Debug GetGadgetState(#treegadget)
      EndSelect
    Case #PB_Event_CloseWindow
      EXIT = 1
  EndSelect

Until EXIT
:?:

Verfasst: 08.05.2009 21:06
von ts-soft
Die zweite Version ist aber korrekt. Du mußt jedoch noch nach EventType
selektieren! Das TreeGadget unterstützt nämlich eine Menge events.

PS: ein komplettes Beispiel posten, also mit Fenster und komplettem
Eventloop macht es dem Helfendem leichter Dir zu helfen, ich setze mich
ja nicht hin und baue das jetzt selber :wink:

Verfasst: 08.05.2009 21:10
von HeX0R
Vielleicht wird es dadurch klarer:

Code: Alles auswählen

OpenWindow(0, 0, 0, 300, 300, "", $C80000)
TreeGadget(0, 5, 5, 290, 280)
For i = 0 To 12
	AddGadgetItem(0, -1, RSet("a", Random(8) + 1, "a"))
Next i
Repeat
	Select WaitWindowEvent()
		Case #PB_Event_Gadget
			Select EventType()
				Case #PB_EventType_LeftClick
					Debug "Linksklick"
				Case #PB_EventType_Change
					Debug "Auswahl verändert"
			EndSelect
		Case #PB_Event_CloseWindow
			Break
	EndSelect
ForEver
Aber diese Codeschnippsel sind tatsächlich ziemlich armselig für die armen Hilfswilligen...

Verfasst: 08.05.2009 21:17
von ts-soft
@HeX0R

Haste Dir zwar mühe gegeben, aber trotzdem falsch :lol:

Code: Alles auswählen

OpenWindow(0, 0, 0, 300, 300, "", $C80000)
TreeGadget(0, 5, 5, 290, 280)
For i = 0 To 12
   AddGadgetItem(0, -1, RSet("a", Random(8) + 1, "a"))
Next i
Repeat
   Select WaitWindowEvent()
      Case #PB_Event_Gadget
         Select EventGadget()
          Case 0
            Select EventType()
              Case #PB_EventType_LeftClick
                 Debug "Linksklick"
              Case #PB_EventType_Change
                 Debug "Auswahl verändert"
            EndSelect
         EndSelect
      Case #PB_Event_CloseWindow
         Break
   EndSelect
ForEver
Unterschied sieht man, wenn man ins leere klickt, da kommt nur ein
Ereignis, der Klick, ansonsten kommt der Klick und ein Change!

Verfasst: 08.05.2009 21:20
von jojo1541
Ein komplettes Beispiel posten ist schwer, da ich kein richtiges Programm dazu geschrieben habe, sondern einfach mal mit Treegadgets rumexperimentiert hab. <)

Aber danke für die Antworten und den Tipp mit eventtype().

Verfasst: 08.05.2009 21:24
von ts-soft
volti hat geschrieben:Ein komplettes Beispiel posten ist schwer, da ich kein richtiges Programm dazu geschrieben habe, sondern einfach mal mit Treegadgets rumexperimentiert hab. <)
Gerade dann kann man ein Beispiel posten, da braucht man ja nichts mehr
extra erstellen. Wenn du ein großes Projekt hast, mußte ja extra noch was
basteln. So nicht

Verfasst: 08.05.2009 22:26
von HeX0R
ts-soft hat geschrieben:@HeX0R

Haste Dir zwar mühe gegeben, aber trotzdem falsch :lol:
Ahrgh... das passiert, wenn man vom Griechen kommt und ne Ouzo-Vergiftung hat ;)

Also Kinder:
Entweder Programmieren oder Saufen!