viernes, 9 de abril de 2010

Checbox y Radiobutton

CHECKBOX

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:

  1. Private Sub Form_Load()
  2. Check1.Caption = "Es usted mayor de edad"
  3. Check2.Caption = "¿ Tiene hijos ?"
  4. Check3.Caption = "¿ Estudió alguna carrera ?"
  5. 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.




  1. Option Explicit
  2. Private Sub Command1_Click()
  3. ' -- Esta variable almacenará los datos para mostrar
  4. ' -- el resultado al final de la rutina
  5. Dim Resultado As String
  6. ' -- Esto verificará si el text1 no está vacio y se ha ingresado un nombre
  7. If Text1 = "" Then
  8. ' -- si está vacío mostramos el mensaje
  9. MsgBox "Debe ingresar un nombre", vbExclamation, "Encuesta"
  10. ' -- Mediante Exit Sub salimos de la rutina para
  11. ' -- no ejecutar las líneas que debajo
  12. Exit Sub
  13. End If
  14. ' -- Ahora guardamos en la Variable Resultado el nombre que
  15. ' -- se ingresó en el control text1
  16. Resultado = "Su nombre es " & Text1 & vbNewLine
  17. ' -- Evaluamos el Check1 (mayor de edad)
  18. If Check1.Value = 0 Then
  19. Resultado = Resultado & "Usted no es mayor de edad"
  20. Else
  21. Resultado = Resultado & "Usted es mayor de edad"
  22. End If
  23. ' -- Le agregamos a la variable resultado un salto de carro o salto de línea
  24. Resultado = Resultado & vbNewLine
  25. ' -- Evaluamos el Check2 (Si tiene hijos )
  26. If Check2.Value = 0 Then
  27. Resultado = Resultado & "Usted no tiene Hijos"
  28. Else
  29. Resultado = Resultado & "Usted tiene hijos"
  30. End If
  31. ' -- Otro salto de carro
  32. Resultado = Resultado & vbNewLine
  33. ' -- Evaluamos el Check3 (si estudió)
  34. If Check3.Value = 0 Then
  35. Resultado = Resultado & "Usted no estudió una Carrera"
  36. Else
  37. Resultado = Resultado & "Usted estudió una Carrera"
  38. End If
  39. ' -- Mostramos el valor de la variable Resultado con la información
  40. MsgBox Resultado, vbInformation, "Encuesta"
  41. End Sub
  42. Private Sub Form_Load()
  43. ' -- Establecer Caption de los controles
  44. Command1.Caption = "Mostrar resultados"
  45. Check1.Caption = "¿ Es usted mayor de edad ?"
  46. Check2.Caption = "¿ Tiene hijos ?"
  47. Check3.Caption = "¿ Estudió alguna carrera ?"
  48. Text1.Text = vbNullString
  49. 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

  1. Option Explicit
  2. Private Sub Command1_Click()
  3. Static bValue As Boolean
  4. ' Variable de tipo control
  5. Dim xCheckBox As Control
  6. ' Recorrer en un bucle todos los controles del formulario actual
  7. For Each xCheckBox In Me.Controls
  8. ' Comprobar con el operador TypeOf si es un control CheckBox
  9. If TypeOf xCheckBox Is CheckBox Then
  10. ' Cambia la propiedad Bold
  11. xCheckBox.FontBold = Not bValue
  12. End If
  13. Next
  14. If bValue = False Then
  15. Command1.Caption = "Negrita"
  16. Else
  17. Command1.Caption = "Normal"
  18. End If
  19. bValue = Not bValue
  20. End Sub
  21. Private Sub Form_Load()
  22. Command1.Caption = "Normal"
  23. End Sub

Cambiar la propiedad Value de todos los CheckBox que haya en el formulario

Colocar varios controles CheckBox y un Command

  1. Option Explicit
  2. Private Sub Command1_Click()
  3. Static bValue As Boolean
  4. bValue = Not bValue
  5. Dim xCheckBox As Control
  6. ' Recorrer en un bucle todos los controles del form
  7. For Each xCheckBox In Me.Controls
  8. ' Comprobar con el operador TypeOf si es un control CheckBox
  9. If TypeOf xCheckBox Is CheckBox Then
  10. ' Cambiar la propiedad Value
  11. xCheckBox.Value = Abs(bValue)
  12. End If
  13. Next
  14. Command1.Caption = "Value: " & CStr(bValue)
  15. End Sub
  16. Private Sub Form_Load()
  17. Command1.Caption = "Value: Falso"
  18. 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:

  1. Private Sub Check1_Click()
  2. 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.

  1. Option Explicit
  2. Private Sub Check1_Click()
  3. ' -- Mostramos el valor de la propiedad Value del Check1
  4. MsgBox CBool(Check1.Value)
  5. 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.

  1. Option Explicit
  2. ' -- Flag
  3. Private bMouseEnter As Boolean
  4. ' -- Cambiar color del texto al cambiar el value
  5. ' ------------------------------------------------------
  6. Private Sub Check1_Click()
  7. With Check1
  8. If .Value = 0 Then .ForeColor = vbBlack
  9. If .Value = 1 Then .ForeColor = vbRed
  10. End With
  11. End Sub
  12. Private Sub Check1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  13. If bMouseEnter = False Then
  14. bMouseEnter = True
  15. ' -- Resaltar texto y mostrar la descripción en la barra de estado
  16. Call CambiarPropiedad(Check1, True)
  17. StatusBar1.Panels(1).Text = "Un texto descriptivo ...."
  18. End If
  19. End Sub
  20. Private Sub Form_Load()
  21. ' -- Propiedades de la barra de estado
  22. With StatusBar1
  23. .Style = sbrNormal ' -- Estilo
  24. .Panels(1).AutoSize = sbrSpring ' -- ajustar al ancho
  25. End With
  26. ' -- Propiedades iniciales de la fuente
  27. With Check1
  28. .FontName = "Verdana"
  29. .FontSize = 12
  30. .FontBold = True
  31. End With
  32. End Sub
  33. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  34. If bMouseEnter Then
  35. bMouseEnter = False
  36. ' -- Volver a colocar el texto normal
  37. Call CambiarPropiedad(Check1, False)
  38. StatusBar1.Panels(1).Text = ""
  39. End If
  40. End Sub
  41. Private Sub CambiarPropiedad(CheckBox As CheckBox, bMouse As Boolean)
  42. With CheckBox
  43. If bMouse Then
  44. ' subrayar el texto y colocarlo en azul
  45. .ForeColor = vbBlue
  46. .FontUnderline = True
  47. Else
  48. ' texto normal
  49. If .Value = 0 Then .ForeColor = vbBlack
  50. If .Value = 1 Then .ForeColor = vbRed
  51. .FontUnderline = False
  52. End If
  53. End With
  54. 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


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