Para preguntar en cualquier parte de tu programa si uno de tus formularios concretos está o no creado, al menos yo, pregunto por
Código Delphi
[-]if Asigned(MiForm) then ....
La única manera de que te devuelva False, es decir, que el Formulario no está creado, es que MiForm sea igual a Nil
Si Haces sólo un Free del formulario, no se pone a 'Nil' y por lo tanto la pregunta anterior siempre te dará True incluso aunque hayas 'liberado' tu formulario con Free.
Por eso FreeAndNil, o simplemente también sirve :
Código Delphi
[-]MiForm.Free
MiForm := nil;
... sobre gustos ...