Die Selbstzerstörung besser so:
Delphi-Quellcode:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
Und um herauszufinden, ob das Form2 existiert wäre es besser dieses in Screen.Forms zu suchen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
F: TForm;
I: Integer;
begin
for I := 0 to Screen.FormCount - 1 do
begin
F := Screen.Forms[I];
if F is TFrom2 then
begin
ShowMessage('Form 2 exists, opening...');
F.Visible:=true;
F.BringToFront;
Exit;
end;
end;
ShowMessage('Form 2 does not exist, creating...');
F:=TForm2.Create(self);
F.Visible:=true;
F.BringToFront;
end;
nur hingetippt, nicht getestet!
Die Variable Form2 würde ich löschen.