![]() |
Delphi-Version: 7
ERLEDIGT - Komponenten nach Schließung entfernen
Moin!
Durch ein Button auf dem Hauptformular öffnet sich ein zweites, auf welchem je nach überlieferten Daten dynamisch Labels und Comboboxen im Show-Ereignis erzeugt werden. Schließe ich nun das zweite Fenster und öffne es ein zweites Mal, so kommt die Fehlermeldung, dass die Komponente mit dem Namen xy schon existiert. Mit einem .Free oder .Destroy werden die erstellten Kompontenten leider nicht entfernt. Wie kann ich diese im Close-Ereignis entfernen? |
AW: Komponenten nach Schließung entfernen
Werden Sie mit einem .Free wirklich nicht entfernt, oder wird das .Free evtl. gar nie aufgerufen, weil Du es in einem OnDestroy hast, das nie aufgerufen wird?
Bist Du mit dem Owner-Konzept vertraut? Mit welchem Owner erstellst Du die Komponenten, und warum verlässt Du Dich nicht darauf, daß der sich darum kümmert? |
AW: Komponenten nach Schließung entfernen
Wer ist der Owner? Ich würde das Formular auch dynamisch erzeugen oder alle erzeugten Komponenten einem Panel o.ä zuordnen, den ich dann Freigeben würde.
|
AW: Komponenten nach Schließung entfernen
Zitat:
Delphi-Quellcode:
.Free benutze ich im OnClose-Ereignis.
cbTables := TComboBox.Create(self);
|
AW: Komponenten nach Schließung entfernen
.Free auf was?
|
AW: Komponenten nach Schließung entfernen
Entweder Du gibst das Formular komplett frei (FreeAndNil) wenn Du es schließt, oder Du schaust vor dem Erzeugen ob die Komponenten nicht schon das sind, oder Du gibst sie wirklich frei.
Wie erzeugst Du sie (Owner)? Wie gibst Du sie (vermeindlich) frei? Kannst Du mal die entsprechenden Codestellen einstellen? |
AW: Komponenten nach Schließung entfernen
Zitat:
Delphi-Quellcode:
Auf die erstellten Kompontenten.
cbTables.Free;
|
AW: Komponenten nach Schließung entfernen
Erstmal: wie stellst Du denn sicher, daß das Form-Objekt beim Schließen auch freigegeben wird?
Weiter, siehe Anwerkung in Sachen Owner: warum gibst Du die Form als Owner an, wenn Du das dann auch noch selber freigibst? |
AW: Komponenten nach Schließung entfernen
Danke für die schnelle hilfe. :thumb:
Ich lasse das Formular nun nicht mehr automatisch erzeugen, sondern nur noch per ButtonClick, da es sonst im Hintergrund weiterläuft, richtig? |
AW: Komponenten nach Schließung entfernen
Ja, beim Schliessen bleibt es bestehen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz