Tutorial Nro.5 Desarrollo de Aplicaciones Móviles con Android
Cesar villacis
1. Por: Cesar Villacis.
Control ListBox
El control ListBox permite añadir elementos en forma de lista y también poder
seleccionar elementos de la misma para trabajar los datos.
Este control permite seleccionar un elemento solo o varios de ellos, utilizando la
propiedad Multiselect. La imagen de la izquierda muestra un ListBox en el que se
selecciona un solo elemento y a la derecha se seleccionan varios:
Para agregar elementos a un control ListBox en tiempo de diseño, se debe seleccionar
el control Listbox, y desde la ventana de propiedades ubicarnos en la que se llama
List. Al desplegarla podemos agregar y remover elementos.
Para esto se debe ingresar uno, luego mantener la tecla Ctrl presionada y presionar
Enter, y agregar el siguiente y asi con los demás.
Para agregarlos en tiempo de ejecución, es decir mediante código, se utiliza un método
llamado AddItem.
Por ejemplo si quisiéramos agregar un elemento a un control llamado List1 en el
evento Click de un botón, debemos escribir el nombre del ListBox y presionar el ".".
Visual Basic desplegará la lista de propiedades y métodos del control List, en ella
buscamos el métodoAddItem, como muestra la imagen:
2. El método AddItem tiene 2 parámetros.
AddItem "Elemento que vamos a agregar", "Index (posición)"
El primer parámetro es obligatorio, y es el elemento que vamos a añadir al control List.
El segundo parámetro no es obligatorio, es decir es opcional, y permite especificar el
lugar donde añadir el elemento, es decir la posición. A este se le pasa un número
entero, por ejemplo 0, 1, 5 etc...Si no se especifica una posición, el elemento que se
agrega es añadido al final de la lista.
Por ejemplo, si quisiera agregar 5 nombres de países en un control llamado List1,
cuando presionamos un Command1 :
Private Sub Command1_Click()
List1.AddItem "Brasil"
List1.AddItem "Francia"
List1.AddItem "Italia"
List1.AddItem "Argentina"
List1.AddItem "venezuela"
End Sub
Al probar lo anterior, Visual Basic no dió error al no indicar la posición o el parámetro
Index, ya que como se dijo dicho parámetro es opcional.
Para eliminar un elemento se utiliza el métodoRemoveItem. Este método tiene un
parámetro llamado Index en el cual debemos indicar la posición del elemento que
vamos a eliminar.
Por ejemplo:
Private Sub Command2_Click()
3. 'Eliminamos el elemento 2 de la lista
List1.RemoveItem 2
End Sub
El ejemplo anterior eliminaría de la lista el elemento "Italia". Te preguntarás porque
elimina a "Italia" si este está en la posición 3. En realidad está en la posición 2, ya que
se comienza el conteo desde el 0, es decir en la lista del ejemplo anterior, "Brasil"
tiene el número 0, "Francia" el 1, "Italia" el 2 etc...
Importante: Al eliminar un elemento de la lista, el número relacionado al elemento o
Item a eliminar, debe estar en la lista, ya que si no daría un error al querer eliminar un
Item que no se encuentra.
Ejemplo simple para agregar y eliminar elementos de un control List
Para el siguiente ejemplo colocar los siguientes controles en un formulario como está
en la imagen:
Un control Label1 y en el Caption escribir "Nombre". Un Command1 y en el Caption
"Añadir". Al Command2 "Eliminar Seleccionado". Luego agrega un Text1 al lado del
control Label1 y un control List1.
El elemento que escribamos en el Text1, cuando se presione " Añadir " se agregará al
control List1, cuando presionemos el Command2 se eliminará de la lista el elemento
que se encuentre seleccionado.
Colocar el código en el formulario:
Private Sub Command1_Click()
If Text1 = "" Then
MsgBox "Debe ingresar un nombre para poder agregar un elemento",
vbQuestion + vbOKOnly, "Datos incompletos"
'Salimos de la rutina ya que no se ha ingresado nada en el control
text1
4. Exit Sub
EndIf
'Agregamos el contenido del Text1 en el control List1
List1.AddItem Text1
End Sub
Private Sub Command2_Click()
'Si la lista no está vacía entonces podemos eliminar
If List1.ListIndex <> -1 Then
'Eliminamos el elemento que se encuentra seleccionado
List1.RemoveItem List1.ListIndex
EndIf
End Sub
En el ejemplo anterior cuando se presiona añadir, antes de utilizar el método AddItem
para añadir el contenido del Text1, se comprueba mediante un IF que el Text1 no está
vacío. Si está vacío se muestra un mensaje de error y se sale de la rutina mediante
Exit sub. Si se ha ingresado algún texto, ignora la cláusula IF Then y ejecuta la línea
que añade el Item.
En el botón de Eliminar el elemento seleccionado se utilizan una propiedad que no se
comentó llamada ListIndex. Esta propiedad nos devuelve el número del elemento que
se encuentra seleccionado actualmente. Cuando el ListBox no tiene ningún elemento
seleccionado, el valor de ListIndex es de -1. Para que no de error al querer eliminar un
elemento que no se encuentre seleccionado, primero debemos comprobar que el valor
de ListIndex es distinto a -1, por ejemplo
If List1.ListIdex <> -1 Then ....
Si el valor es distinto a -1 quiere decir que hay un elemento seleccionado, entonces se
procede a la eliminación del mismo, utilizando el métodoRemoveItem pasándole
como parámetro el número de ListIndex.
Propiedad Sorted:
Si quisiéramos ordenar el contenido, es decir los elementos del control List en forma
alfabética, debemos utilizar la propiedad Sorted.
Esta propiedad no se puede utilizar en tiempo de ejecución, si no que la debemos
establecer en tiempo de diseño desde la ventana de propiedades. Si la propiedad está
en True, la lista de elementos se mostrará en forma ordenada, si está en False sin
ordenar. Por defecto esta propiedad está con el Valor False.
Eliminar elementos con el método Clear
Para eliminar todo el contenido de un control ListBox se utiliza el método o función
llamado Clear.
5. Por ejemplo:
Private Sub Command1_Click()
'Elimina todo el contenido del ListBox
List1.Clear
End Sub
Este método no necesita ningún parámetro, solo ejecutarlo para que todo el contenido
del control sea eliminado. Tampoco produce un error si ejecutamos Clear y el ListBox
no tiene elementos, es decir si los tiene los elimina, si no tiene elementos y se ejecuta
Clear, no ocurre nada.
6. Control ComboBox.
Este control muy utilizado en los programas nos permite mediante una lista
desplegable poder seleccionar elementos, como también es posible introducir
elementos a la misma
Otro tipo de vistas del control ComboBox son las siguientes, que se modifican desde la
propiedad Style del control
El primero DropDown es el estilo por defecto y se despliega la lista cuando pulsamos
en la flecha. El segundo Simple Combo ya presenta la lista desplegada y no tiene un
botón para desplegar los elementos. El tercero DropdownList , es igual que el
DropDown, pero con la diferencia que no se puede ingresar un texto, solo se puede
seleccionar elementos.
Este control es muy parecido al control List en lo que se refiere a las propiedades y
métodos para manejar los datos, para agregar elementos se utiliza el
métodoAddItem.
Por ejemplo , el siguiente código añade 50 elementos en un bucle ForNext:
7. Dim Elemento As Integer
For Elemento = 0 To 50
'Agregamos el valor de la variable Elemento al Combo
Combo1.AddItem i
Next
Al igual que el control ListBox, para eliminar todo el contenido se usa el método Clear
'Eliminamos todo el contenido
Combo1.Clear
Al igual que el control List, para averiguar el valor de un determinado elemento se
utiliza la propiedad List especificándole el número del elemento, ListCount (para
saber el número de elementos), ListIndex (saber el elemento seleccionado), el
MétodoRemoveItem (Elimina el elemento especificado) etc..
Propiedad DataField y DataSource
Estas dos propiedades presente en el control ListBox y el control ComboBox, además
de varios otros controles de visual basic, como el Label, TextBox etc..., pemiten
enlazar los controles a una base de datos.
DataField: Devuelve o establece un valor que enlaza un control con un campo
del registro actual.
DataSource: Establece un valor que especifica el control de datos mediante el
cual se enlaza el control actual a una base de datos
Por ejemplo, lo siguiente, enlaza un control Combo1, que previamente está asociado a
un control Data1 mediante la propiedad DataSource, con el campo " Nombres " de una
tabla llamada Clientes, de la base de datos Bd1.Mdb.
Data1.DatabaseName = App.Path& "bd1.mdb"
Data1.RecordSource = "Clientes"
Combo1.DataField = "Nombres"