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