Ver Mensaje Individual
  #2  
Antiguo 18-04-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Lo primero, cuando crees un bucle para cerrar las ventanas deberías hacerlo en orden inverso, de lo contrario al ir cerrando las ventanas los índices cambiaran y puede darte problemas:
Código Delphi [-]
  for I :=MDIChildCount - 1 downto 0 do

Aunque se me ocurre otra solución, interrogar ventana a ventana si pueden cerrarse, y si alguna responde que no abortamos el proceso.
Código Delphi [-]
procedure TMainform.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  i : Integer;
begin
    for I := 0 to MDIChildCount - 1 do 
      if not MDIChildren[i].CloseQuery then
      begin
        CanClose:= FALSE;
        Exit;
      end;
    for I :=MDIChildCount - 1 downto 0 do
       MDIChildren[i].Close;
end;
Responder Con Cita