PDA

Ver la Versión Completa : ¿cuál es mejor: "close" o "application.terminate"?


unreal4u
02-11-2004, 20:37:53
he revisado en montones de sitios; y algunos dicen que es mejor ocupar "close"; mientras que otros dicen que es mejor ocupar "application.terminate"; también he leido en muchos sitios que son exactamente lo mismo, puesto que cuando uno pone close en un form principal, éste llama a no se qué método que "des"inicializa todas las variables; pero si fueran lo mismo; ¿por qué reciben dos nombres distintos? ¿o acaso es lo mismo que por ejemplo abrir una tabla donde table1.active := true es lo mismo que table1.open?

creo que es una duda bastante técnica; puesto que no he podido encontrar información al respecto... (por lo general, a lo último que recurro es a los foros); así que espero que me puedan ayudar...

de antemano, muchas gracias...

__hector
02-11-2004, 22:29:53
Es lo mismo. Cuando el formulario principal invoca el metodo close, este a su vez envia ciertos mensajes al sistema operativo e invoca application.terminate (segun dice la ayuda de delphi)

Diferencias? Imagino que con el metodo close puedes disparar algunos eventos que no estan disponibles para el application.terminate

Mick
03-11-2004, 10:08:08
Conceptualmente y el la practica no es exactamente lo mismo:

Application.terminate destruye (que no cierra) todos los forms creados y a continuacion se finaliza la aplicacion.

Close "en principio" no tiene que ver con cerrar la aplicacion, esto es una metodo de los objetos TForm y su intencion es cerrar el form actual, como ya se ha explicado en el primer post. El hecho de que si el form a cerrar es el form principal internatemente llame a aplication.terminate es un efecto secundario por asi decirlo.

No es lo mismo destruir un form que cerrarlo, de modo que Application.Terminate, hace un .free de los forms, pero no un .close, eso significa que los eventos OnClose, OnCloseQuery etc no se ejecutan, de modo que el form no tendra opcion de hacer la tipica pregunta: ¿ Hay cambios quiere salir sin guardar las modificaciones ? en el evento onCloseQuery.


Saludos
Miguel

unreal4u
03-11-2004, 15:07:40
muchìsimas gracias Mike, la verdad es que la ayuda de delphi es un poco extensa.

Ahora bien, lo que yo habìa hecho hasta el momento, era lo que sigue:
1.- Al cerrar la aplicaciòn, ya sea por "salir" o por presionar la X; llama al evento OnClose.
2.- Verifico si alguno de los archivos ha sido modificado.
3.- Si es si, entonces guardo, y llamo a un procedimiento que me hace application.terminate.
4.- Si es no, entonces guardo, y llamo a un procedimiento que me hace application.terminate.
5.- Si es cancelar, entonces aborto. (mediante abort;), y no llamo al procedimiento antes mencionado.

segùn de lo que me dices; el hecho de que llame a ese procedimiento està demàs, y podrìa perfectamente obviarlo.

Confìrmame si estoy en lo correcto o corrìgeme (por favor) si estoy mal.

Atte. Camilo Sperberg

mahlon
25-08-2006, 18:00:05
muchìsimas gracias Mike, la verdad es que la ayuda de delphi es un poco extensa.

Ahora bien, lo que yo habìa hecho hasta el momento, era lo que sigue:
1.- Al cerrar la aplicaciòn, ya sea por "salir" o por presionar la X; llama al evento OnClose.
2.- Verifico si alguno de los archivos ha sido modificado.
3.- Si es si, entonces guardo, y llamo a un procedimiento que me hace application.terminate.
4.- Si es no, entonces guardo, y llamo a un procedimiento que me hace application.terminate.
5.- Si es cancelar, entonces aborto. (mediante abort;), y no llamo al procedimiento antes mencionado.

segùn de lo que me dices; el hecho de que llame a ese procedimiento està demàs, y podrìa perfectamente obviarlo.

Confìrmame si estoy en lo correcto o corrìgeme (por favor) si estoy mal.

Atte. Camilo Sperberg


ves k en los foros se encuentra ayuda;)
-------
Saludos

unreal4u
05-03-2007, 11:01:19
ves k en los foros se encuentra ayuda;)
-------
Saludos

claro .. subiendo temas de hace dos años atrás xD http://www.chilehardware.com/foro/images/smilies/sconf.gif

que recuerdos de cuando programaba *sigh*