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


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 Option1Option2 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


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

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 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

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. 
·        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


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"









Referencias

Comentarios

  1. 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

    ResponderBorrar
  2. Es 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.
    29729320

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Versiones de PowerPoint

PowerPoint: Transición y SmartArt