
Quote from luishp on April 25, 2020, 10:37 amTrying to solve some problems related to the ListBox object, I have discovered there is a hidden functionality that allow us to work properly with ListBox, ComboBox and DropDown objects when using dynamic items: just use an Array to store the items and any change made to the Array will be reflected into the ListBox.
I didn't knew about this and now most ListBox related commands have no sense so I will move them to the "Deprecated" section in next version.
Please take a look at the attached sample app.
@gustavo1973, @gaev and @joaquinfdez I hope this will solve any doubt.
Trying to solve some problems related to the ListBox object, I have discovered there is a hidden functionality that allow us to work properly with ListBox, ComboBox and DropDown objects when using dynamic items: just use an Array to store the items and any change made to the Array will be reflected into the ListBox.
I didn't knew about this and now most ListBox related commands have no sense so I will move them to the "Deprecated" section in next version.
Please take a look at the attached sample app.
@gustavo1973, @gaev and @joaquinfdez I hope this will solve any doubt.

Quote from CDY@44 on April 25, 2020, 2:41 pmI may be wrong, but it seems that the "Delete selected item" function does not work (tried in CHROME and FIREFOX). In any case, it's really nice to see these little updates regularly! Thank you !!
I may be wrong, but it seems that the "Delete selected item" function does not work (tried in CHROME and FIREFOX). In any case, it's really nice to see these little updates regularly! Thank you !!
Quote from Gustavo1973 on April 25, 2020, 3:18 pm@Luishp Hay algo que no me queda claro, agregar elementos al Array, tenemos lo que se va a visualizar como etiqueta o etiqueta en el Listbox y por otro lado lo que se obtiene en caso de que quieras usar un elemento del listbox seleccioando?
ArrayAddItem [elementos] "Uno | Opción1"
Donde "One" es lo que se se en pantalla y "Option1" es el contenido de "One" al usar la variable "selected"?
Hize unas pruebas, yo en mi codigo uso un Array para agregar los elementos al listbox, lo diferente con tu ejemplo es que no los agrego de la manera que tu lo haces y a lo cual refiere mi pregunta mas arriba.
Ahora bien, la variable "selected" contiene el valor seleccionado, si hago clic sobre una linea determianda puedo ver su valor sin problemas,
El problema es cuando hago un Loop en el listbox tomando el valor de cada liena mediante "Listboxgetitem", ahi ya no obtengo el mismo resultado, el valor mostrado contiene "string:"
como soluciono el obtener cada valor del listbox sin usar "ListBoxGetItem"
@Luishp Hay algo que no me queda claro, agregar elementos al Array, tenemos lo que se va a visualizar como etiqueta o etiqueta en el Listbox y por otro lado lo que se obtiene en caso de que quieras usar un elemento del listbox seleccioando?
ArrayAddItem [elementos] "Uno | Opción1"
Donde "One" es lo que se se en pantalla y "Option1" es el contenido de "One" al usar la variable "selected"?
Hize unas pruebas, yo en mi codigo uso un Array para agregar los elementos al listbox, lo diferente con tu ejemplo es que no los agrego de la manera que tu lo haces y a lo cual refiere mi pregunta mas arriba.
Ahora bien, la variable "selected" contiene el valor seleccionado, si hago clic sobre una linea determianda puedo ver su valor sin problemas,
El problema es cuando hago un Loop en el listbox tomando el valor de cada liena mediante "Listboxgetitem", ahi ya no obtengo el mismo resultado, el valor mostrado contiene "string:"
como soluciono el obtener cada valor del listbox sin usar "ListBoxGetItem"

Quote from luishp on April 25, 2020, 3:31 pm@gaev @cdy44-2 sorry, I uploaded a test version with wrong ListBox name (ListBox2 instead of ListBox1).
Please, download again. Now it should work correctly.Donde "One" es lo que se se en pantalla y "Option1" es el contenido de "One" al usar la variable "selected"?
Correcto. Si sólo pones uno, entonces coincidirá lo que se ve en pantalla con el valor guardado.
@gaev @cdy44-2 sorry, I uploaded a test version with wrong ListBox name (ListBox2 instead of ListBox1).
Please, download again. Now it should work correctly.
Donde "One" es lo que se se en pantalla y "Option1" es el contenido de "One" al usar la variable "selected"?
Correcto. Si sólo pones uno, entonces coincidirá lo que se ve en pantalla con el valor guardado.

Quote from CDY@44 on April 25, 2020, 3:40 pmThanks Luis! Now, as soon as I find something wrong, instead of asking the question right away, I will do a little research on the code! In this case, I could easily see where the problem was coming from. I think that doing so is more formative!
Good day to you !!
Thanks Luis! Now, as soon as I find something wrong, instead of asking the question right away, I will do a little research on the code! In this case, I could easily see where the problem was coming from. I think that doing so is more formative!
Good day to you !!
Quote from Gustavo1973 on April 25, 2020, 4:00 pmvoy a probar
voy a probar
Quote from Gustavo1973 on April 25, 2020, 4:29 pmNo puedo obtener el resultado que necesito
en el ejemplo que tu publicas @Luishp las tareas se realizan partiendo de la base que el usuario selecciona un ITEM del Listbox
En mi caso tengo que exportar todos los ITEMS del mismo usando un LOOP que recorra uno a uno y obteniendo el dato de cada linea sin intervencion del usuario.
he probado de muchas formas sin resultado positivo, siempre obtengo "string:" antes del contenido de la linea
Ahi subo el buckup de la aplicacion , la clave de ingreso es "123"
No puedo obtener el resultado que necesito
en el ejemplo que tu publicas @Luishp las tareas se realizan partiendo de la base que el usuario selecciona un ITEM del Listbox
En mi caso tengo que exportar todos los ITEMS del mismo usando un LOOP que recorra uno a uno y obteniendo el dato de cada linea sin intervencion del usuario.
he probado de muchas formas sin resultado positivo, siempre obtengo "string:" antes del contenido de la linea
Ahi subo el buckup de la aplicacion , la clave de ingreso es "123"
Uploaded files:
Quote from luishp on April 25, 2020, 4:41 pm@gustavo1973 creo que no nos estamos entendiendo: todas las instrucciones que utilizas para añadir items al ListBox en tu aplicación no son adecuadas (aunque funcionaban bien, no son correctas). Lo que debes hacer es añadirlas a un Array y al final recorrer el Array para obtener los valores que necesitas, no los obtienes directamente del ListBox. El ListBox no almacena datos, solo los muestra y permite al usuario escoger. El Array es quien los almacena. Por favor, examina detenidamente el ejemplo de más arriba. Sigo sin poder ejecutar tu ejemplo, me siguen faltando archivos.
@gustavo1973 creo que no nos estamos entendiendo: todas las instrucciones que utilizas para añadir items al ListBox en tu aplicación no son adecuadas (aunque funcionaban bien, no son correctas). Lo que debes hacer es añadirlas a un Array y al final recorrer el Array para obtener los valores que necesitas, no los obtienes directamente del ListBox. El ListBox no almacena datos, solo los muestra y permite al usuario escoger. El Array es quien los almacena. Por favor, examina detenidamente el ejemplo de más arriba. Sigo sin poder ejecutar tu ejemplo, me siguen faltando archivos.
Quote from Gustavo1973 on April 25, 2020, 5:11 pmListo, ahora si entendi el concepto @Luishp, perdon por tantas preguntas
Ya funciona perfecto trabjando con el ARRAY
Mas atras te deje planteada que quizas paso desapercibida en cuanto que al crear el archivo PDF en principio me dejaba afuera elementos del ARRAY por superar el largo del tamaño de la hoja, lo solucione agregando de manera manual mas hojas al PDF , pero mi pregunta es si existe alguna manera en ese plugin para configurarlo que lo haga automatico a eso
Listo, ahora si entendi el concepto @Luishp, perdon por tantas preguntas
Ya funciona perfecto trabjando con el ARRAY
Mas atras te deje planteada que quizas paso desapercibida en cuanto que al crear el archivo PDF en principio me dejaba afuera elementos del ARRAY por superar el largo del tamaño de la hoja, lo solucione agregando de manera manual mas hojas al PDF , pero mi pregunta es si existe alguna manera en ese plugin para configurarlo que lo haga automatico a eso

Quote from luishp on April 25, 2020, 5:13 pmYa funciona perfecto trabjando con el ARRAY
Genial!
pero mi pregunta es si existe alguna manera en ese plugin para configurarlo que lo haga automatico a eso
Me temo que no :(
Ya funciona perfecto trabjando con el ARRAY
Genial!
pero mi pregunta es si existe alguna manera en ese plugin para configurarlo que lo haga automatico a eso
Me temo que no :(

Quote from lesanch on May 4, 2020, 9:11 pmHola a todos,
En algún momento necesité usar un combobox que se llenara con la info obtenida desde un txt en el server y con la ayuda de Gaev pude hacer esto que les envió, no había leído este post, o sea que supongo que tendré que actualizar las funciones que llamaba para usar ArrayAddItem en vez de ListBoxAddItem.
Igualmente se los dejo para quien pueda servir la lógica, que seguramente es mejorable.
Para probarlo se debe crear un file llamado bbdd_conf.txt colocarlo en un nuevo directorio llamado fill_combobox del servidor y agregar esta línea:
RAIJ300|glance713:1521/ravAEs934,vraKs-DES|RovMArs17:1521/zsda456,Prinxx234-PROD|Great716:1521/abcd123,DES-DES|PRius324:1527/DES
Saludos,
Sam
Hola a todos,
En algún momento necesité usar un combobox que se llenara con la info obtenida desde un txt en el server y con la ayuda de Gaev pude hacer esto que les envió, no había leído este post, o sea que supongo que tendré que actualizar las funciones que llamaba para usar ArrayAddItem en vez de ListBoxAddItem.
Igualmente se los dejo para quien pueda servir la lógica, que seguramente es mejorable.
Para probarlo se debe crear un file llamado bbdd_conf.txt colocarlo en un nuevo directorio llamado fill_combobox del servidor y agregar esta línea:
RAIJ300|glance713:1521/ravAEs934,vraKs-DES|RovMArs17:1521/zsda456,Prinxx234-PROD|Great716:1521/abcd123,DES-DES|PRius324:1527/DES
Saludos,
Sam
Uploaded files:
Quote from luishp on May 5, 2020, 8:28 am@lesanch, ahora es mucho más fácil conseguirlo que antes aunque los antiguos comandos siguen funcionando.
El ejemplo que incluyo arriba de este hilo puedes encontrarlo también en la carpeta "Sample Apps".Saludos!
@lesanch, ahora es mucho más fácil conseguirlo que antes aunque los antiguos comandos siguen funcionando.
El ejemplo que incluyo arriba de este hilo puedes encontrarlo también en la carpeta "Sample Apps".
Saludos!
Quote from juancarlos on May 7, 2020, 9:30 pmhola , entonces si quiero pasar los datos de una busqueda de una base de datos , tengo que hacer un loop o del mismo array que utilizo para la busqueda puedo usarlo para poner los datos en un listbox?
hola , entonces si quiero pasar los datos de una busqueda de una base de datos , tengo que hacer un loop o del mismo array que utilizo para la busqueda puedo usarlo para poner los datos en un listbox?

Quote from luishp on May 7, 2020, 11:27 pmDepende de cómo lleguen los datos al Array pero seguramente tendrás que pasar los datos que necesites a otro Array porque lo que recibas será un objeto JSON.
Depende de cómo lleguen los datos al Array pero seguramente tendrás que pasar los datos que necesites a otro Array porque lo que recibas será un objeto JSON.
Quote from juancarlos on May 8, 2020, 12:43 amhola se que me faltan cosas pero no se como hacerlo , necesito introducir el [listabusq2] los datos, en loop esta mal por lo que he podido leer pero las variables compuestas todavia estoy pegado
CreateEmptyArray [arraydatabusq2] //leo de la base de datos
SetVar [arraydatabusq2] [data]
ArrayLen [arraydatabusq2] [totalbus2]
SetVar [totalbu] [bucles]
CreateEmptyArray [listabusq2]
Loop 0 [totalbu] [bucles]
setvar [currentrecordbus2] 0
SetVar [idclientebus] [arraydatabusq2([currentrecordbus2]).idcliente]
SetVar [idapellidosbus] [arraydatabusq2([currentrecordbus2]).apellidos]
ArrayAddItem [listabusq2] "[idclientesbus]|[idapellidosbus]"
endloop
hola se que me faltan cosas pero no se como hacerlo , necesito introducir el [listabusq2] los datos, en loop esta mal por lo que he podido leer pero las variables compuestas todavia estoy pegado
CreateEmptyArray [arraydatabusq2] //leo de la base de datos
SetVar [arraydatabusq2] [data]
ArrayLen [arraydatabusq2] [totalbus2]
SetVar [totalbu] [bucles]
CreateEmptyArray [listabusq2]
Loop 0 [totalbu] [bucles]
setvar [currentrecordbus2] 0
SetVar [idclientebus] [arraydatabusq2([currentrecordbus2]).idcliente]
SetVar [idapellidosbus] [arraydatabusq2([currentrecordbus2]).apellidos]
ArrayAddItem [listabusq2] "[idclientesbus]|[idapellidosbus]"
endloop

Quote from luishp on May 8, 2020, 10:51 am@juancarlos no entiendo lo que estás haciendo aquí:
SetVar [totalbu] [bucles]
Ni aquí:
Loop 0 [totalbu] [bucles]
Un Loop se compone de tres parámetros:
1) El número en que empiezas a contar.
2) El número en que terminas de contar.
3) La variable donde almacenas por que número va contando en cada bucle.Tu le estás diciendo que empiece a contar en 0, cuente hasta [totalbu] y almacene su posición en [bucles]. Son dos variables que utilizas antes pero cuyo valor no se sabe cual es.
Luego no utilizas [bucles] para nada dentro del Loop ¿? y utilizas en su lugar [currentrecordbus2] que tampoco se sabe de donde sale. En definitiva no entiendo muy bien lo que estás haciendo ni para que sirven algunas de las variables que utilizas así que no puedo hacer mucho más...
@juancarlos no entiendo lo que estás haciendo aquí:
SetVar [totalbu] [bucles]
Ni aquí:
Loop 0 [totalbu] [bucles]
Un Loop se compone de tres parámetros:
1) El número en que empiezas a contar.
2) El número en que terminas de contar.
3) La variable donde almacenas por que número va contando en cada bucle.
Tu le estás diciendo que empiece a contar en 0, cuente hasta [totalbu] y almacene su posición en [bucles]. Son dos variables que utilizas antes pero cuyo valor no se sabe cual es.
Luego no utilizas [bucles] para nada dentro del Loop ¿? y utilizas en su lugar [currentrecordbus2] que tampoco se sabe de donde sale. En definitiva no entiendo muy bien lo que estás haciendo ni para que sirven algunas de las variables que utilizas así que no puedo hacer mucho más...
Quote from juancarlos on May 8, 2020, 3:10 pmdisculpa anoche cuando lo termine estaba atontado , pero no se como hacerlo ya que leo la base de datos ,pero esos datos tengo que introducirlo en la variable [listabusq2] que no se como hacerlo y despues no se si esta bien hecho el loop y el arrayadditems
CreateEmptyArray [arraydatabusq2]
SetVar [arraydatabusq2] [data]//paso los datos de la base de daos
ArrayLen [arraydatabusq2] [totalbu]
CreateEmptyArray [listabusq2]//creo el array para listbox
setvar [totalbus] [totalbu]-1
Loop 0 [totalbus] [bucles]
SetVar [idclientebus] [arraydatabusq2([bucles]).idcliente]
SetVar [idapellidosbus] [arraydatabusq2([bucles]).apellidos]
ArrayAddItem [listabusq2] "[idclientesbus]|[idapellidosbus]"//añado los datos del id y apellidos
endloop
disculpa anoche cuando lo termine estaba atontado , pero no se como hacerlo ya que leo la base de datos ,pero esos datos tengo que introducirlo en la variable [listabusq2] que no se como hacerlo y despues no se si esta bien hecho el loop y el arrayadditems
CreateEmptyArray [arraydatabusq2]
SetVar [arraydatabusq2] [data]//paso los datos de la base de daos
ArrayLen [arraydatabusq2] [totalbu]
CreateEmptyArray [listabusq2]//creo el array para listbox
setvar [totalbus] [totalbu]-1
Loop 0 [totalbus] [bucles]
SetVar [idclientebus] [arraydatabusq2([bucles]).idcliente]
SetVar [idapellidosbus] [arraydatabusq2([bucles]).apellidos]
ArrayAddItem [listabusq2] "[idclientesbus]|[idapellidosbus]"//añado los datos del id y apellidos
endloop

Quote from luishp on May 8, 2020, 5:13 pm@juancarlos ¡ahora si!
Yo no veo nada mal en tu código.
¿Has puesto [listabusq2] como valor en la propiedad "items" del ListBox?
@juancarlos ¡ahora si!
Yo no veo nada mal en tu código.
¿Has puesto [listabusq2] como valor en la propiedad "items" del ListBox?
Quote from juancarlos on May 8, 2020, 8:17 pmhola si lo he puesto , pero me sale undefined , los datos no los pasa
hola si lo he puesto , pero me sale undefined , los datos no los pasa

Quote from luishp on May 8, 2020, 9:11 pmEn ese caso tienes que depurar el programa paso a paso. Para eso lo mejor es utilizar el comando ConsoleLog y la consola del navegador (F12). Se trata de comprobar primero si se recuperan los datos correctamente desde la base de datos, el número de registros que se recuperan, los datos del Array... Si imprimes en la consola esos datos a medida que se recuperan o calculan puedes ver donde se produce el problema y hasta donde está todo correcto.
Depurar un programa suele llevar siempre más tiempo que programarlo así que es importante saber como hacerlo.
En ese caso tienes que depurar el programa paso a paso. Para eso lo mejor es utilizar el comando ConsoleLog y la consola del navegador (F12). Se trata de comprobar primero si se recuperan los datos correctamente desde la base de datos, el número de registros que se recuperan, los datos del Array... Si imprimes en la consola esos datos a medida que se recuperan o calculan puedes ver donde se produce el problema y hasta donde está todo correcto.
Depurar un programa suele llevar siempre más tiempo que programarlo así que es importante saber como hacerlo.