Richtig, du kannst nicht selbst die von PB_Any erzeuge Nummer nutzen, um ein neues Gadget mit dieser Nummer zu erzeugen!Delle hat geschrieben:Ja was denn nun? Weiter oben schreibst Du noch das es NICHT geht:STARGÅTE hat geschrieben:Wenn ich mit PB_Any ein Objekt erzeugt, so kann ich die Nummer normal verwenden wie eine "Nummer" halt.
Mit #PB_Any wird ein "verbindunsloses" Element für das Objekt erstellt und du bekommst in dem Fall eine Art Adresse (Objektnummer) zurück. Diese Nummer selbst zu verwenden geht nicht.
Was du aber vorhin vorhattest!
Du kannst die Nummer aber sehrwohl für alle andere Befehle verwenden.
Das Gadget wird aber dynamisch erzeugt, weil ich jederzeit weitere erzeugen kann, ohne deren Nummer zu kennen und ohne andere (ausversehen) zu überschreiben.Delle hat geschrieben:Hier benutzt Du ja einen festen Namen "gadget", dynamisch ist das natürlich nicht:
gadget = ButtonGadget(#PB_Any, 10, 10, 300, 30, "Drücken um meine Position zu ändern.")
Da du ja so scharf auf Dynamik bist, hier ein Code, wo 5 Buttons/Sekunde erzeugt werden, die in einer eigenen Liste verwaltet werden und auch wieder gelöscht werden können.
Code: Alles auswählen
Enumeration
#Window
#Timer
#Gadget_Clear
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
ButtonGadget(#Gadget_Clear, 0, 0, 150, 20, "Alle Button freigeben")
AddWindowTimer(#Window, #Timer, 200)
Global NewList MyButton.i()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Timer
Select EventTimer()
Case #Timer
AddElement(MyButton())
MyButton() = ButtonGadget(#PB_Any, Random(700), Random(550)+20, 100, 30, "Zufalls Button "+Str(Random(9999)))
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #Gadget_Clear
ForEach MyButton()
FreeGadget(MyButton())
DeleteElement(MyButton())
Next
Default
Debug GetGadgetText(EventGadget())+" , interne Nummer: "+Str(EventGadget())
EndSelect
EndSelect
ForEver