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.
- Option Explicit
- Private Sub Command1_Click()
- ' -- Esta variable almacenará los datos para mostrar
- ' -- el resultado al final de la rutina
- Dim Resultado As String
- ' -- Esto verificará si el text1 no está vacio y se ha ingresado un nombre
- If Text1 = "" Then
- ' -- si está vacío mostramos el mensaje
- MsgBox "Debe ingresar un nombre", vbExclamation, "Encuesta"
- ' -- Mediante Exit Sub salimos de la rutina para
- ' -- no ejecutar las líneas que debajo
- Exit Sub
- End If
- ' -- Ahora guardamos en la Variable Resultado el nombre que
- ' -- se ingresó en el control text1
- Resultado = "Su nombre es " & Text1 & vbNewLine
- ' -- Evaluamos el Check1 (mayor de edad)
- If Check1.Value = 0 Then
- Resultado = Resultado & "Usted no es mayor de edad"
- Else
- Resultado = Resultado & "Usted es mayor de edad"
- End If
- ' -- Le agregamos a la variable resultado un salto de carro o salto de línea
- Resultado = Resultado & vbNewLine
- ' -- Evaluamos el Check2 (Si tiene hijos )
- If Check2.Value = 0 Then
- Resultado = Resultado & "Usted no tiene Hijos"
- Else
- Resultado = Resultado & "Usted tiene hijos"
- End If
- ' -- Otro salto de carro
- Resultado = Resultado & vbNewLine
- ' -- Evaluamos el Check3 (si estudió)
- If Check3.Value = 0 Then
- Resultado = Resultado & "Usted no estudió una Carrera"
- Else
- Resultado = Resultado & "Usted estudió una Carrera"
- End If
- ' -- Mostramos el valor de la variable Resultado con la información
- MsgBox Resultado, vbInformation, "Encuesta"
- End Sub
- Private Sub Form_Load()
- ' -- Establecer Caption de los controles
- 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
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
- ' Variable de tipo control
- Dim xCheckBox As Control
- ' Recorrer en un bucle todos los controles del formulario actual
- For Each xCheckBox In Me.Controls
- ' Comprobar con el operador TypeOf si es un control CheckBox
- If TypeOf xCheckBox Is CheckBox Then
- ' Cambia la propiedad Bold
- 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
- ' Recorrer en un bucle todos los controles del form
- For Each xCheckBox In Me.Controls
- ' Comprobar con el operador TypeOf si es un control CheckBox
- If TypeOf xCheckBox Is CheckBox Then
- ' Cambiar la propiedad Value
- 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()
- ' -- Mostramos el valor de la propiedad Value del Check1
- 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
- ' -- Flag
- Private bMouseEnter As Boolean
- ' -- Cambiar color del texto al cambiar el value
- ' ------------------------------------------------------
- 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
- ' -- Resaltar texto y mostrar la descripción en la barra de estado
- Call CambiarPropiedad(Check1, True)
- StatusBar1.Panels(1).Text = "Un texto descriptivo ...."
- End If
- End Sub
- Private Sub Form_Load()
- ' -- Propiedades de la barra de estado
- With StatusBar1
- .Style = sbrNormal ' -- Estilo
- .Panels(1).AutoSize = sbrSpring ' -- ajustar al ancho
- End With
- ' -- Propiedades iniciales de la fuente
- 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
- ' -- Volver a colocar el texto normal
- 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
- ' subrayar el texto y colocarlo en azul
- .ForeColor = vbBlue
- .FontUnderline = True
- Else
- ' texto normal
- 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.
Tomar la apariencia de los temas de windows
Como habrás notado, cuando creas el ejecutable de tu programa, el control checkBox y resto de controles del formulario, no visualizan los temas que tenga presente windows. Para poder visualizarlos con el tema presente que se encuentre actualmente activado , y de esta manera el programa tenga una mejor interfaz gráfica, se utiliza un archivo Manifest.
En este enlace hay un ejemplo que puedes utilizar para realizar esto : Aplicar el tema de windows a controles del programa
Crear Array de controles CheckBox en tiempo de ejecución
Para poder crear array de controles en Visual basic en tiempo de ejecución, es muy simple y en muchas ocaciones es fundamental su utilización. En el siguiente enlace puedes ver un ejemplo. ( El ejemplo no es para CheckBox pero sirve de todas formas ) Ver ejemplo
Crear matrices de controles
El uso de los arreglos de controles, o también llamados matrices de controles, son fundamentales en el uso en la mayoría de los programas. Estos son fáciles de implementarlos, permiten optimizar código, facilitar las tareas de codificación , optimización de recursos del programa, y muchas otras ventajas . En el siguiente enlace puedes ver un ejemplo de como crearlos : Arreglos de controles en vb
No hay comentarios:
Publicar un comentario