Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-02-2012
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
cerrar todos las ventanas hijas

Estimados, tengo la siguiente situación.
Una aplicación MDI, en la ventana hija en el evento ONClose lo siguiente.

Código Delphi [-]
procedure Tnueva_ocform.FormClose(Sender: TObject; var Action: TCloseAction);
var res: integer;
begin
res :=  (application.MessageBox(('¿Deséa guardar la orden de compra actual?'),'Atención',MB_YESNOcancel));
case res of
2: action:= canone; // cancelar
7: Action := caFree; // NO
6: begin             // SI
   action:= cafree;
   showmessage('guardar');
   end;
end
end;

Ahora bien, necesito un procedimiento en el formulario principal para cerrar todos las ventanas hijas, y que me entregue (puede ser un una variable de tipo boolean), si es que se cerraron todas las ventanas, ya que si se fijan en el evento OnClose, está la opción de cancelar el cierre de la ventana.

El codigo del procedimiento para cerrar todas las ventas está así, pero necesito saber si se cerrar todas antes de continuar

Código Delphi [-]
var i: integer;
begin
For i:=MDIChildCount-1 downto 0 do
begin
MDIChildren[i].Close;
end;

// codigo en caso de cerrar todas las ventanas hijas

end;

Alguna idea?

Gracias
Responder Con Cita
  #2  
Antiguo 06-02-2012
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
una alternativa es ejecutar el procedimiento OnClose desde el mainform, pero no se que parametros pasarle.

Código Delphi [-]
procedure Tmainform.Button1Click(Sender: TObject);
var i: integer;
begin
For i:=MDIChildCount-1 downto 0 do
begin
//MDIChildren[i].Close;
mdichildren[i].OnClose(nil, cafree);  // que parametro deberás ir acá??

end;
end;
Responder Con Cita
  #3  
Antiguo 06-02-2012
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Cita:
Empezado por mjjj Ver Mensaje
una alternativa es ejecutar el procedimiento OnClose desde el mainform, pero no se que parametros pasarle.

Código Delphi [-]
procedure Tmainform.Button1Click(Sender: TObject);
var i: integer;
begin
For i:=MDIChildCount-1 downto 0 do
begin
//MDIChildren[i].Close;
mdichildren[i].OnClose(nil, cafree);  // que parametro deberás ir acá??

end;
end;
No estas llamando al procedimiento Close sino al evento Onclose
El codigo deberia ser asi:

Código Delphi [-]
procedure Tmainform.Button1Click(Sender: TObject);
var i: integer;
begin
For i:=MDIChildCount-1 downto 0 do
     MDIChildren[i].Close;//Solo llamar a close si has programado algo en onclose se ejecutara solo
end;
Responder Con Cita
  #4  
Antiguo 06-02-2012
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
mjjj Va por buen camino
así es como está, está programado el evento OnClose del formulario hijo. El problema es que nose si se cerraron todos los formulario hijos, ya que en la programación del evento OnClose tiene la opción de cancelar.

Es por esto que trato de ejecutar el evento OnClose desde el formulario principal pasandole ciertos parametros, pero nose como hacerlo.... se puede??

Código Delphi [-]
procedure Tmainform.Button1Click(Sender: TObject);
var i: integer;
begin
For i:=MDIChildCount-1 downto 0 do
begin
//MDIChildren[i].Close;               // con esto cierro todo, pero nose si en algún formulario hijo cancelé el evento close.
mdichildren[i].OnClose(nil, cafree);  // estot podrá funcionar? que parametro debería ir acá??
end;
end;

Saludos.
Responder Con Cita
  #5  
Antiguo 06-02-2012
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Y para q necesitas eso? Cuando una ventana hija cancela su cierre queda en Mdichildcount. Solo verifica si mdichildcount es 0

Última edición por Caminante fecha: 06-02-2012 a las 18:52:06.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ventanas mdi hijas en cascada.. lbidi Varios 1 14-04-2011 17:25:30
Ventanas hijas detras de controles aog Varios 0 11-03-2008 18:24:43
Ventanas Hijas en Aplicacion MDI Esau OOP 6 06-11-2007 18:23:56
Recorrido de ventanas hijas sur-se OOP 3 23-08-2004 11:43:10
Ventanas MDI Hijas LucianoRey OOP 4 25-02-2004 01:28:32


La franja horaria es GMT +2. Ahora son las 00:49:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi