Ver Mensaje Individual
  #5  
Antiguo 18-04-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Se me ocurre lanzar el evento OnCloseQuery de cada mdichild, así sabemos si quiere abortar o no.

Supongo que los mdichilds se liberan de memoria al cerrarlos, o tendríamos que restaurar su evento OncloseQuery, que ya son palabras mayores
Código Delphi [-]
procedure TMainform.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  i : Integer;
  Continuar:Boolean;
begin
  if MDIChildCount <> 0 then
    for I := 0 to MDIChildCount - 1 do 
    begin
      if Assigned(MdiChildre[i].OnCloseQuery) then
      begin
         MdiChildre[i].OnCloseQuery(Self, Continuar);
         if Continuar then
         begin
           MdiChildre[i].OnCloseQuery := nil; // quitamos el evento, para que no se repita.
           MdiChildre[i].Close; // ya sabemos que se cerrará sin problemas
         end
         else
           Exit;
      end
      else 
          mdichildren[i].Close; // este no se puede quejar al cerrarlo, no tiene OnCloseQuery asignado
    end;
end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita