Ver Mensaje Individual
  #4  
Antiguo 03-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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;

  { Si el hijo se muere y ya no hay más (MDIChildCount = 0) ... }
  if (AComponent is TFormHijo) and (Operation = opRemove) and (MDIChildCount = 0) then
    ActualizarMenus;
end;

// Saludos

Última edición por roman fecha: 03-10-2006 a las 19:58:14.
Responder Con Cita