comando listbox y combobox

Anuncio
COMANDO 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étodo AddItem, como muestra la imagen:
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étodo RemoveItem. 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()
'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
Exit Sub
End If
'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
End If
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étodo RemoveItem 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 propiedadSorted.
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 Falsesin 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.
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.
PROPIEDAD LISTCOUNT
La propiedad ListCount devuelve la cantidad de elementos que contiene el
control.
Por ejemplo, en las siguientes líneas, cuando se presiona un Command1, se
agregan 3 elementos. Luego se muestra un mensaje, mediante un MsgBox,
con la cantidad de elementos del control, consultando el valor de la propiedad
ListCount :
Private Sub Command1_Click()
'Agregamos 3 elementos al listado
List1.AddItem "Enero"
List1.AddItem "Febrero"
List1.AddItem "Marzo"
'Mostramos medianete un mensaje la cantidad de elementos
'del contenido del ListBox, en este caso devuelve 3
MsgBox List1.ListCount
End Sub
PROPIEDAD LIST
La propiedad List devuelve o establece los elementos contenidos en la lista del
control. Esta propiedad lleva un parámetro que indica el número del elemento
que se quiere consultar. Un ejemplo: si quisiera mostrar en un Label1 el texto
del elemento que se selecciona, haríamos lo siguiente:
Colocar un List1 y un Label1. Pegar esto en el formulario:
Private Sub Form_Load()
'Agregamos 3 elementos al listado
List1.AddItem "Enero"
List1.AddItem "Febrero"
List1.AddItem "Marzo"
End Sub
Private Sub List1_Click()
'Cuando hacemos Click en un elemento del List1 _
mostramos en el Label1 el texto del elemento
Label1 = List1.List(List1.ListIndex)
End Sub
En el código anterior, cuando carga el formulario en el evento Load, se agregan
3 elementos cualquiera. El restante código se encuentra en el evento Click del
control List, por eso se ejecutará cada vez que hagamos un Click en el mismo,
y utilizando la propiedad List y pasándole otra propiedad ya vista " ListIndex ",
obtenemos el texto del elemento actualmente seleccionado.
Si pasáramos un número, nos mostraría el texto del elemento que corresponde
a ese número dentro del ListBox. Siguiendo el ejemplo anterior en el que
teníamos 3 elementos, si se hiciera esto
Private Sub List1_Click()
Label1 = List1.List(2)
End Sub
...el control Label1 mostraría el texto del elemento 2, que sería "Marzo". Esto
como ya se indicó antes es porque el primer elemento en la lista es el 0, que en
este caso corresponde a "Enero", el segundo elemento es el 1, en este caso
"Febrero" , etc...
Otras propiedades del control ListBox son:
 Propiedad Backcolor : Establece el color de fondo del control
 Propiedad Enabled : Permite habilitar o deshabilitar el control ListBox Valores True y False
 Propiedad Font : Establece el tipo de fuente, tamaño estilo etc... de los
elementos
 Propiedad ForeColor : Establece el color de la fuente de los elementos
 Propiedad Height y Width : Establece el ancho y alto del control
 Propiedad MultiSelect : Permite indicar si el ListBox se podrá
seleccionar mas de un elemento
 Propiedad Visible : Si está en True el control será visible si está en
False estará oculto
Eventos del control ListBox
Los eventos principales del control son:
 Evento Click: Ocurre cuando el usuario presiona y libera un botón del
mouse encima de un objeto.
 Evento DblClick: Ocurre cuando el usuario presiona y libera un botón del
mouse y después lo vuelve a presionar y liberar sobre un objeto.
 Evento DragDrop: Ocurre cuando finaliza una operación de arrastrar y
colocar. en este enlace hay un ejemplo simple del uso de este
evento: DragDrop entre dos listbox
 Evento DragOver: Ocurre cuando una operación de arrastrar y colocar
está en curso.
 Evento GotFocus: Ocurre cuando el control recibe el enfoque.
 Evento LostFocus: Ocurre cuando un objeto Pierde el enfoque el control
 Evento ItemCheck: Ocurre cuando la propiedad Style de un control
ListBox es 1 (casillas de verificación) y la casilla de verificación de un
elemento en el control ListBox está activada o desactivada.
 Evento KeyDown: Ocurre cuando el usuario presiona una tecla mientras
un objeto tiene el enfoque.
 Evento KeyPress: Ocurre cuando el usuario presiona y libera una tecla
ANSI.
 Evento KeyUp: se produce cuando el usuario libera una tecla mientras el
control tiene el enfoque.





Evento MouseDown: Ocurre cuando el usuario presiona el botón del
mouse mientras un objeto tiene el enfoque.
Evento MouseMove: Ocurre cuando el usuario mueve el mouse.
Evento MouseUp: Ocurre cuando el usuario libera el botón del mouse
mientras un objeto tiene el enfoque.
Evento Scroll: Ocurre cuando cambia la posición de un cuadro de
desplazamiento en un control, es decir cuando se mueve la barra de
Scoll
Evento Validate: Se produce cuando un control pierde el enfoque en
favor de un control que produce una validación.
COMANDO 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étodo AddItem. Por ejemplo , el siguiente código añade 50
elementos en un bucle For Next:
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étodo RemoveItem (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
Descargar