Ver Mensaje Individual
  #12  
Antiguo 13-09-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.437
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
La otra opción, como ya te he dicho puede ser utilizando un evento. En mi caso más de una vez he utilizado algo similar a esto.

En el formulario MDI que vas a destruir defines un evento tal que así:

Código Delphi [-]
  published
    property MyOnClose:TNotifyEvent read FMyOnClose write FMyOnClose;

Cuando creas ese formulario "enganchas" el evento a un procedimiento tuyo para recibirlo:

Código Delphi [-]
  // creo el form
  Form2 := TForm2.Create(Application);
  // Redirijo el evento a un procedimiento mío
  Form2.MyOnClose := _CerrarForm;
  // Visualiza
  Form2.Show;

Al cerrar el form2 (el MDIChild) antes de destruirlo "aviso" utilizando el evento:

Código Delphi [-]
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  // Antes de destruirlo levantamos el evento
  if Assigned(Self.FMyOnClose) then begin
    Self.MyOnClose(Self);
  end;
  // Mandamos que se libere
  Action := caFree;
end;

Y en el momento de destruir el Form2 (MDIChild) al leventar el evento, llegará el control a mi procedimiento:

Código Delphi [-]
procedure TForm1._CerrarForm(Sender: TObject);
begin
  MessageDlg('Se está cerrando el formulario: ' + TForm(Sender).Name, mtInformation, [mbOK], 0);
end;

Parece más complejo de lo que es, pero en realidad es bastante sencillo.
Te adjunto el código para que veas cómo funciona.
Archivos Adjuntos
Tipo de Archivo: zip CerrarMDI.ZIP (2,7 KB, 9 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita