Forum: Programmieren allgemein
by dummzeuch,
29. Jun 2019
Ich bin versucht, die Doku in Zweifel zu ziehen (wäre nicht das erst Mal, dass da Mist steht), aber ich werde mir gleich mal den Source dazu ansehen und es testen.
OK, Du hast Recht und die Doku stimmt:
destructor TWinControl.Destroy;
var
I: Integer;
Instance: TControl;
begin
Forum: Programmieren allgemein
by dummzeuch,
29. Jun 2019
Einfache Antwort: Gib dem Frame einen eindeutigen Namen, dann funktioniert FindComponent auch damit.
Kompliziertere Antwort:
Das kommt darauf an, wie Du sie erzeugst. Z.B.:
procedure TMyForm.OnCreate(_Sender: TObject);
var
Frame: TFrame;
begin
Forum: Programmieren allgemein
by dummzeuch,
29. Jun 2019
EDIT: Folgendes stimmte nicht:
Das ist falsch, Du verwechselst hier "Owner" und "Parent". Der Parent gibt nichts frei, nur der Owner.
Schokohase hat Recht, TWinControl.Destroy gibt alle Controls frei.
Aber im Prinzip gilt: Für die Freigabe eines Objekts (auch Controls sind Objekte) sollte immer nur einer zuständig sein:
* Owner (bei Components) - oder
* TObjectList - oder
* der eigene...