FoxPro/Visual FoxPro - Pregunta para nota...

 
Vista:

Pregunta para nota...

Publicado por Carlos (51 intervenciones) el 14/03/2001 14:29:36
Mi problema es el siguiente:

Tengo un formulario con diferentes controles, la mayor parte de ellos tipo TEXTBOX. Unos pertenecen a campos de alguna tabla, pero otros son controles cuyo contenido son meras variables.

En determinados controles, por ejemplo en el método VALID de un control necesito hacer referencia al valor de otro control. Si lo hago mediante “Dato = Thisform.Control.Value” no tengo problemas, pero como intento referenciar el control por su ControlSource directamente (Dato = Control) me devuelve el error de que “Control” no existe. Esto mismo si que funciona cuando previamente a referenciarlo hago un “Thisform.Refresh”.

El objeto que quiero referenciar tiene el mismo Name y el mismo ControlSource.

¿Hay alguna forma de tener siempre disponible el valor de un control “mirando” solamente el control por su ControlSource sin tener que emitir a cada momento Thisform.Refresh?

También se puede declarar públicas las variables de estos ControlSource para que estén disponibles en todo el formulario, pero no deja de ser un incordio bastante grande.

¿Hay alguna forma de declarar variables privadas para todos los métodos de un formulario y de los objetos contenidos en el de tal forma que al eliminar el formulario las variables se eliminen también?

No se si me he explicado suficientemente, de todas formas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pregunta para nota...

Publicado por Foxperto (894 intervenciones) el 14/03/2001 23:29:37
Hola Carlos:

Bueno, no entiendo bien lo que quieres, de todas maneras con respecto a lo de las Variables, si las quieres publicas para todo el Formulario, las puedes declarar con "Public", en el Evento Load o Init del Formulario y si al salir las quieres eliminar, en el Evento UnLoad, puedes poner Release <NombreVar>.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta para nota...

Publicado por Carlos (51 intervenciones) el 15/03/2001 08:53:22
Pretendo evitar precisamente eso, declarar variables públicas.

Como todos sabemos una variable privada está disponible en el método que las declara y en todos los métodos que cuelgan de él.

Mi pregunta era si existe algún lugar en un form (método, procedimiento, etc) en el que se declara una variable como privada y está disponible para todos los métodos y controles del form, sin necesidad de recurrir a la declaración pública de las variables ni tampoco a definirlas como propiedades del form. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta para nota...

Publicado por Adolfo Huaman (16 intervenciones) el 15/03/2001 03:10:08
Carlos:
Por ejemplo si tienes un control TextBox y su ControlSource = Tabla.campo01

Entonces para hacer referencia al valor del TextBox o bien lo haces mediante Thisform.TextBox.Value o simplemente dirigiendote al controlSource Tabla.Campo01. Osea directamente al campo de la tabla...
Espero haber resuelto tus dudas.

Adolfo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta para nota...

Publicado por Carlos (51 intervenciones) el 15/03/2001 08:49:29
El caso es sobre TextBox cuyo ControlSource no es un campo de una tabla.

Por ejemplo: Tengo un TextBox con las siguientes características:

Name=Dato
ControlSource=Dato

Al inicio del form hago la siguiente asignación:

Dato="Lo que sea"
Thisform.Refresh

Esto hace que el TextBox muestre en pantalla perfectamente su contenido, con lo que, aparentemente el ControlSource del mismo contiene dicho valor, pero cuando desde otro objeto hago esto:

Dato2=Dato

Me dice que no existe "Dato", sin embargo si hago:

Thisform.Refresh
Dato2=Dato

no tengo problemas.

Resumiendo, los controles que no están asociados a campos de tablas no están disponibles en cualquier lugar hasta que no se refresquen.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta para nota...

Publicado por Daniel MM (25 intervenciones) el 15/03/2001 19:41:34
Carlos,...no, los controloles que no estan asociados si estan disponibles, lo único que tienes que hacer es decir donde estan (objeto donde esta contenido, partiendo desde el formulario). Tomando tu ejemplo anterior:

Dato2 = Thisform.dato.controlsource
(formulario.nombre de objeto.propiedad o metodo)

Slds,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta para nota...

Publicado por Aragorn (37 intervenciones) el 16/03/2001 00:53:07
Yo también he tratado de declarar variables con PRIVATE en distintas partes del form y no logré que sean visibles en todos los métodos (sí funciona con las PUBLIC). El problema está en que los distintos métodos del form no "cuelgan" del Init o del Load, son tratados como a un mismo nivel. Para darte una idea revisá el código fuente de alguna clase heredada de la clase Form y vas a ver cómo se arman los Métodos (Functions/Procedures) dentro del PRG. Pasando al tema concreto de tu ejemplo yo te recomendaría que hagas lo siguiente:

Dato2 = Thisform.Dato.value

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar