-- -- Indice
· Descripción
· Propiedad caption
· Propiedad Value
· Otras propiedades
· Propiedad Style
· Eventos
· Ejemplos de eventos
· Crear CheckBox con un control Image
· Tomar la apariencia de los temas de windows
· Array de controles en tiempo de ejecución
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:
Texto o codigo
1. Private Sub Form_Load()
2.
3. Check1.Caption = "Es usted mayor de edad"
4. Check2.Caption = "¿ Tiene hijos ?"
5. Check3.Caption = "¿ Estudió alguna carrera ?"
6.
7. End Sub
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 Value de 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:
Texto o codigo
1. Option Explicit
2.
3. Private Sub Command1_Click()
4.
5. ' -- Esta variable almacenará los datos para mostrar
6. ' -- el resultado al final de la rutina
7. Dim Resultado As String
8.
9. ' -- Esto verificará si el text1 no está vacio y se ha ingresado un nombre
10. If Text1 = "" Then
11. ' -- si está vacío mostramos el mensaje
12. MsgBox "Debe ingresar un nombre", vbExclamation, "Encuesta"
13. ' -- Mediante Exit Sub salimos de la rutina para
14. ' -- no ejecutar las líneas que debajo
15. Exit Sub
16. End If
17.
18. ' -- Ahora guardamos en la Variable Resultado el nombre que
19. ' -- se ingresó en el control text1
20. Resultado = "Su nombre es " & Text1 & vbNewLine
21.
22. ' -- Evaluamos el Check1 (mayor de edad)
23. If Check1.Value = 0 Then
24. Resultado = Resultado & "Usted no es mayor de edad"
25. Else
26. Resultado = Resultado & "Usted es mayor de edad"
27. End If
28.
29. ' -- Le agregamos a la variable resultado un salto de carro o salto de línea
30. Resultado = Resultado & vbNewLine
31.
32. ' -- Evaluamos el Check2 (Si tiene hijos )
33. If Check2.Value = 0 Then
34. Resultado = Resultado & "Usted no tiene Hijos"
35. Else
36. Resultado = Resultado & "Usted tiene hijos"
37. End If
38.
39. ' -- Otro salto de carro
40. Resultado = Resultado & vbNewLine
41.
42. ' -- Evaluamos el Check3 (si estudió)
43. If Check3.Value = 0 Then
44. Resultado = Resultado & "Usted no estudió una Carrera"
45. Else
46. Resultado = Resultado & "Usted estudió una Carrera"
47. End If
48.
49. ' -- Mostramos el valor de la variable Resultado con la información
50. MsgBox Resultado, vbInformation, "Encuesta"
51.
52. End Sub
53.
54. Private Sub Form_Load()
55.
56. ' -- Establecer Caption de los controles
57. Command1.Caption = "Mostrar resultados"
58. Check1.Caption = "¿ Es usted mayor de edad ?"
59. Check2.Caption = "¿ Tiene hijos ?"
60. Check3.Caption = "¿ Estudió alguna carrera ?"
61. Text1.Text = vbNullString
62. End Sub
63.
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
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
Texto o codigo
1. Option Explicit
2.
3.
4. Private Sub Command1_Click()
5.
6. Static bValue As Boolean
7.
8. ' Variable de tipo control
9.
10. Dim xCheckBox As Control
11.
12. ' Recorrer en un bucle todos los controles del formulario actual
13. For Each xCheckBox In Me.Controls
14. ' Comprobar con el operador TypeOf si es un control CheckBox
15. If TypeOf xCheckBox Is CheckBox Then
16. ' Cambia la propiedad Bold
17. xCheckBox.FontBold = Not bValue
18. End If
19. Next
20.
21. If bValue = False Then
22. Command1.Caption = "Negrita"
23. Else
24. Command1.Caption = "Normal"
25. End If
26.
27. bValue = Not bValue
28.
29. End Sub
30.
31. Private Sub Form_Load()
32. Command1.Caption = "Normal"
33. End Sub
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
Texto o codigo
1. Option Explicit
2.
3.
4. Private Sub Command1_Click()
5.
6. Static bValue As Boolean
7.
8. bValue = Not bValue
9.
10. Dim xCheckBox As Control
11. ' Recorrer en un bucle todos los controles del form
12. For Each xCheckBox In Me.Controls
13. ' Comprobar con el operador TypeOf si es un control CheckBox
14. If TypeOf xCheckBox Is CheckBox Then
15. ' Cambiar la propiedad Value
16. xCheckBox.Value = Abs(bValue)
17. End If
18. Next
19.
20. Command1.Caption = "Value: " & CStr(bValue)
21.
22. End Sub
23.
24. Private Sub Form_Load()
25. Command1.Caption = "Value: Falso"
26. End Sub
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:
Texto o codigo
1. Private Sub Check1_Click()
2.
3. End Sub
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.
Texto o codigo
1. Option Explicit
2.
3. Private Sub Check1_Click()
4. ' -- Mostramos el valor de la propiedad Value del Check1
5. MsgBox CBool(Check1.Value)
6. End Sub
7.
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.
Texto o codigo
1. Option Explicit
2.
3. ' -- Flag
4. Private bMouseEnter As Boolean
5.
6. ' -- Cambiar color del texto al cambiar el value
7. ' ------------------------------------------------------
8. Private Sub Check1_Click()
9. With Check1
10. If .Value = 0 Then .ForeColor = vbBlack
11. If .Value = 1 Then .ForeColor = vbRed
12. End With
13. End Sub
14.
15. Private Sub Check1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
16. If bMouseEnter = False Then
17. bMouseEnter = True
18. ' -- Resaltar texto y mostrar la descripción en la barra de estado
19. Call CambiarPropiedad(Check1, True)
20. StatusBar1.Panels(1).Text = "Un texto descriptivo ...."
21. End If
22. End Sub
23.
24. Private Sub Form_Load()
25.
26. ' -- Propiedades de la barra de estado
27. With StatusBar1
28. .Style = sbrNormal ' -- Estilo
29. .Panels(1).AutoSize = sbrSpring ' -- ajustar al ancho
30. End With
31. ' -- Propiedades iniciales de la fuente
32. With Check1
33. .FontName = "Verdana"
34. .FontSize = 12
35. .FontBold = True
36. End With
37. End Sub
38.
39. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
40. If bMouseEnter Then
41. bMouseEnter = False
42. ' -- Volver a colocar el texto normal
43. Call CambiarPropiedad(Check1, False)
44. StatusBar1.Panels(1).Text = ""
45. End If
46. End Sub
47.
48. Private Sub CambiarPropiedad(CheckBox As CheckBox, bMouse As Boolean)
49. With CheckBox
50. If bMouse Then
51. ' subrayar el texto y colocarlo en azul
52. .ForeColor = vbBlue
53. .FontUnderline = True
54. Else
55. ' texto normal
56. If .Value = 0 Then .ForeColor = vbBlack
57. If .Value = 1 Then .ForeColor = vbRed
58. .FontUnderline = False
59. End If
60. End With
61. End Sub
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
* Volver al índice del Menú
No hay comentarios:
Publicar un comentario