Einzelnen Beitrag anzeigen

arnof

Registriert seit: 25. Apr 2013
1.252 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#18

AW: Forms & ARC "spielereien"

  Alt 3. Jul 2013, 19:55
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
Miniaturansicht angehängter Grafiken
bildschirmfoto-2013-07-03-um-20.50.16.png  
  Mit Zitat antworten Zitat