Cuadro combinado

LIST BOX Y COMBO BOX

Se obtienen directamente de la caja de herramientas:

Un control ListBox muestra una lista de elementos en la que el usuario puede seleccionar uno o más. Si el número de elementos supera el número que puede mostrarse, se agregará automáticamente una barra de desplazamiento al control ListBox.

Un control ComboBox combina las características de un control TextBox y un control ListBox. Los usuarios pueden introducir información en la parte del cuadro de texto y seleccionar un elemento en la parte de cuadro de lista del control. En resumen, un ComboBox es la combinación de un ListBox, que se comporta como si de un ListBox se tratase, y de un TextBox, con comportamiento análogo a un TextBox sencillo, con la particularidad aquí de que el texto se le puede introducir por teclado, o elegir uno de los que figuran en la parte ListBox del Combo.

El ComboBox está normalmente sin desplegar. Se despliega cuando se hace click con el ratón en la flecha que tiene en su parte derecha. Al desplegarse, muestra la lista con todos sus elementos. Haciendo click con el ratón en cualquiera de sus elementos, el elemento elegido pasa a la parte TextBox del Combo y la lista vuelve a replegar.

El ListBox (y por tanto el ComboBox) tiene unas propiedades y métodos particulares que solamente se pueden aplicar durante el tiempo de ejecución:

ListCount - Indica el número de elementos que tiene la lista
ListIndex - Indica el número de orden del elemento seleccionado dentro de la lista.
AddItem - Añade un elemento a la lista.
RemoveItem - Elimina un elemento de la lista.
Text - Obtiene el elemento seleccionado.
List (n) - Obtiene el elemento cuyo orden dentro de la lista es n.
ListCount valdrá 0 si la lista no tiene ningún elemento, y n si tiene n elementos.

Para seleccionar un elemento de la lista, basta con hacer click con el ratón sobre él. Ese elemento se resaltará con fondo en azul. Una vez seleccionado un elemento, la propiedad ListIndex tomará el valor del número de orden que ocupa ese elemento en la lista, comenzando por el 0 para el elemento que ocupa el primer lugar. Si no se selecciona ningún elemento, el valor de la propiedad ListIndex será -1. El primer elemento de la lista es ListIndex 0, y el valor de la propiedad ListCount siempre es uno más que el valor mayor de ListIndex.

En el ComboBox la propiedad Text contiene el texto que contenga la parte TextBox del Combo, bien haya sido introducida desde teclado o mediante la recuperación de un elemento la parte ListBox del mismo.

PROPIEDADES DE ListBox y de ComboBox

Las señaladas con (*) son comunes a ambos controles y no presentan novedades respecto a las ya comentadas para los controles precedentes.

Appearance (*)
Backcolor (*)
Columns Propiedad de ListBox solamente

Determina si los elementos se presentan en una sola columna o en varias columnas, y la forma de presentar los elementos en el ListBox. Si esta propiedad se pone a 0 la lista tendrá solamente una columna, y presentará los elementos uno debajo de otro. Cuando los elementos sean mas que los que se pueden presentar en la lista, aparecen automáticamente unas barras de desplazamiento vertical.
Si la propiedad se pone a un número distinto a 0, el ListBox es de tipo multicolumna, presentará en cada columna los elementos que le quepan dependiendo de su dimensión vertical, y tendrá tantas columnas como sea necesario para albergar el número de elementos que tenga. Presentará en su cuadro tantas columnas como se le indique en el valor de esta propiedad, y si no puede presentar todos los elementos en las columnas que muestra, le aparecerán barras de desplazamiento horizontales para poder movernos por todas las columnas que tenga.
Recuerde : El número que se le asigna a la propiedad Columns no indica el número de columnas que tendrá el ListBox sino el número de columnas que presenta.

Esta propiedad puede asignarse en diseño, mediante la caja de propiedades, o en tiempo de ejecución mediante una instrucción como esta:

Nombrelista.Columns = número

Esta propiedad no puede definirse a 0 o cambiada desde 0 en tiempo de ejecuciones decir, no se puede convertir en tiempo de ejecución un ListBox de múltiples columnas en un ListBox de columna única o un ListBox de columna única en un ListBox de múltiples columnas. Sin embargo, sí es posible cambiar durante la ejecución el número de columnas de un ListBox de múltiples columnas.

DataField DataSource.
Establecen la base de datos y el campo donde están los datos que se llevarán al TextBox o ComboBox para presentar datos procedentes de una Base de Datos.

DragIcon (*)
DragMode (*)
Enabled (*)
Font (*)
ForeColor (*)
Height (*)
HelpContextID (*)
Index (*)
IntegralHeight No aplicable a ListBox o ComboBox
ItemData Propiedad muy importante.


 

 

 


Devuelve o establece un número específico para cada elemento de un control ComboBox o ListBox.

Sintaxis

objeto.ItemData(índice) [= número]

La sintaxis de la propiedad ItemData tiene las siguientes partes:

objeto Nombre del ListBox o ComboBox.

índice.- El número de un elemento concreto del objeto.

número.- El número que se asocia con el elemento especificado.

Comentarios

La propiedad ItemData es una matriz de valores enteros largos cuyo número de elementos es el valor de la propiedad ListCount del control. Los números asociados con cada elemento se pueden usar para cualquier fin. Por ejemplo, se puede usar en la confección de una lista de teléfonos, el número de identificación de un empleado, etc. Cuando se rellena el ListBox, también se rellena los elementos correspondientes de la matriz ItemData con los números correspondientes.

La propiedad ItemData se usa a menudo como índice de una matriz de estructuras de datos asociados con los elementos de un control ListBox.

Nota Cuando se inserta un elemento en una lista con el método AddItem, el elemento también se inserta automáticamente en la matriz ItemData. Sin embargo, el valor no se reinicializa a cero; retiene el valor que estaba en esa posición antes agregar el elemento a la lista. Cuando se usa la propiedad ItemData, asegúrese de establecer su valor al agregar nuevos elementos a la lista.

Left (*)
List Es el contenido de la lista.

Si la lista de elementos es corta e invariable, pueden introducirse los elementos en el cuadro de propiedades durante el diseño.

MouseIcon (*)
MousePointer (*)
Name (*)

Sorted
Establece o devuelve un valor que indica si los elementos de un ListBox o ComboBox se colocan automáticamente en orden alfabético. Los valores que puede adoptar son True o False.


True Los elementos de la lista se ordenan alfabéticamente (sin distinguir entre mayúsculas y minúsculas).
False (Predeterminado) Los elementos de la lista no se ordenan alfabéticamente.

Cuando esta propiedad tiene el valor True, Visual Basic se encarga de casi todo el procesamiento de cadenas necesario para mantener el orden alfabético, incluyendo el cambio de los números de índice cuando se agregan o eliminan elementos.

Nota: El uso del método AddItem para agregar un elemento en una posición específica de la lista puede romper el orden alfabético, y los elementos agregados con posterioridad pueden no ordenarse correctamente.

TabIndex (*)
TabStop (*)
Tag (*)
Top (*)
Visible (*)
WhatsThisHelpID (*)
Width (*)


 

 


PROCEDIMIENTOS

Click Change (Solo ComboBox) DblClick
DragDrop DragOver DropDown (Solo ComboBox)
GotFocus KeyDown KeyPress
KeyUp LostFocus MouseDown (Solo ListBox)
MouseMove (Solo ListBox) MouseUp (Solo ListBox)

NOTA MUY IMPORTANTE
El procedimiento Change del ComboBox solamente se efectúa cuando el cambio se produce mediante la entrada de un texto DESDE EL TECLADO, no por un cambio en la parte Text de este control, producido al llevar un elemento desde la parte List a la parte Text.