Hola:
Mira segun mi humilde concepto, creo que deberias crear los objetos y despues de usarlos destruirlos, por ejemplo:
Código Delphi
[-]
procedure xxx
var MiFormulario:TForm1;
begin
MiFormulario := TForm1.create(self); MiFormulario.showmodal; MIFormulario.Free; end;
Una ultima cosita para ocultar un formaulario no es con el evento close sino con el evento hide.
Saludos.