Controles Avanzados
Control OptionButton - Botón de opción
La función específica del control OptionButton es
permitirle al usuario elegir entre diferentes opciones dentro de un grupo de
opciones. Este control no se utiliza de a uno solo, si no que se debe tener por
lo menos 2 de ellos, ya que sería ilógico utilizar uno solo.
En este grupo de opciones solo puede estar un solo botón de
opción seleccionado al mismo tiempo.
Luego,
de acuerdo a la opción seleccionada, se utiliza en algún procedimiento o
función para realizar alguna opción u operación.
Propiedad Value del OptionButton
Esta
es la propiedad más importante de este control. Los valores que puede tener la
propiedad Value son de tipo boolean (Verdadero - Falso) es decir True y False.
Para
probar un ejemplo muy fácil de como verificar el valor de la propiedad Value ,
agrega 3 OptionButton dentro de un control Frame como muestra la imagen
anterior.
Mediante
la propiedad Caption le cambias el texto de cada botón de
opción. Luego Agrega un Command1 y en el caption escribe Aceptar.
Ahora
pega este código en el formulario:
Private Sub Command1_Click()
'Si está seleccionado el Option1 se ejecuta la siguiente condición
If Option1.Value = True Then
MsgBox "Seleccionaste pagar en Efectivo"
End If
'Si está seleccionado el Option2 esta
If Option2.Value = True Then
MsgBox "Seleccionaste pagar con Tarjeta de crédito"
End If
'Si está seleccionado el Option3 se ejecuta esta otra
If Option3.Value = True Then
MsgBox "Seleccionaste pagar mediante Cheque"
End If
End Sub
'Si está seleccionado el Option1 se ejecuta la siguiente condición
If Option1.Value = True Then
MsgBox "Seleccionaste pagar en Efectivo"
End If
'Si está seleccionado el Option2 esta
If Option2.Value = True Then
MsgBox "Seleccionaste pagar con Tarjeta de crédito"
End If
'Si está seleccionado el Option3 se ejecuta esta otra
If Option3.Value = True Then
MsgBox "Seleccionaste pagar mediante Cheque"
End If
End Sub
Al probar el ejemplo se puede ver que al seleccionar un botón de opción, y luego presionar el Command1, se evalúa mediante una condición If Then, el valor de los Option1, Option2 y Option3. El Optionbutton que se encuentre con el valor True en la propiedad Value, ejecutará la función MsgBox mostrando el mensaje correspondiente a la opción seleccionada.
Este
control, al igual que control CommandButton y el control CheckBox, tiene la
propiedad Style, que permite establecer la visualización del mismo
en modo estándar o en modo gráfico. Los posibles valores son 0 -
Standar o 1 - Graphical.
Las
demás propiedades que posee son comunes a la mayoría de los otros controles del
visual basic, como:
·
Propiedad Forecolor (color
de la fuente)
·
Propiedad Font ( para
especificar el tipo de fuente, el estílo, el tamaño, etc)
·
Propiedad Enabled (
Para habilitar o deshabilitar el control )
·
Propiedad Hight y Width (
Ancho y alto del control )
·
Propiedad Backcolor (
color del fondo )
· Propiedad ToolTipText (
Muestra un recuadro con información adicional cuando el mouse está encima del
control )
·
Propiedad Visible (determina si el control estará visible - Los valores son True y False)
Otro ejemplo del control OptionButton
Coloca
2 controles OptionButton llamados Option1 y Option2 dentro de un control Frame
(opcional). También colocar un control Label llamado Label1, como
está en esta imagen:
Al
Option1 en la propiedad Caption escribir " Mostrar
la hora del sistema " y en el Option2 "Mostrar la Fecha
del sistema".
Este
ejemplo muy simple lo que hace es, cuando hacemos Click en el
Option1, se visualizará la hora en el Label1 usando la función Time que
devuelve la hora establecida del Pc. En cambio cuando hagamos Click en
el Option2 se visualizará la Fecha, en este caso
usamos la función Date del Visual Basic que recupera la Fecha.
Esto
se realiza en el evento Click de cada OptionButton. El Evento Click es
la propiedad por defecto. y desde la ventana de diseño al hacer un doble Click
sobre el Option1, se abrirá la ventana de código con el procedimiento Click
para este Option1, y todas las instrucciones de código que estén en ese
procedimiento, entre Private Sub Option1_Click y End
Sub, se ejecutarán cuando se le de un click a dicho botón de opción.
Pegar
este código en el formulario:
Private Sub Form_Load()
'Le establecemos en tiempo de ejecución algunas propiedades al control Label1
'cuando carga el formulario
'Esto hace que el control Label se ajuste al texto
Label1.AutoSize = True
'Esta línea cambia la propiedad Forecolor del Label en azul
Label1.ForeColor = vbBlue
End Sub
Private Sub Option1_Click()
'Mostramos en el Label1 la fecha del Sistema
Label1 = Date
End Sub
Private Sub Option2_Click()
'Mostramos en el Label1 la Hora del sistema
Label1 = Time
End Sub
'Le establecemos en tiempo de ejecución algunas propiedades al control Label1
'cuando carga el formulario
'Esto hace que el control Label se ajuste al texto
Label1.AutoSize = True
'Esta línea cambia la propiedad Forecolor del Label en azul
Label1.ForeColor = vbBlue
End Sub
Private Sub Option1_Click()
'Mostramos en el Label1 la fecha del Sistema
Label1 = Date
End Sub
Private Sub Option2_Click()
'Mostramos en el Label1 la Hora del sistema
Label1 = Time
End Sub
Por último un detalle importante sobre el uso de los OptionButton
Por
ejemplo supongamos que queremos en un mismo formulario, tener varios grupos de
opciones .Para hacer esto se deben colocar el grupo de OptionButton contenidos
en un control contenedor, por ejemplo un Frame, de esta manera cada grupo de
OptionButton será único. Para que se entienda mejor un ejemplo.
Colocar
2 Controles Frame (Frame1 y Frame2 ) . Dentro del Frame1 agregar 2 OptionButton
(Option1 y Option2) y en el Frame2 otros 2 Option (Option3 y Option4)
Ahora
puede haber varios Option Button seleccionados, cosa que no ocurriría si todos
los OptionButton estarían en el mismo control contenedor.
Por
último coloca el Option3 y Option4 dentro del Frame1. Ahora estos 2 son parte
de un solo grupo dentro del Frame1, por lo tanto con esta prueba se ve que solo
puede haber uno con la propiedad Value en True, es
decir un solo botón de opción seleccionado al mismo tiempo.
Las casillas de verificación (CheckBox)
Las casillas de verificación sólo pueden devolver dos valores:
marcada o no marcada (True o False). En cada clic del usuario, el control pasa
del estado marcado al estado no marcado, y viceversa.
Para
agregar una casilla de verificación a su cuadro de diálogo, haga clic en el
iconoPropiedades de las Casillas de Verificación
- Caption: Descripción que acompaña a la casilla
- Enabled True/False:. Determina si está habilitado para responder a las acciones del usuario.
- Name: Nombre del control.
- Unchecked: (Vacío, no marcado)
- Checked (Marcado)
- Grayed (Gris, Indefinido)
- Visible :Determina si la casilla está visible o no.
- Click: Ocurre cuando el usuario hace clic sobre la casilla del Cuadro de herramientas y haga clic y arrastre el ratón en el UserForm para hacer aparecer un control CheckBox.
Por ejemplo, la siguiente casilla de verificación permite activar
el botón Aceptar cuando está marcada.
Al abrir el UserForm, debemos especificar
que:
·
el botón Aceptar no es
accesible,
·
el estado de la casilla de verificación es
no marcada.
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é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
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
'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
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
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.
Por ejemplo:
Private Sub Command1_Click()
'Elimina todo el contenido del ListBox
List1.Clear
End Sub
'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
'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
'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
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.
·
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.
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
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
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
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"
Data1.RecordSource = "Clientes"
Combo1.DataField = "Nombres"
Los eventos del control son los mismos que en anteriores controles, aunque no se suele asociar código a los eventos de este tipo de controles, sino únicamente conocer el valor que tienen: true o false. 30.286.670
ResponderBorrarEs bueno recalcar que el nombre "ComboBox" se le es otorgado a ese botón como referencia a que es una «combinación» entre una lista desplegable y un cuadro de texto.
ResponderBorrar29729320