Acceso a variable de formulario


([N4] ccuesta) #1

Hola a todos, disculpad por “molestaros” en Agosto pero tengo un pequeño problema que (creo) no debería ser difícil de solucionar.

Estoy intentando hacer un proceso javascript que al lanzarlo cargo dos variables: NOMBREFORM y PARAMETRO

la idea es que si hay un formulario en ejecución con el nombre indivado en la variable (NOMBREFORM ), lea el valor que lleve la variable indicada en la otra variable(PARAMETRO) y lo cargue en una variable local del proceso que pueda consultar desde V7.

Estoy completamente perdido en javascript pero entiendo que algo así es ¿posible?

Gracias de antemano.


([N2] Mgalvezh) #2

Creo que esto te ayudara https://velneo.es/foros/topic/recorrer-subojectos-de-un-formulario/


([N2] Mgalvezh) #3

y el proceso desde donde lo quieres lanzar ?


([N4] ccuesta) #4

Hola Mgalvezh, gracias por responder. Sí había visto ese enlace pero es que no es exactamente lo que busco, en mi caso quiero saber el valor de una variable de un formulario en ejecución.

Lo que pretendo al final es crear una función de velneo a la que mandaré como parámetros el nombre del formulario y el nombre de la variable y éste me devuelva el valor de la variable.

Me encuentro con muchísimos casos en los que tengo que dar de alta una ficha pulsando la toolbar de una rejilla. Como en la acción que que se ejecuta no puedo pasar ningún parámetro, si la nueva ficha necesita un valor en algún campo que venga del formulario origen, no tengo forma de “leer” ese valor. A no ser que previamente lo haya metido en una variable global, pero prefiero evitar en lo posible su uso porque en una aplicación tan grande acabaría con cientos de variables para tantos formularios.


([N1] wikan) #5

En lugar de usar una acción con un formulario de alta.
Haz el alta a través de un proceso y a su vez con un de un manejador de objetos, al que le puedes pasar el valor de las variables antes de ser creado.


([N2] Esfero) #6

Hola ccuesta, personalmente para ese caso, yo estoy utilizando la alternatica que te propone wikan, pero te dejo un script, para hacer lo que propones:

OJO, solo funciona con los formularios que estean en el TAB o MDI

PROCESO JAVASCRIPT: (VBLES PROCESO TITULO, PARAMETRO, RETORNO)

var numVistas = theMainWindow.viewsCount();
var tituloVista = theRoot.varToString(“TITULO”);
var parametro = theRoot.varToString(“PARAMETRO”);
var retorno = “”;
var vista;
var sw = false;

for ( i = 0; i < numVistas + 1; i++ )
{
vista = theMainWindow.getViewAt(i);
if ( vista.title() == tituloVista){
sw = true;
i = numVistas;
}
}
if ( sw == true ){
if (parametro.substring(0,1) == “#”){
retorno = vista.root().content().fieldToString(parametro);
} else {
retorno = vista.root().varToString(parametro);
}
theRoot.setVar(“RETORNO”, retorno);
}

============================
FUNCION VELNEO PARA LLAMADA AL PROCESO (PARAMETROS ==> TITULO, PARAMETRO)
crear manejador de objeto(.pro, <Proceso>)
set variable de objeto(TITULO,TITULO)
set variable de objeto(PARAMETRO,PARAMETRO)
Dispara Objeto(.pro, 1º Plano Local(Sincrono),)
get variable de objeto(RETORNO, RETORNO)
set dato retorno(RETORNO)


([N4] ccuesta) #7

Mil gracias por las respuestas.

Manuel, la opción de hacerlo con un proceso es lo mejor sin duda, de momento hasta que pruebe el código de Esfero es lo que he hecho y va bien, pero … ¿como meto el proceso en una ToolBar?

Las toolbar solo admiten acciones y éstas no pueden llevar variables con lo que no veo la forma de pasar una variable al proceso (Que lanzará el formulario de alta) que se lance desde la acción de la Toolbar.

En cualquier caso reitero el agradecimiento, voy aprobarlo!!


([N4] ccuesta) #8

Genial Esfero, funciona perfectamente la rutina. Es exactamente lo que buscaba. ¡¡ Muchas gracias !!