Cierto, no había caido en eso. Pero a ver, lo que haces puede darte problemas por varias razones:
1. Se aconseja el uso de Free en lugar de Destroy;
2. No se aconseja destruir un formulario desde alguno de sus eventos y en su lugar debe usarse Action := caFree en el evento OnClose.
Te pongo una forma de hacer lo que deseas. Esta ya la he probado
1. Al formulario hijo déjalo sólo con el Action := caFree en el OnClose.
2. Cuando crees un nuevo formulario hijo, le pides que notifique a su padre cuando fallezca
Código Delphi
[-]
with TFormHijo.Create(...) do
begin
FreeNotification(Self);
end;
3. En el formulario padre redefine el método Notification para recibir tal notificación:
Código Delphi
[-]
type
TFormPadre = class(TForm)
protected
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
end;
implementation
procedure TFormPadre.Notification(AComponent: TComponent; Operation: TOperation);
begin
inherited;
if (AComponent is TFormHijo) and (Operation = opRemove) and (MDIChildCount = 0) then
ActualizarMenus;
end;
// Saludos