zweimal treegadget-event

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

zweimal treegadget-event

Beitrag 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?
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
:?:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag 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...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag 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().
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag 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!
Antworten