Hola,
Prueba a liberar el formulario luego de mostrarlo, y desde el mismo sitio en que este se muestra. Es lo que suele hacerse: no hace falta que codifiques nada en el formulario a mostrar y luego cerrar. Puedes usar botones y sus propiedades "ModalResult" para saber cómo se "cerró" el formulario. Ya digo, lo "normal" es hacer algo así:
Código Delphi
[-]
with TForm2.Create() do
try
if (ShowModal() = mrOk) then
begin
end;
finally
Free();
end;
Una cosa más: si tienes el formulario (en el ejemplo "TForm2") de manera que se cree al iniciarse la aplicación, puedes "quitarlo" de la lista, es decir, no es necesario que se cree (probablemente) al inicio de la aplicación, porque, como ves, es posible crearlo cuando sea preciso y liberarlo cuando ya no lo sea.