ComboBox y ListBox con variables?


([N1] oscar.santana) #1

Buenos días, en el foro de ideas leí esta idea

Los formularios sin origen son actualmente un objeto muy cómodo. Ganaríamos en potencia si para utilizar un combobox y un listbox no tendríamos que usar para alimentar su contenido, un campo enlazado a tabla o a tabla estática. Podriamos alimentar su contenido como en otros lenguajes con una lista de palabras del tipo: "opción1", "opción2", "opción3" o bien con un array.

Según la respuesta que allí vi, esta opción ya está implantada en la 7.7… ahora bien, alguien me podría explicar cómo se usa?
Hemos intentado con un proceso onInit llenar el combo con una variable de tipo array pero no lo hace.

Gracias.


([N1] info) #2

Buenas, creo (no lo he probado) que puedes hacerlo mediante Javascript.

Ten en cuenta que la variable que conectas al combo es la variable que recoge el item selecionado, y no el que se usa para generar los items de una lista.

Creando evento JS que dispares en el on init, y usando el método addItem de la clase(s) VComboBox / VListBox creo que puedes conseguirlo (para “posicionarte” en el control combo/list a rellenar usa la instruccion theRoot.dataView().control( szIdControl )

Espero que te sirva al menos para empezar a probar. Ya nos contaras.

Un saludo.
Héctor Santoveña


([N1] oscar.santana) #3

Suena bastante lógico… Así que lo probamos y te contamos .

Saludos.


([N4] amadis) #4

@oscar.santana Te agradecería que si consigues avanzar en este tema compartas cómo lo has hecho… Yo he conseguido rellenar el desplegable pero no almacenar el valor en la base de datos…


([N1] mirna) #5

Hola Amadis, ¿como conseguiste rellenar el desplegable?

 

Gracias!


([N4] bitcodesoft) #6

Buscando me encontré con este post, es antiguo pero como no se ha dado la solución, me parece bastante util:

Llenar un combobox:

var combo= theRoot.dataView().control( “ID_COMBO” );
combo.addItem( “Opción 1”, “A” );
combo.addItem( “Opción 2”, “B” );

Para obtener el valor del combo:

var combo= theRoot.dataView().control( “ID_COMBO” );
theRoot.setVar(“OPC”, combo.itemData( combo.currentIndex ));

Los valores del combo pueden ser numéricos.


([N4] victorgt) #7

Para un listbox hay que usar listbox1.currentRow en vez de currentIndex (v 15.2 y superiores, supongo).

Saludos.