Descripción
El control CheckBox se utiliza generalmente para listar opciones y que el usuario pueda elegir entre ellas, y dependiendo del valor (si está chequeado o no), se realiza una u otra acción.
Una vista previa de este control:
Propiedad Caption
La propiedad del CheckBox que visualiza el texto en el control se llama Caption. Para establecerla se realiza desde la ventana de Propiedades de Visual Basic , o en tiempo de ejecución de esta manera:
Por ejemplo si quisiéremos hacerlo en el evento Load del Formulario , DobleClick sobre el form y en el procedimiento Form_Load:
- Private Sub Form_Load()
-
- Check1.Caption = "Es usted mayor de edad"
- Check2.Caption = "¿ Tiene hijos ?"
- Check3.Caption = "¿ Estudió alguna carrera ?"
-
- End Sub
Propiedad Value
La principal propiedad de este control es la propiedad Value. Esta propiedad devuelve y establece el valor seleccionado.
Esta tiene 3 posibles valores:
- 0 - UnChecked
- 1 - Checked
- 2 - Grayed
Las mas utilizadas son la 0 - UnChecked y 1 - Checked. Cuando está en 0 , el checkbox no está tildado o checkeado, cuando está en 1 se muestra marcado.
Siguiendo con el ejemplo anterior de la encuesta, un ejemplo que no tiene ningún sentido pero que te de una idea mas clara de como usar este control.
Agrega en un formulario 3 controles CheckBox como muestra la imagen , un botón Command1 para mostrar el resultado y un control textBox llamado Text1 para ingresar un nombre.
Cuando lo presionemos, mostraremos un mensaje que muestre el resultado de la misma, evaluando mediante la propiedad Valuede cada Checkbox. Antes de evaluar los CheckBox comprobamos que se haya ingresado un texto en el Text1, si no se ingresó nada, se muestra un mensaje de advertencia y se termina la rutina mediante la instrucción Exit Sub , en cambio si se ingresó un nombre, visual basic prosigue la ejecución del resto del código:
Código fuente dentro del formulario:
- Option Explicit
-
- Private Sub Command1_Click()
-
-
-
- Dim Resultado As String
-
-
- If Text1 = "" Then
-
- MsgBox "Debe ingresar un nombre", vbExclamation, "Encuesta"
-
-
- Exit Sub
- End If
-
-
-
- Resultado = "Su nombre es " & Text1 & vbNewLine
-
-
- If Check1.Value = 0 Then
- Resultado = Resultado & "Usted no es mayor de edad"
- Else
- Resultado = Resultado & "Usted es mayor de edad"
- End If
-
-
- Resultado = Resultado & vbNewLine
-
-
- If Check2.Value = 0 Then
- Resultado = Resultado & "Usted no tiene Hijos"
- Else
- Resultado = Resultado & "Usted tiene hijos"
- End If
-
-
- Resultado = Resultado & vbNewLine
-
-
- If Check3.Value = 0 Then
- Resultado = Resultado & "Usted no estudió una Carrera"
- Else
- Resultado = Resultado & "Usted estudió una Carrera"
- End If
-
-
- MsgBox Resultado, vbInformation, "Encuesta"
-
- End Sub
-
- Private Sub Form_Load()
-
-
- Command1.Caption = "Mostrar resultados"
- Check1.Caption = "¿ Es usted mayor de edad ?"
- Check2.Caption = "¿ Tiene hijos ?"
- Check3.Caption = "¿ Estudió alguna carrera ?"
- Text1.Text = vbNullString
- End Sub
-
Bueno esto obviamente se podría hacer de muchas otras maneras, pero está puesto así para que se entienda mejor.
Otras propiedades
Las demás propiedades ya se han visto y son comunes a los demás controles de Visual Basic, como son las propiedades de aspecto gráfico y apariencia del control: Propiedad Font, Forecolor, BackColor etc...., y otras como Visible, Enabled , Top, Left, Width, Height etc...
A continuación unos ejemplos simples que no tienen mucho sentido pero sirven para practicar
Cambiar la propiedad FontBold ( Estilo negrita ) de todos los CheckBox que haya en el formulario
Colocar varios controles Check y un botón
- Option Explicit
-
-
- Private Sub Command1_Click()
-
- Static bValue As Boolean
-
-
-
- Dim xCheckBox As Control
-
-
- For Each xCheckBox In Me.Controls
-
- If TypeOf xCheckBox Is CheckBox Then
-
- xCheckBox.FontBold = Not bValue
- End If
- Next
-
- If bValue = False Then
- Command1.Caption = "Negrita"
- Else
- Command1.Caption = "Normal"
- End If
-
- bValue = Not bValue
-
- End Sub
-
- Private Sub Form_Load()
- Command1.Caption = "Normal"
- End Sub
Cambiar la propiedad Value de todos los CheckBox que haya en el formulario
Colocar varios controles CheckBox y un Command
- Option Explicit
-
-
- Private Sub Command1_Click()
-
- Static bValue As Boolean
-
- bValue = Not bValue
-
- Dim xCheckBox As Control
-
- For Each xCheckBox In Me.Controls
-
- If TypeOf xCheckBox Is CheckBox Then
-
- xCheckBox.Value = Abs(bValue)
- End If
- Next
-
- Command1.Caption = "Value: " & CStr(bValue)
-
- End Sub
-
- Private Sub Form_Load()
- Command1.Caption = "Value: Falso"
- End Sub
Propiedad Style
Una propiedad de este control relacionado a su aspecto gráfico es la Propiedad Style:
Esta es similar a la del control CommandButton, y permite tener un checkBox de estilo gráfico o estilo Estándar normal, como muestra esta imagen:
Si está en Graphical, es posible cambiarle el color de fondo y también si queremos podemos mostrar una imagen utilizando la propiedad Picture del Check
Eventos del Control CheckBox
El principal evento del control CheckBox es el evento Click. Si colocas un checkBox en un formulario y le das DobleClick, podés ver que VisualBasic abre la ventana de código y te crea un procedimiento de evento como este:
- Private Sub Check1_Click()
-
- End Sub
Todas las instrucciones que estén en este bloque , se producirán cuando hagamos un click en dicho control:
Un ejemplo
Agrega 1 CheckBox. Luego pega el siguiente código, que lo que hace es que cada ves que se presione, muestre el valor de su propiedad Value. Para poder convertir el valor de Value, que puede ser un 1 o un 0 y a "Verdadero" o "Falso" utilizamos la función CBool que lo que hace es Convertir una expresión a un valor de tipo Boolean.
- Option Explicit
-
- Private Sub Check1_Click()
-
- MsgBox CBool(Check1.Value)
- End Sub
Descripción de los demás eventos
- DragDrop: Ocurre cuando finaliza una operación de arrastrar y colocar.
- DragOver: Ocurre cuando la operación de arrastrar y colocar está en curso.
- GotFocus: Ocurre cuando el checkBox recibe el enfoque
- LostFocus : Ocurre cuando el checkBox pierde el enfoque.
- KeyDown: Ocurre al presionar una tecla mientras el checkBox tiene el enfoque.
- KeyPress : Ocurre al presionar y liberar una tecla ANSI.
- KeyUp : Ocurre cuando se libera una tecla mientras el checkBox tiene el enfoque.
- MouseDown : Cuando el usuario presiona el botón del mouse mientras el checkBox tiene el enfoque.
- MouseUp: Cuando se libera el botón del mouse mientras tiene el enfoque.
- Validate : Ocurre cuando el control checkBox pierde el enfoque en favor de un control que produce una validación.
Ejemplos de eventos
Lo siguiente, utiliza el evento MouseMove del control, para que al pasar el mouse por encima, se visualice una descripción en un control de barra de estado. También, hace un simple efecto, cambiando el color del texto, similar al enlace de una página web.
Coloca en el formulario un control Check1, un control StatusBar, y el siguiente código fuente.
- Option Explicit
-
-
- Private bMouseEnter As Boolean
-
-
-
- Private Sub Check1_Click()
- With Check1
- If .Value = 0 Then .ForeColor = vbBlack
- If .Value = 1 Then .ForeColor = vbRed
- End With
- End Sub
-
- Private Sub Check1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
- If bMouseEnter = False Then
- bMouseEnter = True
-
- Call CambiarPropiedad(Check1, True)
- StatusBar1.Panels(1).Text = "Un texto descriptivo ...."
- End If
- End Sub
-
- Private Sub Form_Load()
-
-
- With StatusBar1
- .Style = sbrNormal
- .Panels(1).AutoSize = sbrSpring
- End With
-
- With Check1
- .FontName = "Verdana"
- .FontSize = 12
- .FontBold = True
- End With
- End Sub
-
- Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
- If bMouseEnter Then
- bMouseEnter = False
-
- Call CambiarPropiedad(Check1, False)
- StatusBar1.Panels(1).Text = ""
- End If
- End Sub
-
- Private Sub CambiarPropiedad(CheckBox As CheckBox, bMouse As Boolean)
- With CheckBox
- If bMouse Then
-
- .ForeColor = vbBlue
- .FontUnderline = True
- Else
-
- If .Value = 0 Then .ForeColor = vbBlack
- If .Value = 1 Then .ForeColor = vbRed
- .FontUnderline = False
- End If
- End With
- End Sub
Ejemplo para crear un CheckBox propio mediante controles Image
Este ejemplo para descargar es muy simple y muestra como se puede crear un control Check utilizando gráficos personalizados, es decir creado por nosotros, como muestra la imagen:
El ejemplo está hecho con dos controles image, uno llamado ImageCheck, que tiene cargado el gráfico para mostrar el valor checkeado, el otro control Image llamado ImageUncheck, tiene el otro gráfico sin el check. Luego al presionar los controles Image, en el evento click, si el ImageUncheck está visible, se oculta, si está invisible se visualiza, y los mismo con el otro image.
Descargar ejemplo