Gestionar los subformularios con un combobox


([N1] OscarBarea) #1

Hola,
Tengo un formulario principal que activa los subformularios mediante un combobox.
Código de creación:

/**
 * Devuelve el icono de un formulario
 *
 * @param {VObjectInfo} formulario Objeto de la clase VObjectInfo del formulario
 * @return {VImage} icono Objeto de la clase VImage con el icono del formulario
 */
var iconoFormulario = function (formulario)
{
	if (formulario)
	{
		importClass("VImage");
		var icono = new VImage();
		var iconoIdRef = formulario.propertyData(6).replace("@", "/");
		icono.loadResource(iconoIdRef);
		return icono;
	};
};
 
// -----------------------------------
// Cargar formularios en listbox
// -----------------------------------
 
var controlListBox = theRoot.dataView().control("MEN_CFG");
var controlPila = theRoot.dataView().control("FRM_CFG");
 
// -------------------------------------------------------------------------
// Leer los subformularios  y dar de alta los registros en el listbox
// -------------------------------------------------------------------------
 
// Limpiamos el listbox antes de cargarlo
controlListBox.clear();
 
var numFormularios = controlPila.count;
for (var numFormulario = 0; numFormulario < numFormularios; numFormulario++)
{
	var formulario = controlPila.form(numFormulario);
	var nombre = formulario.objectInfo().name();
	var icono = iconoFormulario(formulario.objectInfo());
	controlListBox.addItem(icono, nombre, numFormulario);
};
 
// Marcamos el primer elemento como seleccionado
controlListBox.currentRow = controlPila.currentIndex;

Código al seleccionar Combobox:

// --------------------------------
// Abrir el formulario seleccionado
// ---------------------------------
var controlListBox = theRoot.dataView().control("MEN_CFG");
var controlPila = theRoot.dataView().control("FRM_CFG");
controlPila.setCurrentIndex(controlListBox.currentIndex);
controlPila.form(controlPila.currentIndex).setFocus();

Lo que quiero hacer es poner unas flecha al lado del combobox, para poder desplazar al siguiente o anterior formulario de la lista del combobox, pero no lo consigo. Quiero que al clicar en las flechas me presente el formulario y que me cambie el nombre del combobox.

Como se hace?
Muchas gracias


([N1] OscarBarea) #2

Hola a todos,
Mis conocimientos en javascript son muy básicos y no llego
Alguien podría echarme una mano.
Mil gracias
Oscar B.


([N2] overBCN) #3

Hola,
Prueba lo siguiente:

var controlListBox = theRoot.dataView().control("MEN_CFG");
var controlPila = theRoot.dataView().control("FRM_CFG");

controlPila.setCurrentIndex(controlListBox.currentIndex - 1);
var sel = controlListBox.currentIndex = controlListBox.currentIndex - 1;
controlPila.form(sel).setFocus();

Saludos