Listbox Selección Multiple

  1. 8 months ago

    Buenos días.

    Tengo una aplicación con dos listbox ambas con una columna y el objetivo es hacer una selección múltiple de filas de la listbox1 y con un botón copiarlas las filas seleccionadas a la listbox 2. En una listbox con selección simple se usa el listindex para referenciar la fila seleccionada, pero con selección multiples listindex siempre me devuelve la primera fila seleccionada. Lo solucioné recorriendo la listbox1 y guardando en un arreglo la posicion de las filas seleccionadas para luego recorrer el arreglo y copiar las filas al listbox2, pero se me ocurre habrá una forma mas directa.

    Gracias por su ayuda.

  2. 7 months ago

    Javier M

    10 Sep 2018 Pre-Release Testers, Xojo Pro AprendeXojo - Europe, Spain

    Claro!

    Recorre las filas del primero de los listbox utilizando el método Selected con un for…next en orden inverso (es más rápido). Si dicha fíla está seleccionada… la copias. Por ejemplo:

    dim upperLimit as integer = ListBox1.Listcount -1
    
    For n as integer = upperLimit downTo 0
    
    If ListBox1.Selected(n) then ListBox2.addRow( ListBox1.cell(n) )
    
    Next

    Creo que en la documentación de ListBox (puedes consultarla desde el IDE) también se incluye un ejemplo de esto mismo.

    Javier

  3. Eduardo G

    10 Sep 2018 Pre-Release Testers Europe (Madrid, Spain)

    @Javier Meacute;ndez en orden inverso (es más rápido)

    No sólo es más rápido, sino que si además quieres borrarlas (porque las estés "moviendo" a otro listbox, como en muchos programas donde añades de izquierda a derecha) puedes seguir contando hacia abajo después de borrar la fila sin riesgo de que descuadren los conteos.

or Sign Up to reply!