Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-03-2005
CarmaZone CarmaZone is offline
Miembro
 
Registrado: mar 2005
Posts: 59
Poder: 20
CarmaZone Va por buen camino
con o sin cafree???

hola, al cerrar mi aplicacion (mi formulario madre) he puesto este codigo

Cita:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if MessageDlg(' ¿ Quieres cerrar la ventana ?', mtCustom,[mbYes, mbNo], 0)= mrYes then
begin
//Action:=caFree;
end
else
Action:=caNone;
end;
He estado probando y con y sin el cafree la cierra igual, me gustaria saber ke es mas conveniente. Creo ke si no pongo el cafree tal vez se kedara algo consumiendo memoria, y otra cosita relacionada, es mejor ponerlo aki o en el onclosequery pq he leido otros post y no me keda clara la diferencia, ya ke pone ke el onclosequery lo cierra pero hace ke no sea visible y luego se ejecuta el onclose y se destruye liberando memoria. Mas o meno lo entendi asi, pero me gustaria me aclararan para conocer mejor su funcionamiento.

Gracias Y Salu2!!!
Responder Con Cita
  #2  
Antiguo 28-03-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por CarmaZone
He estado probando y con y sin el cafree la cierra igual,
Por defecto, el parámetro Action vale cafree, por eso da igual ponerlo o no. Existen casos especiales, por ejemplo una ventana MDIChild, lleva en el parámetro Action, el valor caMinimize, por tanto al cerrar, se minimiza.

Cita:
Empezado por CarmaZone
es mejor ponerlo aki o en el onclosequery pq he leido otros post y no me keda clara la diferencia, ya ke pone ke el onclosequery lo cierra pero hace ke no sea visible y luego se ejecuta el onclose y se destruye liberando memoria. Mas o meno lo entendi asi, pero me gustaria me aclararan para conocer mejor su funcionamiento.
En el onCloseQuery solamente tienes una variable Boolean CanClose, en ese evento no puedes hacer nada más.

Sin embargo en el evento OnClose, puedes especificar en el parámetro Action:
caNone // no hacer nada
caFree // liberara de memoria
caHide // esconder el formulario
caMinimize // minimizar

Así que tienes más libertad.

En tu caso concreto, estas preguntando al usuario que si quiere cerrar o no, conceptualmente, se asemeja más a la variable CanClose del OnCloseQuery.

Código Delphi [-]
 procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose :=  MessageDlg(' ¿ Quieres cerrar la ventana ?', mtCustom,[mbYes, mbNo], 0)= mrYes
end;

En la práctica, si sólo es para preguntar al usuario, da igual que lo hagas de una forma u otra.

Un saludo
Responder Con Cita
  #3  
Antiguo 28-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
Por defecto, el parámetro Action vale cafree, por eso da igual ponerlo o no
De hecho no es así.

El valor por defecto para formularios SDI es caHide mientras que para formularios MDI es caMinimize.

En el código que expone CarmaZone no da lo mismo. Cuando omite el caFree la ventana se cierra pero sólo se esconde (acción por defecto) y permanece en memoria. Cuando usa caFree la ventana se cierra y se destruye. Así pues, su sospecha

Cita:
Empezado por CarmaZone
Creo ke si no pongo el cafree tal vez se kedara algo consumiendo memoria
es correcta.

// Saludos
Responder Con Cita
  #4  
Antiguo 28-03-2005
CarmaZone CarmaZone is offline
Miembro
 
Registrado: mar 2005
Posts: 59
Poder: 20
CarmaZone Va por buen camino
Pues muxas gracias, mi sospecha era cierta, ya ke abia leido algo de esto por estos foros. Por lo ke descomentare el caFree ya ke lo ke voy a cerrar es el formulario padre. Cuando cierro los formularios hijos pues como habeis comentado le puesto tambien el Action:=caFree para ke se cierre en lugar de minimizarse.

Muchas gracias de nuevo, estoy aprendiendo muchas cosiyas con estos foros, espero no molestar si son cosillas tontas pero estoy haciendo mi proyecto integrado y estOy intentando hacerlo todo correcto y lo mas eficienTe ke pueda y por esa razon expreso mis dudas.

Salu2!!!
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


La franja horaria es GMT +2. Ahora son las 14:08:29.


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