Ver Mensaje Individual
  #3  
Antiguo 18-04-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Reputación: 21
gluglu Va por buen camino
He optado por una variable pública en el Formulario principal (MainCanClose) que si se opta por cancelar la operación de cierre, se pone al valor deseado dentro del form Child que se está cerrando en ese momento.

... lo que me obliga a modificar todas las rutinas de cierre de todos los formularios MDIChild para incluir esa llamada a la variable del formulario principal.

Código Delphi [-]
type
  TMainform = class(TForm)
...
  public
    MainCanClose : Boolean;
....
    
procedure TMainform.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  i : Integer;
begin

  if MDIChildCount <> 0 then begin

    MainCanClose := True;

    for I := 0 to MDIChildCount - 1 do begin
      MDIChildren[i].Close;
      if not MainCanClose then begin
        CanClose := False;
        Exit;
      end;
    end;

  end;

end;

Código Delphi [-]
procedure TMDIChildCualquiera.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 
  ...
 
  If not PreguntadeCierre then begin
    MainForm.MainCanClose := False;
    Action := caNone;
  end;
 
  ...
 
end;

Si alguien sabe una solución mejor, sin tener que modificar todos los MDIChild, pues le agradecería mucho su comentario.

Saludos
__________________
Piensa siempre en positivo !

Última edición por gluglu fecha: 18-04-2007 a las 20:18:16.
Responder Con Cita