Ver Mensaje Individual
  #4  
Antiguo 27-08-2004
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
¿Y por qué privar al usuario de métodos tradicionales para cerrar una ventana habiendo otras formas de solucionar esto?

Al momento de construir un formulario hijo:

Código Delphi [-]
with TChildForm.Create(Self) do
  // Pedirle al hijo qe nos avise cuando se muera
  FreeNotification(Self);

// Reacomodar ventanas
Tile;

Para recibir la notificación de defunción del hijo redefinimos el método Notification del padre:

Código Delphi [-]
procedure TMainForm.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited;

  // Si la noticia viene de un hijo y éste se ha muerto, reacomodar ventanas
  if (AComponent is TChildForm) and (Operation = opRemove) then
    Tile;
end;

Para asegurar que el hijo muera usamos su evento OnClose:

Código Delphi [-]
procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

// Saludos
Responder Con Cita