Seite 1 von 1

GetParent_ PanelGadget Problem

Verfasst: 14.12.2022 15:25
von PureUser1966
Hallo zusammen,
ich habe da mal wieder ein Problem bei dem ich so langsam verzweifel.
Im Codebeispiel unten seht ihr ein Panelgadget auf dem Buttons platziert sind.
Ein ButtonGadget wird direkt nach dem erstellen und VOR AddGadgetItem auf ein Panelgadget geklebt.
Ein zweiter Button wird NACH AddGadgetItem auf die erste Registerkarte des Panelgadgets platziert.

Ich möchte jetzt gerne die parent GadgetID der Buttons herausfinden. (Im Beispiel wäre das die 2)
Leider läuft das nicht so wie ich es eigentlich erwarte.
Im Codebeispiel ist das Problem bei den Kommentaren näher erläutert.
Wo ist mein Denkfehler, oder hat jemand eine bessere Methode?

Vielen Dank für eure Mühe und Geduld mit mir...

Stef

Code: Alles auswählen


EnableExplicit
Global.i	iEvent, iQuit


If OpenWindow(1, 0, 0, 500, 300, "PureBasic Window - GetParent_ Test - PanelGadget Problem", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
	PanelGadget(2, 50, 20, 300, 200)
	ButtonGadget(3, 50, 70, 100, 50, "Button 1 (ID 3)")				; Button 3 liegt NICHT in einer Registerkarte des Panels und ist somit IMMER sichtbar
	AddGadgetItem (2, -1, "Panel 1")						; Registerkarte zum Panel hinzufügen
	ButtonGadget(4, 180, 70, 100, 50, "Button 2 (ID 4)")				; Button 4 in der Registerkarte erstellen.
	AddGadgetItem (2, -1, "Panel 2")						; nächste (leere) Registerkarte hinzufügen
	CloseGadgetList()								; Gadgetliste schließen.
	
	Debug "Parent: " + Str(GetProp_(GetParent_(GadgetID(3)),"PB_ID"))		; Korrekte Rückgabe '2' der Panel ID, aber sinnlos, da Button nicht IN Registerkarte liegt
	Debug "Parent: " + Str(GetProp_(GetParent_(GadgetID(4)),"PB_ID"))		; Falsche Rückgabe '0' der Panel ID!? Button liegt aber richtig IN Registerkarte.
	
	; --- Main eventloop --------------------
	Repeat
		iEvent = WaitWindowEvent()
		If iEvent = #PB_Event_CloseWindow
			iQuit = 1
		EndIf
	Until iQuit = 1
	
EndIf

End

Re: GetParent_ PanelGadget Problem

Verfasst: 14.12.2022 18:18
von mk-soft
Das war schon immer blöd. Du must die Children vom PanelGadget durchsuchen bis du dein Button findest.

Link Gefunden: https://www.purebasic.fr/english/viewtopic.php?t=67722

Re: GetParent_ PanelGadget Problem

Verfasst: 14.12.2022 22:06
von jacdelad
Ich kann es gerade nicht probieren, aber vielleicht geht auch

Code: Alles auswählen

GetAncestor_(GadgetID(.....), #GA_ROOT)