Intercambio de variables entre formularios


([N4] victorgt) #1

Hola a todos. Hoy una peticion de JS, creo que facilita…

No tengo NADA claro (como que no me sale ni pa tras) como traspasar valores de variables entre subformularios de un separador con pestañas y el propio subformulario. El problema es que en una pestaña se define una variable local, a la cual necesito acceder en las otras pestañas y en el formulario principal. Para ello he creado en cada formulario, una variable booleana llamada NO_FACILITA_DATOS. Tambien la cree en el formulario principal.

En este escenario, me gustaria, en el Hide del subformulario en cuestion, copiar la variable al formulario principal, y a los otros subformularios, suponiendo que sea posible, claro…

El problema es que no se con que objetos puedo usar .setVar y varToXXXXX… Con theRoot puedo, pero todo lo demas me falla…

Me vale cualquier forma de comunicar ese valor… En mi caso es un booleano… Hasta ahora lo resolvi con campos auxiliares en la tabla que usa el formulario, cuyos valores pasan de una pestaña a otra sin problemas, pero no me parece nada elegante, preferiria poder hacerlo con variables locales.

Supongo que tambien seria mas facil con variables globales, pero si no es muy complicado, me gustaria saber hacerlo con variables locales.

Saludos y gracias.


([N3] pacosatu) #2

Hola victorgt.

Se ha hablado hace poco de cómo acceder desde un subformulario al resto de controles del Formulario Padre.

Tienes que acceder al root del formulario o subformulario.

Por ejemplo:
var oRoot = theRoot.dataView().mainForm().control(“SEPARADOR”).form(“FRM_DETALLE”).root()
oRoot.setVar(…)
oRoot.varToBool(…)

Pruébalo
Saludos
Paco Satué


([N4] victorgt) #3

Bueno, gracias a Paco, como siempre, esto ya esta funcionando. La clave como bien dice, esta en usar el misterioso “root()” de los formularios. Yo estaba empeñado en usar setVar() con el form directamente, y claro, no va. La verdad, muy intuitivo no me parece, si no me lo dicen puedo tardar dias en encontrarlo…

Este es el codigo que he utilizado en un manejador de evento JS de un subformulario de un separador de pestañas. Lo conecte a la señal OnHide. La variable se define en la cuarta pestaña del separador, y se copia su valor al formulario principal y a los subformularios (hermanos) nº 5 y nº 6. La variable en todos los formularios se llama igual, SIN_DATOS_SOL.

------------------------ inicio codigo JS
var formPadreRoot = theRoot.dataView().mainForm().root();
var formN5Root = theRoot.dataView().mainForm().control(“SEP_MAIN”).form(“TIENDAFLORES/ASISTENTE_NUEVA_VENTA_PASO_5”).root();
var formN6Root = theRoot.dataView().mainForm().control(“SEP_MAIN”).form(“TIENDAFLORES/ASISTENTE_NUEVA_VENTA_PASO_6”).root();

formPadreRoot.setVar(“SIN_DATOS_SOL”,theRoot.varToBool(“SIN_DATOS_SOL”));
formN5Root.setVar(“SIN_DATOS_SOL”,theRoot.varToBool(“SIN_DATOS_SOL”));
formN6Root.setVar(“SIN_DATOS_SOL”,theRoot.varToBool(“SIN_DATOS_SOL”));
------------------------- fin codigo JS

Saludos y gracias.