Dynamische Komponenten zur Laufzeit freigeben
-
Ich habe auf einem Panel zur Laufzeit diverse Komponenten mit new erstellt. Wie kann ich diese freigeben, ohne ihre Namen zu kennen? Einfachhaltshalber möchte ich alle Komponenten auf dem Panel entfernen, welche alle auch zur Laufzeit dynamisch erstellt wurden. Wie geht soetwas?
-
Hallo
Die komponenten selber unterscheiden nicht zwischen dynamisch und statisch. Wenn du in dem Panel nur dynamisch erstellte Komponenten hast die alle gelöscht werden sollen dann kannst du die Methode DestroyComponents benutzen.
Ansonsten must du dir die dynamischen Komponenten eben markieren. Am besten in einem extra Array, siehe auch FAQ hier im Forum.bis bald
akari
-
Wenn das Panel als Owner angegeben wurde, reicht es ja, das Panel zu destruieren.
-
Setzt man dafür einfach "Panel = NULL"?
-
Hallo
Wenn du das "destruieren" meinst : Nein du must schon delete auf die Komponente anwenden.
bis bald
akari
-
Nein, ja fürs destruktieren muss man es löschen, aber ich will ja nur das entfernen was drauf ist, wobei das mit NULL wohl auch nicht so klappen würde.
-
Hallo
Wo ist das Problem?
Das was du löschen willst (also auch nicht wieder woanders zuordnen willst) must du mit delete löschen. Den Parent auf NULL zu setzen würde das Control bestenfalls verstecken.bis bald
akari
-
Hallo,
Rappel schrieb:
Nein, ja fürs destruktieren muss man es löschen, aber ich will ja nur das entfernen was drauf ist...
Und wo liegt nun das Problem mit PanelXYZ->DestroyComponents(), welches akari zu Anfang vorgeschlagen hat? Warum kannst du das nicht benutzen???
-
Total überlesen.
omg! wtf! :schland: ^^
Danke für die Hilfe! Das ist doch was was ich suchte.