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; MdiChildre[i].Close; end
else
Exit;
end
else
mdichildren[i].Close; end;
end;
Saludos