Hola.
Solo agregar que si el formulario ha sido liberado con el procedimiento
Free la función
Assigned nos indicará que el objeto (form) está creado y arrojará una excepción cuando intenten usarlo.
Ejemplo:
Código Delphi
[-]
uses Unit2;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Assigned(Form2) then
Form2.Show;
end;
La solución es poner la variable del formulario a nulo ya sea asignándolo directamente, o usando el procedimiento
FreeAndNil.
v.gr.:
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.Free;
Form2 := nil;
end;
Saludos