Hola...
El problema que puedes tener es que cuando la variable
Form4 después de destruir la forma no queda apuntando a
nil, así que al hacer:
Código Delphi
[-]
if not Assigned(Form4) then
la segunda vez, esta te devolverá falso...
Para corregir esto puedes hacer algo como esto en
Form4
Agregas el evento OnDestroy:
Código Delphi
[-]
procedure TForm4.OnDestroy(Sender: TObject);
begin
Form4 := nil
end;
Saludos...