Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Variables en forms

0 views
Skip to first unread message

Humberto Higuera

unread,
Aug 17, 2000, 3:00:00 AM8/17/00
to
Hola Grupo!
 
Tengo una duda que siempre me ha estado rondando y es con respecto a "vida" de las variables en las formas dentro de una aplicación. Tengo una aplicación que ejecuta una forma, alli asigno a tres TextBox en el controlsource un nombre de variable de memoria para cada uno (p.ej: m.uno, m.dos y m.tres), estas variables no han sido creadas previamente en mi aplicación. Si salgo de esta forma, y no salgo de la aplicación, cuando vuelvo a entrar a la forma (sin importar si he ejecutado otras formas de la aplicación), vuelve con los valores que le dí a los combos en la ejecución anterior. Por que? No se supone que las variables son locales para cada forma (ya que no las defino publicas en ninguna parte), y al salir de la misma libera dichas variables de memoria? Como hago para eliminarlas de la memoria? Tendría que hacer una release de cada una de las variables de memoria usadas en la forma, al salir de la misma?(lo cual me parece muy engorroso!!)
 
Agradezco su ayuda. Quizas no estoy entendiendo muy bien los conceptos de la OOP y todavia estoy pensando en Fox 2.6.....?.
 
Humberto Higuera

Gerardo Torres

unread,
Aug 17, 2000, 3:00:00 AM8/17/00
to
Si las variables no están declaradas en ningún lado decláralas en el formulario en el INIT()
LOCAL m.1,m.2......
y luego inicialízalas
m.1=0 (usa esto si son numéricos)
m.2=0
 
m.1='' (usa esto si son caracter)
m.2=''
 
cuando tengas los valores de m.1, m.2.. etc.
asigna al control estos valores:
thisform.text1.value=m.1
thisform.text2.value=m.2
.........
 
al cerrar el formulario, este destruira las variables declaradas como locales....
 
 
Saludos.
 
P.D. no olvides quitar las variables del controlsource de los controles

Ricardo P

unread,
Aug 17, 2000, 3:00:00 AM8/17/00
to
Tienes razón, estas pensando como en Fox 2.6.   Te aconsejo lo siguiente:
 
-No utilices en general variables para los controlsources de los forms. No son necesarias. De hecho la expresión: Thisform.textbox1.value es "UNA VARIABLE" en sí misma , entonces para que crear otra..  Si el control esta "bounded" a una tabla, pues pon directamente en su controlsource el nombre del campo de la tabla. por ej.  CLIENTE.NOMBRE. Tampoco aqui es necesario definir variable de memoria alguna.
 
-Claro cuando sea estrictamente necesario sí puedes crear una variable local o private para asignar el valor de algun objeto y usarlo en alguna subrutina.
Las variables públicas se deben evitar en la medida de lo posible, como una buena norma de programacion.  No olvides nunca, te reitero, que los objetos son variables (los puedes ver y utilizar asi).
 
-La orientacion a objetos de VFP sigue ese criterio por eso no es obvio el uso y el "scope" de las variables que se definen en los forms.   Lee el help sobre LOCAL , PRIVATE, PUBLIC.
 
 
 
 
 

--
-----------------------------------------------------
Click here for Free Video!!
http://www.gohip.com/free_video/
Humberto Higuera <hhig...@tutopia.com> escribió en el mensaje de noticias eYeLvsFCAHA.82@cppssbbsa04...

Paco Simarro

unread,
Aug 17, 2000, 3:00:00 AM8/17/00
to
Cualquier variable que no se declara explícitamente, es considerada automáticamente como PUBLIC. Y eso es lo que ocurre en el ejemplo que planteas.
 
Saludos.

Ernesto J. Espinosa H.

unread,
Aug 18, 2000, 3:00:00 AM8/18/00
to
Toda variable no declarada se convierte en tipo Private. Es visible en todos los siguientes niveles del Stack.
Si se  declara en el primer nivel tiene el mismo comportamiento que una variable Public
 
Saludos
 
"Paco Simarro" <psim...@interbook.net> escribió en el mensaje news:OfTfIFTCAHA.65@cppssbbsa04...

Victor Espina

unread,
Aug 21, 2000, 3:00:00 AM8/21/00
to
Esta es la respuesta correcta. Me quitaste las palabras de la boca, Ernesto.
 

--
***************************************
Victor J Espina S
http://www.mitrompo.com/vespina
 
 
Ernesto J. Espinosa H. <ej...@correo.azc.uam.mx> escribió en el mensaje de noticias #LrDvNXCAHA.255@cppssbbsa05...

Paco Simarro

unread,
Aug 22, 2000, 3:00:00 AM8/22/00
to
    Gracias Ernesto.
   
 
 
Ernesto J. Espinosa H. <ej...@correo.azc.uam.mx> escribió en el mensaje de noticias #LrDvNXCAHA.255@cppssbbsa05...

ZeroCL

unread,
Aug 24, 2000, 3:00:00 AM8/24/00
to
Y cual es el primer nivel en un form
A veces declaro variables en el init (solo m.uno=0) y en algunos eventos no les puedo acceder
O en un valid trato de hacer un set filter to thisform.text1.value
                                             thisform.combo.requery
y me marca que thisform solo se puede usar dentro de un metodo 
 
Y luego tambien ayer estaba en un form donde membrete era caracter (son numeros pero requeria el valor en un combo para que no me diera la pocision) y luego ejecute (cerrando el anterior) otro donde lo tenia en un spinner (numerico ) y pacs invalid value (la variable todavia existia)
 
Este tipo de cosas me pasan y no logro ver como   declarar una variable que dure en todo el form y solo en ese form.
 
Bueno ya los hice bolas pero asi quedaron mis ideas ?¿
PD Tengo como 3 meses usando VFP y tenia como 6 años que no usaba FPW2.5
 
Salu2

--
    `\|||/         Wishing you the Best!
     (@@)
  ooO_(_)_Ooo________________________________
|_____|_____|_____|_____|_____|_____|_____|_____|
|___|____|_____|_____|_____|_____|_____|_____|____|
 
"Paco Simarro" <psim...@interbook.net> escribió en el mensaje news:OdU5f3A...@cppssbbsa02.microsoft.com...

Oscar Muñoz Muñoz

unread,
Sep 1, 2000, 10:50:00 AM9/1/00
to
Utiliza las variables dentro del mismo evento, si quieres utilizar valores que no pierdan su valor para poder utilizarlos en todo el formulario lo mejor en mi opinión es crear nuevas propiedades del formulario, de esa manera siempre podas hacer referencia a esos valores de la siguiente manera: nombre_del_formulario.nombre_de_la_propiedad
ZeroCL <Zer...@Hotmail.com> escribió en el mensaje de noticias u4CMrJjDAHA.62@cppssbbsa04...
0 new messages