GetParent_ PanelGadget Problem

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PureUser1966
Beiträge: 29
Registriert: 02.02.2017 21:03
Wohnort: Cologne / Germany

GetParent_ PanelGadget Problem

Beitrag 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
move.w #$7fff, $dff09a
ILLEGAL
Benutzeravatar
mk-soft
Beiträge: 3844
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: GetParent_ PanelGadget Problem

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
jacdelad
Beiträge: 404
Registriert: 03.02.2021 13:39
Wohnort: Riesa
Kontaktdaten:

Re: GetParent_ PanelGadget Problem

Beitrag von jacdelad »

Ich kann es gerade nicht probieren, aber vielleicht geht auch

Code: Alles auswählen

GetAncestor_(GadgetID(.....), #GA_ROOT)
Guten Morgen, das ist ein schöner Tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Antworten