Seit wann ist der Parent für die Freigbae zuständig?! Das wird über den Owner gesteuert und nicht über den Parent
Leider schon immer. Ich war auch geschockt, beim Versuch zur Laufzeit eine Komponente zeitweise auf eine andere Form zu verschieben. (muß man erst den Parent abhängen und dann die Form freigeben)
Der Schuldige:
Delphi-Quellcode:
destructor TWinControl.Destroy;
begin
...
I := ControlCount;
while I <> 0 do
begin
Instance := Controls[I - 1];
Remove(Instance);
Instance.Destroy; <<<<<
I := ControlCount;
end;
...
end;
.Controls für Parent und .Components bei Owner
Logisch ist es ein reiner Fail, aber ich vermute es ist als Kackfix gedacht, für zur Laufzeit erstellte Komponenten, wo die Entwickler zu doof sind den Owner anzugeben.
Ich hätte lieber das Speicherleck, als unverständlich verschwindende Komponenten.