Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: TComponentList: Komponenten sauber freigeben

  Alt 7. Jun 2019, 14:57
Tatsächlich? Ist das so, dass wenn kaskadierte Komponenten in einem bestehenden TWinControl(TForm, TPanel, TabSheet, ...) platziert wurden, diese kaskadierte Komponenten automatisch freigegeben werden sobald der Top-Owner freigegeben wird?
Für Controls gibt es zwei Mechanismen zur Lebensdauerverwaltung in der VCL. Das eine ist der Owner, das wird von TComponent geerbt. Wenn man eine Komponente über den Konstruktor mit einem Owner erzeugt wird die Komponente automatisch zerstört wenn der Owner zerstört wird.

Für Controls spielt aber auch der Parent eine Rolle; TWinControl zerstört automatisch alle Controls in seiner Controls-Liste (die also dieses TWinControl als Parent haben) wenn es selbst zerstört wird. Das kommt bei den meisten Anwendungen zum Tragen bevor die Ownership greift. Ist ein bißchen doppelt gemoppelt, ist aber notwendig, da TWinControls ja ein Window handle haben und Windows dieses Verhalten auch auf der "handle-Ebene" erzwingt.
Peter Below
  Mit Zitat antworten Zitat