So ich habe es mal getestet und alles geht wie man es gelernt (war mal beim Forumschef in einer Schulung zu iOS ....):
zuerst die zu erzeugende Form:
Code:
type
TFM_Debug = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
FM_Debug: TFM_Debug;
implementation
uses unit1;
{$R *.fmx}
procedure TFM_Debug.FormCreate(Sender: TObject);
begin
Label1.Text:=self.Name;
Form1.Memo1.Lines.Add('Create '+Label1.Text);
end;
procedure TFM_Debug.FormDestroy(Sender: TObject);
begin
Form1.Memo1.Lines.Add('Destroy '+Label1.Text);
end;
Nun das Hauptfenster mit der Debugausgabe:
Code:
uses Unit2;
var FDebug : array of TFM_Debug;
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
FDebug:=nil;
SetLength(FDebug,Trunc(SpinBox1.Value));
for I := 0 to length(FDebug)-1 do begin
FDebug[i]:=TFM_Debug.Create(self);
end;
Button1.Enabled:=False;
Button2.Enabled:=True;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for I := 0 to length(FDebug)-1 do begin
FDebug[i].Close;
FDebug[i].Release;
end;
Memo1.Lines.Add('alle released now Nil');
FDebug:=nil;
Button1.Enabled:=True;
Button2.Enabled:=False;
end;
Im Screenshot seht man das der Destory erst kommt, wenn ich das Array indem ich die Forms ablegt = nil setzte , vorher nicht, da noch eine Refernz darauf besteht