> Я решила пока оставить свой код как есть, наверное, он правильный.
Ну как он может быть правильным? После создания и отображения форма сразу уничтожается (по коду), но продолжает отображаться на экране и нормально функционировать... В голове не укладывается, это из разряда - удивительно, но факт! Ярослав, пролейте свет на этот вопрос, самому уже интересно стало. А я бы сделал так:
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, Unit2,
FMX.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f: TForm2;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
begin
f := TForm2.Create( nil );
f.Show;
end;
end.
unit Unit2;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.fmx}
uses
Unit1;
procedure TForm2.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
f := nil;
end;
end.
То есть закрывающаяся форма сама уничтожает экземпляр объекта, связанного с ней (в момент закрытия формы мы точно знаем, что она нам больше не нужна). Это тоже не самый изящный код, но по сравнению с вашим этот мне кажется немного правильнее...