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

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
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
Ahrgh... das passiert, wenn man vom Griechen kommt und ne Ouzo-Vergiftung hat
Also Kinder:
Entweder Programmieren
oder Saufen!