Danke für Eure erhellenden Antworten. Natürlich lerne ich gern dazu. Einen "Krieg" anzuzetteln, war das Letzte, was ich mit meiner Fragestellung wollte.
...
Wie man Instanzen aufräumt sollte eigentlich bekannt sein und gehört zum Basiswissen:
...
Vermutlich bezog sich das auf mich. Und damit muss ich zugeben, dass mir Basiswissen fehlt. In der Regel lasse ich über meinen "fertigen" Code FastMM drüber laufen und evtl. Speicherlecks anzeigen. Bislang habe ich noch immer aufräumen können. Ich bin mir auch nicht wirklich sicher, ob wir nicht vom Selben reden. Denn das übliche Konstrukt ist mir trotzdem bekannt:
Delphi-Quellcode:
Procedure Example;
Var
SL : TIrgendwas;
Begin
SL:=TIrgendwas.Create;
Try
SL.TuEtwas;
Finally
SL.Free;
End;
End;
Ich habe jetzt aber konkret das Problem, dass meine (Object)Liste und die tatsächlich in den TabSheets vorhandenen Forms auseinanderfallen können. Denn mir fehlt immer noch das Wissen und auch eine Idee, wie die angedockte Form den Umstand des Schließens und damit das Löschen aus dem Tabsheet an das Hauptprgramm/-form weiterleitet.
Die Änderung des TabSheets wird mir über
TPageControl.OnChange
mitgeteilt. Aber wie filtere ich jetzt das verschwundene Fenster aus meiner Liste? Eine Idee wäre natürlich einen Zugriff zu machen, damit dann künstlich eine
Exception zu erzeugen und das betreffende Fenster zu löschen;
so klappt es jedenfalls. Ich kann mir aber kaum vorstellen, dass das so legitim ist:
Delphi-Quellcode:
Procedure TMainForm.PCPicsChange(Sender: TObject);
Var
I : Integer;
lDockForm : TDockForm;
Begin
I:=0;
While (fPicList.Count > I) Do
Begin
lDockForm:=fPicList.Items[I];
Try
lDockForm.RBorgjpg.Checked;
Inc(I); // <- hat geklappt, ist also noch vorhanden
Except
fPicList.Delete(I);
End;
End;
End;
Daher eben nochmal meine Frage, wie man das macht
richtig?
Gruß, Alex