6
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 así 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 nos dió error al no indicar la posición o el parámetro Index, ya que como se dijo dicho parámetro es opcional. Prof. Joseph Sandoval CoronadoPágina 1

CONTROL LISTBOX - COMBOBOX.docx

Embed Size (px)

Citation preview

CONTROL LISTBOXElcontrol ListBoxpermite aadir elementos en forma de lista y tambin 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 diseo, se debe seleccionar el control Listbox, y desde la ventana de propiedades ubicarnos en la que se llamaList. 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 as con los dems.Para agregarlos en tiempo de ejecucin, es decir mediante cdigo, se utiliza un mtodo llamadoAddItem.Por ejemplo si quisiramos agregar un elemento a un control llamado List1 en el evento Click de un botn, debemos escribir el nombre del ListBox y presionar el ".". Visual Basic desplegar la lista de propiedades y mtodos del control List, en ella buscamos el mtodoAddItem, como muestra la imagen:

El mtodo AddItem tiene 2 parmetros.AddItem "Elemento que vamos a agregar", "Index (posicin)"

El primer parmetro es obligatorio, y es el elemento que vamos a aadir al control List. El segundo parmetro no es obligatorio, es decir es opcional, y permite especificar el lugar donde aadir el elemento, es decir la posicin. A este se le pasa un nmero entero, por ejemplo 0, 1, 5 etc...Si no se especifica una posicin, el elemento que se agrega es aadido al final de la lista.Por ejemplo, si quisiera agregar 5 nombres de pases 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 SubAl probar lo anterior, Visual Basic nos di error al no indicar la posicin o el parmetro Index, ya que como se dijo dicho parmetro es opcional.Para eliminar un elemento se utiliza el mtodoRemoveItem. Este mtodo tiene un parmetro llamadoIndexen el cual debemos indicar la posicin del elemento que vamos a eliminar.Por ejemplo:Private Sub Command2_Click()

'Eliminamos el elemento 2 de la listaList1.RemoveItem 2

End SubEl ejemplo anterior eliminara de la lista el elemento "Italia". Te preguntars porque elimina a "Italia" si este est en la posicin 3. En realidad est en la posicin 2, ya que se comienza el conteo desde el 0, es decir en la lista del ejemplo anterior, "Brasil" tiene el nmero 0, "Francia" el 1, "Italia" el 2 etc...Importante: Al eliminar un elemento de la lista, el nmero relacionado al elemento o tem a eliminar, debe estar en la lista, ya que si no dara un error al querer eliminar un tem que no se encuentra.

Ejemplo simple para agregar y eliminar elementos de un control ListPara 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 "Aadir". 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 " Aadir " se agregar al control List1, cuando presionemos el Command2 se eliminar de la lista el elemento que se encuentre seleccionado.Colocar el cdigo en el formulario:Private Sub Command1_Click()If Text1 = "" ThenMsgBox "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 text1Exit SubEnd If

'Agregamos el contenido del Text1 en el control List1List1.AddItem Text1End Sub

Private Sub Command2_Click()'Si la lista no est vaca entonces podemos eliminarIf List1.ListIndex -1 Then'Eliminamos el elemento que se encuentra seleccionadoList1.RemoveItem List1.ListIndexEnd IfEnd SubEn el ejemplo anterior cuando se presiona aadir, antes de utilizar el mtodo AddItem para aadir el contenido del Text1, se comprueba mediante un IF que el Text1 no est vaco. Si est vaco se muestra un mensaje de error y se sale de la rutina mediante Exit sub. Si se ha ingresado algn texto, ignora la clusula IF Then y ejecuta la lnea que aade el tem.En el botn de Eliminar el elemento seleccionado se utilizan una propiedad que no se coment llamadaListIndex. Esta propiedad nos devuelve el nmero del elemento que se encuentra seleccionado actualmente. Cuando el ListBox no tiene ningn 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 ejemploIf List1.ListIdex -1 Then ....Si el valor es distinto a -1 quiere decir que hay un elemento seleccionado, entonces se procede a la eliminacin del mismo, utilizando el mtodoRemoveItempasndole como parmetro el nmero de ListIndex.Propiedad Sorted:Si quisiramos ordenar el contenido, es decir los elementos del control List en forma alfabtica, debemos utilizar la propiedadSorted.Esta propiedad no se puede utilizar en tiempo de ejecucin, si no que la debemos establecer en tiempo de diseo desde la ventana de propiedades. Si la propiedad est enTrue,la lista de elementos se mostrar en forma ordenada, si est enFalsesin ordenar. Por defecto esta propiedad est con el Valor False.Eliminar elementos con el mtodo ClearPara eliminar todo el contenido de un control ListBox se utiliza el mtodo o funcin llamadoClear.Por ejemplo:Private Sub Command1_Click()

'Elimina todo el contenido del ListBoxList1.Clear

End SubEste mtodo no necesita ningn parmetro, 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 ListCountLa propiedadListCountdevuelve la cantidad de elementos que contiene el control.Por ejemplo, en las siguientes lneas, 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 listadoList1.AddItem "Enero"List1.AddItem "Febrero"List1.AddItem "Marzo"

'Mostramos medianete un mensaje la cantidad de elementos'del contenido del ListBox, en este caso devuelve 3MsgBox List1.ListCountEnd SubPropiedad ListLa propiedadListdevuelve o establece los elementos contenidos en la lista del control.Esta propiedadlleva un parmetro que indica el nmero del elemento que se quiere consultar.Un ejemplo: si quisiera mostrar en un Label1 el texto del elemento que se selecciona, haramos lo siguiente:Colocar unList1y unLabel1. Pegar esto en el formulario:Private Sub Form_Load()'Agregamos 3 elementos al listadoList1.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 elementoLabel1 = List1.List(List1.ListIndex)End SubEn el cdigo anterior, cuando carga el formulario en el evento Load, se agregan 3 elementos cualesquiera. El restante cdigo 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 pasndole otra propiedad ya vista " ListIndex ", obtenemos el texto del elemento actualmente seleccionado.Si pasramos un nmero, nos mostrara el texto del elemento que corresponde a ese nmero dentro del ListBox. Siguiendo el ejemplo anterior en el que tenamos 3 elementos, si se hiciera estoPrivate Sub List1_Click()Label1 = List1.List(2)End Sub...el control Label1 mostrara el texto del elemento 2, que sera "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: PropiedadBackcolor: Establece el color de fondo del control PropiedadEnabled: Permite habilitar o deshabilitar el control ListBox - Valores True y False PropiedadFont: Establece el tipo de fuente, tamao estilo etc... de los elementos PropiedadForeColor: Establece el color de la fuente de los elementos PropiedadHeightyWidth: Establece el ancho y alto del control PropiedadMultiSelect: Permite indicar si el ListBox se podr seleccionar mas de un elemento PropiedadVisible: Si est en True el control ser visible si est en False estar ocultoEventos del control ListBoxLos eventos principales del control son: Evento Click: Ocurre cuando el usuario presiona y libera un botn del mouse encima de un objeto. Evento DblClick: Ocurre cuando el usuario presiona y libera un botn del mouse y despus lo vuelve a presionar y liberar sobre un objeto. Evento DragDrop: Ocurre cuando finaliza una operacin 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 operacin 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 verificacin) y la casilla de verificacin 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 botn 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 botn del mouse mientras un objeto tiene el enfoque. Evento Scroll: Ocurre cuando cambia la posicin 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 validacin.

CONTROL COMBOBOXEste control muy utilizado en los programas nos permite mediante una lista desplegable poder seleccionar elementos, como tambin es posible introducir elementos a la misma

Otro tipo de vistas del control ComboBox son las siguientes, que se modifican desde la propiedadStyledel control

El primero DropDown es el estilo por defecto y se despliega la lista cuando pulsamos en la flecha. El segundoSimple Comboya presenta la lista desplegada y no tiene un botn para desplegar los elementos. El terceroDropdownList, 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 mtodos para manejar los datos, para agregar elementos se utiliza el mtodoAddItem.

Por ejemplo, el siguiente cdigo aade 50 elementos en un bucle For Next:

Dim Elemento As Integer

For Elemento = 0 To 50'Agregamos el valor de la variable Elemento al ComboCombo1.AddItem iNextAl igual que el control ListBox, para eliminar todo el contenido se usa el mtodoClear'Eliminamos todo el contenidoCombo1.ClearAl igual que el control List, para averiguar el valor de un determinado elemento se utiliza la propiedadListespecificndole el nmero del elemento,ListCount(para saber el nmero de elementos),ListIndex(saber el elemento seleccionado), el MtodoRemoveItem(Elimina el elemento especificado) etc.Propiedad DataField y DataSourceEstas dos propiedades presente en el control ListBox y el control ComboBox, adems de varios otros controles de visual basic, como el Label, TextBox etc..., permiten 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"

Prof. Joseph Sandoval CoronadoPgina 4