Pasar variables entre formularios


([N3] Misho) #1

Buenas tardes.

He estado mirando el tema de pasar variables entre formularios pero no llego a conseguir que funcione.
A ver si alguien puede explicarme como usarlo correctamente.

Tengo un formulario principal en el que he creado un manejador de eventos con:

Crear manejador de objetos (Formulario 2)
Disparar manejador (Formulario 2)
Get variable local del objeto (la variable que quiero) (la guardo en la variable de formulario 1)

El formulario 2 tiene unas variables locales booleanas y un boton de aceptar.

El caso es que siempre obtengo un 0.

No se si es que al aceptar el otro formulario se pierde el valor del get…

Espero que haya quedado claro.
¿Podrían ayudarme?
Gracias.


([N1] info) #2

Espero poder ayudarte… Así lo hago yo…
Debes de crear la misma variable en ambos formularios.

y Usa “Set variable local de objeto”

Si necesitas mas ayuda no dudes en preguntar. Un saludo


([N3] Misho) #3

como usar set? no veo que encaje.

Desde el formulario 1 llamo al formulario 2.

El evento es en el formulario 1 por lo tanto entiendo que he de dispararlo y hacer un get.


([N3] Misho) #4

He hecho la contraria. que sea el formulario 2 el que le pasa al formulario 1 con un set pero tampoco me funciona.


([N3] veldevelop) #5

con el manejador de objetos puedes tanto recibir como enviar valores de las variables pero has de tener en cuenta que todo ello ocurre cuando disparas el objeto, por otro lado no se trata de un set normal has de usar el set del manejador de objetos. Según leo el post original el get lo haces después de disparar el objeto, has de hacerlo todo antes de disparar el objeto.

Son pequeños detalles que espero que te aclaren algo más.


([N3] pacosatu) #6

Hola Misho.

Está correcto lo que haces al principio. Seguramente el problema es que el Tipo de las Variables Locales no coincide en el Formulario1 y Formulario2.

El proceso siempre es el mismo:
CVALOR en FRM_FIJAR_VALORES es de tipo Alfa
LVALOR en FRM_FIJAR_VALORES es de tipo Booleano
CVALOR_STRING coincide con CVALOR y LVALOR_BOOLEANO con LVALOR


Crear manejador de objeto ( oValor, Formulario FRM_FIJAR_VALORES@0PS_Ejercicios_app )
Set variable local de objeto ( oValor, CVALOR, "Valor inicial" )
Disparar objeto ( oValor, No aplicable, )
   Libre
Get variable local de objeto ( oValor, CVALOR, CVALOR_STRING )
Get variable local de objeto ( oValor, LVALOR, LVALOR_BOOLEANO )
Mensaje ( "Valor devuelto: " + CVALOR_STRING + " " + LVALOR_BOOLEANO, Información, , )
Rem (Podemos volver a disparar el formulario las veces que queramos asignando nuevos valores
Set variable local de objeto ( oValor, CVALOR, "Nuevo Valor inicial" )
Disparar objeto ( oValor, No aplicable, )
Libre
Get variable local de objeto ( oValor, VALOR, CVALOR_STRING)
Get variable local de objeto ( oValor, LVALOR, LVALOR_BOOLEANO)
Mensaje ( "Valor devuelto por segunda vez: " + CVALOR_STRING + " " + LVALOR_BOOLEANO, Información, , )

Así que una vez creado el manejador de objeto (oValor) podemos dispararlo las veces que queramos, podemos Fijar (Set varia …) los valores de las variables Locales las veces que queramos y podemos Obtener (Get varia …) los valores de las variables Locales las veces que queramos.

Eso sí, siempre dentro del mismo manejador de evento.

Saludos
Paco Satué


([N3] Misho) #7

Muchísimas gracias a todos!

Como bien habéis dicho, me habéis dado los pequeños detalles que hacían que no funcionase.

Ya está funcionando y he aprendido.

Saludos.