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.
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).
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.
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.
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).
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);
};
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.
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.
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.