Ver Mensaje Individual
  #5  
Antiguo 05-03-2009
Efren2006 Efren2006 is offline
Miembro
 
Registrado: feb 2006
Posts: 178
Reputación: 21
Efren2006 Va por buen camino
Cita:
Empezado por jconnor82 Ver Mensaje
Segun lo q haz puesto es logico q entre en un loop infinito, porque, al ejecutar la TForm(Screen.Forms[idx]).Close nuevamente va a entrar a FormCloseQuery y asi susesivamente, lo q podrias hacer es en vez de usar FormCloseQuery usar el evento OnClose.


Código Delphi [-]procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
idx:Integer;
begin
if Application.MessageBox('Desea Salir del Sistema ...?','Salir',
MB_YESNO+MB_ICONQUESTION+MB_DEFBUTTON2) = IdYes Then
begin
for idx:=Screen.FormCount-1 downto 1 do
begin
if TForm(Screen.Forms[idx]).Name<>'' Then
if TForm(Screen.Forms[idx]).Owner=Self Then
TForm(Screen.Forms[idx]).Close;
end;
end else
Action := caNone;
end;




No lo he probado, y tambien depende en q forma estes usando el evento, supongo y se esta ejecutando en el formulario principal, es una aplicacion MDI??

Ya coloque dicho evento en el evento FormClose, igual queda en el loop, entiendo porque piensa que deberia quedar en el lopp, pero no es asi porque yo estoy cerrando son los formularios abierto a partir del formulario prinicipal, tambien valide esto colocando la siguiente pregunta

Código Delphi [-]
 
 if TForm(Screen.Forms[idx]).Name<>Name Then


Mi formulario prinicipal esta creado
Código Delphi [-]
FormStyle = FsNormal


El problema pareciera que cuando ejecuto el evento Close del formulario no esta haciendo el FREE ,, pero ya verifique eso en el formulario base.. la verdad ya he probado de todo..
Responder Con Cita