¿Y pr qué no algo como esto?
Código Delphi
[-]
procedure FormHijoClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
FormHijo := nil;
end;
Y para abrir el formulario hijo:
Código Delphi
[-]
if not Assigned(FormHijo) then
FormHijo := TFormHijo.Create(nil);
// Saludos