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: 3701
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: 348
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
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)
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Antworten