FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Gracias engranaje y Neftali por responder:
Cita:
Cita:
Probé declarándola dentro de la clase, en la sección privada y funciono...Ahora mi pregunta es ¿porque si siendo 2 instancias de form diferentes dicha variable tiene este comportamiento...? podrías ser mas explicito con esto: Cita:
Saludos... |
#2
|
|||
|
|||
Tendrías que revisar el ambito de las variables... los dos asuntos se refieren a eso.
A grandes rasgos una variable según donde la declares tiene un ciclo de vida y una accesibilidad distinta. Las que se añaden como privadas o publicas dentro de una clase se crearan cuando se cree una instancia esa clase y se destruiran cuando se destruya esa instancia. Ya dependiendo de si la declaras public o protected podra accederse a ella facilmente con nombreDeInstancia.nombreDeVariable o solo podra accederse desde dentro de la misma clase. Como ves en este caso lo que habrá realmente será una variable distinta por cada instancia. Pero en cualquer unit puedes declarar variables antes de la implementation y fuera de cualquier clase. Esa variable podria considerarse global y sera accesible desde la propia unit o desde cualquier otra que la tenga en el uses. Pero en este caso la variable (vuelvo a decir que a grandes rasgos) se creará cuando se inicia la aplicación y se destruirá cuando la aplicación se destruya. Por otro lado se pueden declarar variables dentro de un procedimiento o una función (en tu caso dentro de la acción) pero en ese caso esas variables son locales y solo existiran dentro de esa función, una vez se salga seran destruidas. En tu caso creas una instancia de un objeto y lo asignas a una variable, pero con ella no vas a hacer nada será destruida y tu instancia seguia existiendo pero realmente solo vas a poder acceder a él a traves de su handle. Sería lo mismo, creo que lo que puse en mi ejemplo hacer un create del form sin asginarselo absolutamente a nada. Si el único motivo por el que necesitabas una variable era acceder a un metodo de la instancia del objeto desde fuera de este bastaria con llamar al método dentro de un with. Espero no haberme liado demasiado y que me hayas entendido, de todas formas si buscas algo mas acerca de la vida de las variables en delphi fijo que lo encuentras bien explicado en algún sitio. |
#3
|
|||
|
|||
Gracias engranaje,
Comprendo lo que mencionas respecto a la accesibilidad de las variables, en función del lugar en que se declaren, pero asumí que el solo hecho de declararla dentro del cuerpo del form la haría parte de la instancia creada sin que sus datos fueran compartidos por las demás instancias. Respecto a lo que mencionas de la variable que sirve de contenedor para la creación del form y su ciclo de vida, me asalto la duda, cuando se destruye la instancia creada de cada forma, ¿cuando se invoca el evento close del form, o cuando se destruye el form padre que crea dichas instancias, o debo destruir yo las instancias después de cerras estas..? Saludos... |
#4
|
|||
|
|||
Lo mejor seria que en el onclose del form hicieras un
Puedes echarle un ojo a este hilo, igual te aclara algo mas el asunto: http://www.clubdelphi.com/foros/showthread.php?t=4904 |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
problemas con Forms | sexshop_3 | Varios | 4 | 10-08-2010 18:41:33 |
Problemas con Forms stayontop | JuanchoArg | OOP | 3 | 18-05-2008 11:59:07 |
problemas con los forms | anto1178 | Varios | 3 | 26-08-2006 01:15:49 |
Problemas Con Forms | herodes | Varios | 0 | 10-12-2004 13:15:50 |
Problemas con Forms y querys | vetustas | Conexión con bases de datos | 12 | 18-11-2003 21:28:08 |
|