domingo, 15 de julio de 2012

Componente ListBox


Este componente presenta una lista de elementos seleccionables.

Al hacer click en uno de los elementos su índice es almacenado en la
propiedad .Index.

La propiedad .Current nos ofrece la posibilidad de conocer del
elemento actual seleccionado,su texto o si ha sido seleccionado un
elemento en concreto.

Lista.Current.Text
Lista.Current.Selected

Listbox es igual que un array de elementos.
Posee propiedades para conocer cuantos elementos tiene la lista, como la
propiedad .Count.

No debemos olvidar nunca que siempre el primer elemento en un array es 0.
Así que la propiedad .Count puede decirnos que tenemos un elemento, pero
su propiedad .Index al seleccionar este elemento es 0.

Al igual que teníamos un array:

aAmigos[1]

Con la propiedad Lista.List[1] hacemos la misma función con
nuestro componente ListBox.

Cuando no hemos seleccionado ningún elemento de la lista la propiedad
Index es -1

Tenemos métodos para ordenar nuestra Lista y de hacer búsquedas en ella.

Usamos siempre el método .Add para añadir elementos a nuestra lista.

Aquí tenéis un ejemplo para ver el funcionamiento básico
de este componente.


He utilizado el recurso que nos ofrece el componente de alineación Vbox, para
que tanto la caja de texto y los botones queden alineados.

El código es simple. ;-)

----código---
' Gambas class file

Public Sub _new()

End

Public Sub Form_Open()
   Me.Title = "Ejemplo con ListBox"
   Me.Center()
End

Public Sub btnInsertar_Click()
If txtEntrada.Text = "" Then 'Si no escribimos nada nos lo dice
   Message.Info("Debes escribir algo")
Else
   lstLista.Add(txtEntrada.text) 'Añadimos el contenido de la caja de texto a la lista
   lblSalida.Text = (txtEntrada.Text & " fue añadido a la lista")
   txtEntrada.text = ""
Endif
txtEntrada.SetFocus
End

Public Sub btnLimpiarLista_Click()
lstLista.Clear
lblSalida.Text = "La lista fue borrada"
End

Public Sub btnEliminar_Click()
If lstLista.Index >= 0 Then 'Si se ha seleccionado algún elemento.
   lblSalida.Text = lstLista.Current.Text & " fue eliminado"
   lstLista.Remove(lstLista.Index)
Else
If lstLista.Index = -1 Then
   Message.Warning("Debe seleccionar algún elemento de la lista")
Endif
Endif
End

Public Sub lstLista_Select()

If lstLista.Index <> -1 Then 'Si se ha seleccionado algún elemento.Otra manera de hacerlo.
   lblSalida.Text = Trim(lstLista.Current.Text) & " fue seleccionado"
Endif
End

Public Sub btnSalir_Click()
   Me.Close
End

Public Sub btnInsertar_Enter()
   btnInsertar.Font.bold = True 'Cuando el cursor este dentro del botón cambia el estilo de su fuente a negrita
End

Public Sub btnInsertar_Leave()
   btnInsertar.Font.Bold = False 'Cuando el cursor este fuera del botón cambia el estilo de su fuente a normal
End
---código---

Si os fijáis en los botones debajo de algunas letras existe un guión bajo. Este guión permite el uso de un acceso rápido al botón en cuestión.

Usamos la combinación de las teclas Alt + la letra para hacer lo
mismo que si hiciéramos click con el ratón en el botón.

¿ Cómo podemos hacer esto con nuestros botones de comando ?.

Vamos a la propiedad texto del botón y cerca de la letra que queremos
usar, añadirnos el carácter “&”, que conocemos como Ampersand.

No debemos repetir los mismos caracteres para usar los botones desde teclado
por que puede que el programa no responda como quisiéramos.

Aquí tenéis el ejemplo con su código.

Ejemplo de Listbox

Podéis encontrar mas información en:

En GambasDoc

4 comentarios:

  1. El Link del código esta muerto, muchas gracias por tu aporte, si puedes reparar el link seria genial! saludos

    ResponderEliminar
  2. Hola afro. Efectivamente, la gran mayoría de los enlaces pertenecen a Freedrive, que parece estar caído o difunto. He cambiado el enlace para que puedas bajarlo. Para cualquier problema como este comentar.

    Saludos!.

    ResponderEliminar
  3. y si quiero seleccionar varias pobciones y que me lo agrege en la lista por ejemplo tengo varios nombre alberto pedro juan si quiero q los meta a todos de una como se haria eso?

    ResponderEliminar
  4. Hola Alfredo. Tal como está el código no te valdría para lo que tu quieres.
    El método "Add" del componente Listbox solo te vale para añadir un elemento a la vez. Parece que preguntas dos cosas distintas.
    - Selección múltiple.
    - Añadir más de un elemento.

    Para poder añadir más de un elemento. Necesitas conocer
    el comando "split" que te convertirá una cadena de texto a
    un array usando un separador (una letra, un simbolo, el carácter espacio ). Luego mediante un bucle,
    trabajando con ese array, irías añadiendo a la lista cada uno de esos elementos con el método "Add" del componente Listbox.
    La selección múltiple es una propiedad del Listbox que tienes que activar.
    Imagina una cadena así "Alberto Pedro Juan" por defecto
    el espacio es el separador. Intenta primero usar la orden split con esa cadena y convertir esa cadena a tres elementos de un array de cadena. Con una sola instrucción
    puedes hacerlo, prueba. ;-)

    Saludos!

    ResponderEliminar