Pestañas en formulario


([N2] isaacpda) #1

Buenas tardes,
Tengo un formulario que dentro tiene un separador de formularios con 3 pestañas en cada pestaña un formulario diferente. La cuestión sería como capturar y enviar datos de un formulario a otro, es más en uno de los formularios tengo una rejilla y me gustaría desde esa regilla pasar datos a otro formulario de la pestaña. El moverme entre pestañas lo tengo hecho con JavaScript pero me falta el pasar parámetros.

Gracias
Isaac


([N3] pacosatu) #2

Hola Isaac.

Estúdiate bien el modelo de Objetos del API de Velneo.
Si has podido pasar de una pestaña a otra mediante el javascript, también serás capaz de asignar valores a las variables locales.

Obtén el dataView() de una pestaña y usa oDataViewPestaña.root().setVar(<var local>, valor).

Saludos
Paco Satué


([N2] isaacpda) #3

Gracias Paco,
lo voy a probar ahora mismo y te cuento.

Muchas gracias por contestar, que seria de este foro sin gente como tu, en cada post que voy leyendo siempre apareces tu por todos ayudando y compartiendo.

Un saludo
Isaac


([N2] isaacpda) #4

Buenas tardes,
pues no consigo pasar parametros

var miSep = theRoot.dataView().mainForm().control(“CONTROL”);
//miSep.setCurrentIndex(miSep.currentIndex-2);

var cl = miSep.form(“CLIENTES”).root(); //Esto me da error

miSep.setCurrentIndex(miSep.currentIndex-2);

//var oRoot = theRoot.dataView().mainForm().control(“CONTROL”).form(“CLIENTES”).root(); //Esto solo me da error.

Lo que necesito que desde el subformulario datos, le pueda pasar al subformulario clientes ciertos valores, pero no se que hago mal.

Isaac


([N3] pacosatu) #5

Hola Isaac.

Estudia bien la documentación del API.
En la instrucción miSep.form(“CLIENTES”) te falta el ALIAS del Proyecto miSep.form("<ALIAS_PROYECTO>/CLIENTES").

Cualquier objeto del proyecto, para referirnos a él, debe ir siempre precedido del Alias del Proyecto (app o dat) al que pertenece.

Saludos
Paco Satué


([N2] isaacpda) #6

Hola Paco,
gracias otra vez, la documentación la estoy mirando, pero si en algo me atrevo a criticar a Velneo, es en la documentación de javascript, que bajo mi punto de vista un poco confusa si es, y con pocos ejemplos.

He probado lo que me dices y funciona, tenias razón, es mas lo habia probado antes de iniciar este post, pero me engaño que para captuar la vista del formulario principal no hiciese falta ponerle alias y para el formulario contenido si.

Ahora me surge otra duda, ya consigo acceder a un boton del subformulario, pero no consigo pasarle un valor a un field

var miSep = theRoot.dataView().mainForm().control(“CONTROL”);
var formulario = miSep.form(“ALIAS/CLIENTES”);
formulario.setField(“CONTROL42”, “Holamundo”);

El CONTROL42 es un campo de edicion de texto, y segun he leido, la manera correcta de pasar valores es con setField(ideobjeto, texto).

Algo hago mal, seguro no?

Isaac


([N2] isaacpda) #7

Bueno al final lo consegui, de la manera mas facil. Lo que necesitaba es que desde el subobjeto de una pestaña (una lista), pasar los valores a otro subobjeto de otra pestaña (un formulario). Lo tenia pensado hacer campo por campo, pero “voala”, encontré “setRegister” que de un plumazo me añade todos los registros de la lista en el formulario.

Por si a alguien le puede ayudar adjunto el codigo.

var miSep = theRoot.dataView().mainForm().control(“CONTROL”);
var formulario = miSep.form(“alias/CLIENTES”);

var id = theApp.globalVarToString(“alias/IDREGILLA”);
var Registros = new VRegisterList(theRoot);
Registros.setTable(“alias/CLIENTES”);
Registros.load(“ID”, [id]);

if (Registros.listSize())
{
//Nos quedamos con un registro
Registro = Registros.readAt(0);
formulario.setRegister(Registro);
};

Un saludo,
Isaac


([N1] wikan) #8

Creo que la final nos complicamos la vida. A lo mejor no queda tal y como lo tienes pensado, pero creo que realmente estás haciendo lo mismo que harías con un localizador.

Te muestra una lista donde puedes buscar y luego el formulario de edición definido en esa rejilla, mucho más fácil de mantener y podrías mantener varios registros abiertos.


([N2] isaacpda) #9

Gracias Manuel por tu respuesta,
seguro que en un escenario normal, tu idea iria mejor, pero cuando tienes las manos atadas y tanto el diseño, como la usabilidad tiene que ser como un prototipo dado, pues poco puedo hacer. El cliente me dice que lo quiere de esta manera y no puedo cambiarle el funcionamiento de como trabaja su antiguo programa, es decir el desarrollo que le haga a mi cliente, tiene que ser exacto al que tiene.

Gracias otra vez a todos los navegantes de los foros, ya que sin ellos, creo que no avanzariamos ni la mitad de rápido.

Un saludo
Isaac


([N1] wikan) #10

Si te entiendo, supongo que todos hemos pasado por lo mismo. Al final entra en juego la psicología de convencer al cliente que no es la misma tecnología, ni el mismo programa.

Al final lo has conseguido que es lo importante.