controles[1]
DESCRIPTION
okTRANSCRIPT
![Page 1: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/1.jpg)
El control TextBox o Caja de texto se utiliza para Ingresar y/o visualizar Texto ( es un
control de entrada de datos )
Si en nuestros programas no vamos a introducir Texto, me refiero a solo mostrarlo,
valores etc..., es preferible y mas lógico utilizar un control Label en cambio de un
control TextBox , ya que consume menos recursos
La propiedad principal de este control se llama Text. Mediante ella podemos asignarle
un texto ya sea en tiempo de diseño o tiempo de ejecución al control. Si es en tiempo de
diseño, debemos seleccionar el TextBox e ir a la ventana de propiedades y seleccionar
Text. Dentro de ella podemos escribir el texto a ser mostrado. Si es en tiempo de
ejecución debemos escribir el nombre de el TextBox que queremos y al presionar el
punto ".", vb despliega la lista de propiedades y métodos del TextBox, y ahí
seleccionamos Text
Por ejemplo si quiero mostrar un texto en un control llamado Text1 se haría de esta
forma:
![Page 2: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/2.jpg)
Private Sub Form_Load()
Text1.Text = "Un texto cualquiera"
End Sub
Si quisiera mostrar el contenido de un control Label llamado Label1 en un control
llamado text1 se haría así:
Private Sub Form_Load()
Text1.Text = Label1.Caption
End Sub
Nota , no es necesario escribir la propiedad Text seguida del nombre del control, ya que
la propiedad Text es la propiedad por defecto, y Vb se daría automáticamente cuenta
que al no poner ninguna propiedad la asuma como tal, por ejemplo esto es válido:
Private Sub Form_Load()
Text1 = "Un texto cualquiera"
End Sub
Esto de las propiedades por defecto lo tienen la mayoría de los controles, pero cada
control tiene la suya, por ejemplo la propiedad default de un control Label es
Caption, por lo que no es necesario escribirla, y Visual Basic no daría error:
Private Sub Form_Load()
Label1 = "Hola"
End Sub
Para un control Picture, la propiedad Picture es la que está establecida por defecto, y
esto tampoco daría error y cargaría una imagen perfectamente en el control sin indicar
explícitamente la propiedad.
![Page 3: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/3.jpg)
Private Sub Form_Load()
Picture1 = LoadPicture("la ruta de una imagen")
End Sub
Propiedad Multiline
La propiedad Multiline o multilinea se utiliza para poder mostrar los saltos de carro o
saltos de línea y que el texto se vea en varias y no todo en un única línea. Los valores
que posee son True que está activada y en False quiere decir que está deshabilitada. Por
defecto cuando añadimos un TextBox, la propiedad está en False, osea que tenemos que
indicarle nosotros a vb, ya sea desde la ventana de propiedades poniéndola en true. Una
cosa importante es que esto no lo podemos cambiar en tiempo de ejecución mediante
código, si o si hay que establecerla desde la ventana de propiedades, ya que es una
propiedad de solo lectura.
Propiedad PasswordChar
Esta propiedad tiene la función de ocultar el verdadero contenido del TextBox por el
caracter que le indiquemos, por ejemplo los TextBox de ingresos de contraseña, donde
el texto se oculta pero no se pierde, solo impide visualizarlo:
Nota : para establecer el caracter a mostrar solo debemos indicarlo en la propiedad
PasswordChar, pero solo funciona cuando la propiedad Multiline del Text está en
False.
Propiedad ScrollBars
Esta propiedad permite que el TextBox tenga o no tenga barras de Scroll cuando el
texto sea superior a las dimensiones de la caja de texto. Los valores que puede tener
![Page 4: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/4.jpg)
son: 0 indica que el textBox no mostrará Barras de desplazamiento, en 1 Solo barra
Horizontal, 2 Solo barra Vertical y 3 ambas barras de desplazamiento. En esta
imagen se ve un TextBox con la propiedad Scrollbars en 2, solo Vertical
Propiedad Locked
Esta propiedad lo que hace es impedir que se pueda escribir en el TextBox,
bloqueando la entrada de datos. Esta propiedad puede tener el Valor True o False,
habilitado para el primero y False para el segundo. Por defecto está deshabilitada, es
decir en False
Propiedad Maxlength
La propiedad MaxLength se usa para limitar la cantidad de caracteres que se
podrán ingresar. Por ejemplo si en el TextBox tuviesemos el texto "Domingo" y
hacemos esto:
Private Sub Command4_Click()
Text1.Text = "Domingo"
Text1.MaxLength = 3
End Sub
El texto "Domingo" se podrá visualizar pero si intentamos escribir en la caja de texto,
no se podrá ingresar mas de 3 caracteres. Es decir la propiedad recibe un número que
identifica la longitud máxima permitida de letras a ingresar.
Propiedad SelStart y SelLength
La primera lo que hace es devolver o establecee el punto inicial del texto seleccionado.
en cambio SelLength devuelve o establece el número de caracteres seleccionados.
![Page 5: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/5.jpg)
El siguiente ejemplo utiliza estas dos propiedades, en conjunto con la propiedad Len de
visual basic, para que al persionar la tecla Ctrl+A, se seleccione todo el contenido del
TextBox
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 1 Then
Text1.SelStart = 0
'Selecciona Todo el contenido de la caja de texto
Text1.SelLength = Len(Text1.Text)
End If
End Sub
Algunos ejemplos del Uso del control TextBox
Supongamos que quisieramos mostrar el contenido de un Text1 en un Text2, cuando
presionamos un Command1, haríamos asi:
Private Sub Command1_Click()
'Copiamos el texto de Text1 en el Text2
![Page 6: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/6.jpg)
Text2 = Text1
End Sub
Si quisieramos cambiar el color de fondo (propiedad Backcolor) del TextBox para que
sea igual al color de fondo del formulario haríamos asi:
Private Sub Command1_Click()
'Le asignamos el mismo color al textbox que el que tiene el formulario _
utilizando la propiedad Backcolor
Text1.BackColor = Me.BackColor
End Sub
Este simple ejemplo lo que hace es cuando se escribe en el Text1, automáticamente se
imprime el mismo texto en un Text2. Para esto usamos el evento Change que significa
cambio, es decir se ejecutará cada vez que el text1 cambie el contenido.
Agregar 2 Text, text1 y Text2, pegar lo siguiente y luego escribir un texto en el Text1.
Private Sub Text1_Change()
'Le establecemos el contenido de Text1 en el control Text2
Text2 = Text1
End Sub
Este ejemplo lo que hace es cambiarle el color al fondo del control text en negro, el
color de la fuente en verde, el tamaño de la fuente, establecerla en negrita, y luego le
asigna un texto "hola mundo".
Colocar un Command1 y un Text1
![Page 7: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/7.jpg)
Private Sub Command1_Click()
With Text1
.ForeColor = vbGreen
.BackColor = vbBlack
.FontSize = 12
.FontBold = True
.Text = " Hola Mundo"
End With
End Sub
Hacer que un textBox admita solo números y algunos
otros caracteres indicados
El siguiente ejemplo muestra como hacer , comprobando en el eventos KeyPress de un
textbox, el valor del parámetro Keyascii, para que solo admita números, la coma, el
punto y la tecla de retroceso. Cualquier otro valor que no sea estos, el mismo retornará
el valor 0.
Colocar un Text1 y el siguiente código en el formulario:
Option Explicit
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = Verificar_Tecla(KeyAscii)
End Sub
Function Verificar_Tecla(Tecla_Presionada)
Dim Teclas As String
![Page 8: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/8.jpg)
'Acepta todos los números, la tecla Backspace, _
la tecla Enter, la coma y el punto
Teclas = "1234567890.," & Chr(vbKeyBack)
If InStr(1, Teclas, Chr(Tecla_Presionada)) Then
Verificar_Tecla = Tecla_Presionada
Else
' Si no es ninguna de las indicadas retorna 0
Verificar_Tecla = 0
End If
End Function
Esta función también puede ser utilizada en otros controles de entrada de datos, como
por ejemplo los ComboBox, y la ventaja de utilizarlo, es que si tenemos muchos textbox
o controles a los cuales deseamos verificar las teclas presionadas, no tenemos que
escribir y repetir código en todos ellos, solo asignando al valor KeyAscii el valor
retornado por la fuinción, para que el mismo acepte o no dichas teclas
Nota: también hay una función de visual basicllamada IsNumeric, para poder
determinar si un valor es un número
Ejemplo para cargar el contenido de un archivo de
texto en un TextBox Multiline
Este simple ejemplo carga en un control textBox el contenido de un archivo
seleccionado de tipo txt. El control tiene la propiedad Multiline en True y la propiedad
ScrollBar en Both.
Nota: en este enlace hay una descripción básica de las funciones de visual basic para el
tratamiento de archivos, leer, guardar etc...
![Page 9: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/9.jpg)
Colocar en un formulario un control Commondialog , un control textBox y un control
Command1:
Nota: al control textBox en la propiedadMultiline colocarle true y también establecerle
los ScrollBar
Código fuente en el formulario:
Private Sub Command1_Click()
With CommonDialog1
.DialogTitle = " Seleccionar archivo"
.Filter = "Archivos txt|*.txt"
' abre el cuadro de diálogo para seleccionar el txt
.ShowOpen
If .FileName = "" Then Exit Sub
'Carga el archivo en el control
Cargar_Txt .FileName
End With
End Sub
Private Sub Form_Load()
Command1.Caption = " Abrir archivo txt"
End Sub
Sub Cargar_Txt(path As String)
Dim linea As String
If path = vbNullString Then Exit Sub
![Page 10: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/10.jpg)
Text1 = ""
Open path For Input As #1
While Not EOF(1)
'Lee la linea del archivo
Line Input #1, linea
'La carga en el textbox
Text1 = Text1 & linea
Wend
'Cierra el archivo abierto
Close
End Sub
Redimensionar un TextBox al ancho y alto del
formulario
Este ejemplo simple lo que hace es que al redimensionar el formulario, o maximizarlo,
el ancho y alto del control text, se adapte al ancho y alto del la ventana. Para ello el
código debe estar ubicado en el evento Resize del formulario, y para redimensionar el
textbox ( o cualquier otro control) se utiliza el método Move
Ejemplo:
Private Sub Form_Resize()
'Primer y segundo parámetro es el valor Left y Top
'Parámetro 3 y 4, el ancho y alto del text _
que en este caso es el ancho y alto del formulario
Text1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
End Sub
Cambiar color de borde
El textbox no tiene ninguna propiedad para cambiar el color de borde . El siguiente
ejemplo muestra una forma simple de como simular esto utilizando controles Shape,
como muestra la siguiente imagen donde los textbox son parecidos a los de estilo de
windows xp
![Page 11: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/11.jpg)
En el ejemplo, se recorren todos los controles del formulario mediante un bucle For
each. Luego, se van creando los demás controles Shape en tiempo de ejecución, uno
para cada textbox , usando el método Load que permite crear los controles en tiempo de
ejecución a partir de uno que está agregado en el formulario formando un array de
controles
Controles
Colocar en el formulario, un control Shape. Al control Shape especificarle en la
propiedad Index el valor 0 pra formar el array de shape
Luego agregar algunos textbox en el formulario
Código fuente en el formulario
' Posiciona el shape junto al textbox para simular el borde
Sub Aplicar_Borde(Shape As Object, color_Borde As Long)
' Variable para recorrer todos los controles del formulario
Dim el_Control As Object
'Recorre todos los controles
For Each el_Control In Me
' .. si el control es un textbox
If TypeOf el_Control Is TextBox Then
Dim i As Integer
'Si el Textbox está dentro de un contenedor, _
como un frame o picturebox, coloca el Shape _
dentro del mismo contenedor
Set Shape(i).Container = el_Control.Container
'Propiedades para el shape
Shape(i).BackStyle = 0 ' Fondo transparente
Shape(i).BorderStyle = 1 ' Borde sólido
Shape(i).BorderWidth = 1 ' 0 Grosor del borde
![Page 12: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/12.jpg)
' Ancho, alto, pos x y po y del shape
Shape(i).Top = el_Control.Top - 10
Shape(i).Left = el_Control.Left - 10
Shape(i).Width = el_Control.Width + 30
Shape(i).Height = el_Control.Height + 30
' Estilo flat para el extbox
el_Control.Appearance = 0
' Le quitamos le borde al textbox
el_Control.BorderStyle = 0
' color del borde del shape
Shape(i).BorderColor = color_Borde
' Lo hacemos visible
Shape(i).Visible = True
i = i + 1
' Crea un shape en forma dinámica
Load Shape(i)
End If
Next
End Sub
Private Sub Form_Load()
Call Aplicar_Borde(Shape1, &H8000000D)
End Sub
Nota. en este enlace hay un ejemplo para crear un listbox con borde personalizado
también usando un control shape
Pasar el foco entre Textbox al presionar la tecla enter
Este ejemplo muestra una forma de poder, al presionar la tecla enter, pasarle el foco al
siguiente textbox. Como en el ejemplo se utiliza la función SendKeys para enviar la
pulsación de la tecla Tab, el control que reciba el enfoque lo determinará la propiedad
TabIndex
Agregar un arreglo de controles textbox, por ejemplo Text1(0), Text1(1), Text1(2) etc...
![Page 13: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/13.jpg)
Código fuente en el formulario
Sub PasarFoco(KeyCode As Integer)
' si es la tecla enter ...
If KeyCode = 13 Then
' envía la pulsación de tecla Tab y pasa el foco _
a la siguiente caja de texto
SendKeys "{TAB}"
End If
End Sub
Private Sub Form_Load()
Dim i As Integer
' recorre la matriz de textbox
For i = 0 To Text1.Count - 1
' le especifica la propiedad tabIndex
Text1(i).TabIndex = i + 1
Next
End Sub
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
' anvia como parámetro el valor del código de la tacla
Call PasarFoco(KeyAscii)
End Sub
Borrar todos los textbox de un formulario
Si queremos eliminar el contenido de todas las cajas de texto de un formulario, podemos
utilizar un bocle For Each y el operador Type Of
![Page 14: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/14.jpg)
Ejemplo:
La rutina LimpiarTextBox, recibe como parámetro el formulario, por ejemplo para
limpiar todo el contenido de todas las cajas de texto que hay en el el formulario actual,
se ejecutaría la rutina de la siguiente forma:
Call LimpiarTextBox(Me)
Colocar en el formulario, un CommandButton y varios controles TextBox
Código fuente en el Form
Option Explicit
' recibe como argumento el formulario
''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Sub LimpiarTextBox(frm As Form)
' recorre todos los controles que hay en el formulario
For Each Control In frm.Controls
' verifica que el control es de tipo TextBox
If TypeOf Control Is TextBox Then
'... Si es un Textbox, entonces lo limpia
Control.Text = ""
End If
Next
End Sub
' botón que limpia todos los textbox
'''''''''''''''''''''''''''''''''''''
Private Sub Command1_Click()
Call LimpiarTextBox(Me)
End Sub
Descripción
El control Label o Etiqueta es un simple control que se utiliza para mostrar texto,
descripciones, información para el programa.
![Page 15: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/15.jpg)
Propiedades
Propiedad Caption
La propiedad Caption es la mas importante, y es la que se utiliza para establecer el
texto que mostrará el control Label. Por ejemplo para mostrar el texto "Hola" agrega un
label al formulario, coloca un Botón, hacé doble click en el mismo, escribe Label1 y
presiona el ".", Visual Basic te desplegará la lista de propiedades y métodos del Label1.
Una vez colocada la propiedad Caption, se asigna el texto que va a mostrar de esta
manera, por ejemplo para mostrar la palabra "Hola" en el control:
Texto planoImprimir
1. Label1.Caption = "Hola"
Este fragmento de código, visualiza la hora actual, asignando a la propiedad Caption
(dentro de un Timer), el valor devuelto por la función Now de vb.
Colocar un control Timer y un Label
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Form_Load()
4.
5. ' \\ -- Configurar Timer
6. With Timer1
7. .Interval = 1000 ' -- 1 segundo
8. .Enabled = True
9. End With
10.
![Page 16: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/16.jpg)
11. With Label1
12. .Caption = ""
13. .Width = 2000
14. End With
15. 16. End Sub
17. 18. Private Sub Timer1_Timer()
19. Label1.Caption = Now
20. End Sub
Propiedad Autosize
Si la propiedad Autosize del control se encuentra en True, las dimensiones del Label
(ancho y alto) se ajustarán al largo y alto del texto que muestre. En cambio si se
encuentra en False el ancho y alto del control será el que esté establecido en la
propiedad Height y Width sin importar la longitud del texto.
Propiedad Aligment
Esta propiedad posee 3 valores. Si le establecemos el valor 0 el texto se alineará a la
izquierda, si tiene el valor 1 se alineará a la derecha y si está con el valor 2, el texto se
muestra en forma centrada, como muestra la imagen:
Otras propiedades del control son :
Visible : Si está en True el control está visible si está en False está oculto
![Page 17: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/17.jpg)
Backcolor : Determina el color del fondo de la etiqueta. Si la propiedad
BackStyle está en transparente esta propiedad no se visualiza, es decir el color
no se muestra
BackStyle: Determina si el fondo es transparente (valor 0) o si es opaco (Valor
1).
Name: es el nombre del control y sirve para hacer referencia al mismo en el
código, como todos los controles
BorderStyle: determina si se muestra con borde o sin borde
Enabled: Si está en True (Verdadero) el control está activado y se puede utilizar
normalmente, si se encuentra en False, el control está desactivado.
FontName: El nombre de la fuente que utilizará el texto del control. Podemos
elegir las que tengamos instaladas en el sistema
Forecolor: Valor Hexadecimal o valor Rgb que indica el color del Texto
Height y Width: Ancho y alto del Label
ToolTipText: muestra el mensaje de descripción cuando pasamos el mouse por
encima del control.
Ejemplo para cambiar propiedades en tiempo de
ejecución
Colocar 5 Command Button en un formulario: Command1, Command2, Command3,
Command4 y Command5, y un control Label1 como está en la imagen:
Este básico ejemplo lo que hace es cambiar algunas propiedades de este control.
El Command1 que cambia el texto del Label, lo que hace es mostrar un InputBox que
es una caja o cuadro de diálogo para ingresar un texto. Ese texto lo almacenamos en una
variable y luego lo mostramos en el Label
El Command2 que cambia el Estilo del borde, es decir la propiedad BorderStyle,
cuando se presiona, si el control Label tiene la propiedad BorderStyle en 0, lo pone con
el valor 1, si está con el valor 1 lo establece en 0, es decir lo contrario.
El Command3 que activa y desactiva el control, lo que hace es cambiar el valor de la
propiedad Enabled del Label. Cuando lo presionamos se ejecuta esta línea:
Label1.Enabled = Not Label1.Enabled
![Page 18: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/18.jpg)
El operador Not lo que hace en este caso es cambiar el valor de la propiedad Enabled a
su valor contrario. Es decir, si el valor de enabled está en True (Habilitado) Not
Label1.Enabled lo que hace es deshabilitarlo, si está deshabilitado (False) el operador
Not lo cambia a True, y el Label queda Habilitado. Esto se puede hacer con una
claúsula If Then pero esta manera es mas simple.
El Command4 es igual que el Command1, por medio de un InputBox se pide que
ingrese un texto, y se cambia el valor de la propiedad ToolTipText, que es la propiedad
que muestra información de un objeto mediante un rectángulo amarillo cuando pasamos
el mouse por encima, como los tipicos controles de windows de cualquier aplicación.
El Command5 es igual que el Command3, utiliza el operador Not para establecerle la
propiedad Visible. Si el Label está Visible (True), se cambia a False (se oculta), si está
en False se pone en True
Código fuente dentro del formulario
Texto planoImprimir
1. Option Explicit
2.
3. ' \\ -- Caption
4. Private Sub Command1_Click()
5. Dim texto As String
6.
7. texto = InputBox("Escriba el texto a mostrar en el Label", "Ejemplo")
8.
9. ' -- Acá se asigna la variable texto en el Label
10. Label1.Caption = texto
11. 12. End Sub
13. 14. ' \\ -- BorderStyle
15. Private Sub Command2_Click()
16. 'Si actualmente tiene el valor 0 entonces la colocamos a 1
17. If Label1.BorderStyle = 0 Then
18. Label1.BorderStyle = 1
19. 'Si tiene el valor 1 lo ponemos a 0
20. Else
21. Label1.BorderStyle = 0
22. End If
23. End Sub
24. 25. 26. ' \\ -- Enabled
27. Private Sub Command3_Click()
28. 29. ' -- Si la propiedad Enaled está en True se pone False,
![Page 19: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/19.jpg)
30. ' -- si está en False se pone en TRue
31. Label1.Enabled = Not Label1.Enabled
32. 33. End Sub
34. 35. 36. ' \\ -- Tooltiptext
37. Private Sub Command4_Click()
38. Dim texto As String
39. texto = InputBox("Escribi el texto que mostrará la propiedad" _
40. & "ToolTipText", "Ejemplo")
41. 42. ' -- Le asignamos el valor de la variable Texto al Label
43. Label1.ToolTipText = texto
44. 45. ' -- Mostramos un mensaje para indicar que pase el mouse por
46. ' -- encima del control Label1
47. 48. MsgBox "Pasá el mouse por encima del Label"
49. 50. End Sub
51. 52. ' \\ -- Visible
53. Private Sub Command5_Click()
54. 55. ' -- Si el Label está visible entonces lo ocultamos,
56. ' -- si está oculto lo mostramos
57. Label1.Visible = Not Label1.Visible
58. 59. End Sub
60. 61. 62. Private Sub Form_Load()
63. Command1.Caption = "Cambiar texto"
64. Command2.Caption = "Cambiar borde"
65. Command3.Caption = "Enabled"
66. Command4.Caption = "ToolTipText"
67. Command5.Caption = "Enabled"
68. End Sub
Eventos del control Label:
![Page 20: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/20.jpg)
Evento Click: Se produce al hacer un click
Evento DblClick: Se produce al hacer doble click
evento MouseDown: Se produce al presionar el ratón cuando el mouse está
abajo
Evento MouseMove: se produce al mover el cursor en el área del control
Evento MouseUp: Se produce al hacer un Click justo después de soltar el botón
del mouse
Evento Change: Se produce cuando cambia la propiedad Caption del control.
Este evento puede utilizarce para validar algún cambio
Ejemplo utilizando el evento MouseMove
Lo siguiente, muestra como simular un enlace, como el de una página web, de una
forma sencilla
Al pasar el mouse por encima del Label, se cambian las propiedaes, es decir el color del
texto y la propiedad FontUnderline en True para subrayar. Luego en el MouseMove del
Formulario, se reestablece.
Código fuente
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Form_Load()
4.
5. With Label1
6. ' -- Estilo transparente
7. .BackStyle = 0
8. ' -- Ajustar el control al texto
9. .AutoSize = True
10. ' -- Asignamos un texto para la dirección url
11. .Caption = " http://www.google.com "
12. End With
13. End Sub
14.
![Page 21: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/21.jpg)
15. Private Sub Form_MouseMove( _
16. Button As Integer, _
17. Shift As Integer, _
18. X As Single, Y As Single)
19. 20. With Label1
21. If .FontUnderline Then
22. ' -- Color de la fuente del Label en negro
23. .ForeColor = vbBlack
24. 25. ' Quitamos el Subrayamos al Label
26. .FontUnderline = False
27. End If
28. End With
29. 30. End Sub
31. 32. 33. Private Sub Label1_MouseMove( _
34. Button As Integer, _
35. Shift As Integer, _
36. X As Single, Y As Single)
37. 38. With Label1
39. If Not .FontUnderline Then
40. ' -- Color Azul como el de los enlaces clásicos
41. .ForeColor = QBColor(9)
42. 43. ' -- Subrayamos el Label
44. .FontUnderline = True
45. End If
46. End With
47. End Sub
Recorrer los labels del formulario con un
bucle For Each next
Si en algún momento se desea poder recorrer todos los controles label que se encuentren
en el formulario, por ejemplo para consultar el valor de propiedades o para modificarlas
y no tener que hacerlo uno por uno, podés utilizar un bucle For Each y mediante el
operador TypeOf de vb comprobar si es un Label
![Page 22: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/22.jpg)
Este simple ejemplo muestra como recorrer todos los objetos del form actual, y si es de
tipo Label, le establece un color aleatorio utilizando la función RND y la función RGB
de Visual basic. Por supuesto en el bucle podés probar cambiar otras propiedades que
quieras. Esto también es muy útil para deshabilitar y habilitar, o hacer visible o no
visible controles del programa utilizando un simple bucle.
Colocar varios controles en el formulario, y también varios controles Label, por ejemplo
4 o 5
Colocar también un botón para poder ejecutar el código del bucle
Pegar el siguiente fragmento de código en el form principal
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4.
5. Dim xLabel As Control
6. ' -- Recorrer controles coon un bucle
7. For Each xLabel In Me.Controls
8. ' -- Comprobar que el control actual es de clase Label
9. If TypeOf xLabel Is Label Then
10. ' - Si lo es, cambiar la propiedad ForeColor
11. xLabel.ForeColor = RGB(CInt(Rnd * 255), CInt(Rnd * 255), CInt(Rnd *
255))
12. End If
13. Next
14. 15. End Sub
16. 17. Private Sub Form_Load()
18. Command1.Caption = "Cambiar color"
19. End Sub
Texto con sombra usando dos controles
Label
Esto es muy simple y no requiere de código , solo colocar dos controles Label
superpuestos, y el que esté debajo de color negro, como muestra el gráfico:
![Page 23: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/23.jpg)
Nota: desde opciones > menú Herramientas, puedes especificar los valores para la
cuadrícula del formulario, por defecto son 120 twips, colocando un valor mas bajo,
tendrás mas precición para colocar el control Label al arrastrarlo en el formualrio.
Simple botón
Este senciilo ejemplo muestra una forma de poder crear un botón utilizando dos
controles label en un array de controles uno encima del otro. Y en el evento
MouseDown , se oculta uno, y se visualiza el que está por debajo, y luego se vuelve a
visualizar el otro en el evento mouseUp
Descripción del control
Este control " Botón de comando ", nos permite ejecutar alguna rutina, función o
procedimiento, generalmente en el evento click del mismo, para realizar de esta manera
alguna tarea dentro del programa
![Page 24: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/24.jpg)
Como se dijo, se utiliza generalmente en el evento Click par ejecutar alguna acción
cuando se produce dicho evento, y es precisamente el evento Click, el que por defecto
añade Visual Basic al control
Por ejemplo, si colocamos un control Command1 en un formulario, y le damos
DobleClick para que se abra la ventana de código de visual basic, podemos ver la
siguiente rutina:
Texto planoImprimir
1. Private Sub Command1_Click()
2.
3.
4. End Sub
Todas las instrucciones que estén dentro de este procedimiento, llamado
Command1_Click, se ejecutarán cuando presionemos el botón. Por ejemplo si
ejecutamos el siguiente código, lo que haría sería mostrar la fecha del sistema en la
barra de título del formulario, utilizando la función Date de Visual Basic
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4. ' -- Establecemos en la barra de título del formulario la fecha del Pc
5. Me.Caption = Date
6.
7. End Sub
Este otro ejemplo, al presionar el botón, termina el programa utilizando la función End
de vb. Colocar un Botón en el form
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4. End
5. End Sub
6.
7. Private Sub Form_Load()
8. Command1.Caption = "Salir"
9. End Sub
![Page 25: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/25.jpg)
Propiedades
Las propiedades que posee el control CommandButton son prácticamente las que
poseen el resto de controles estandar de visual basic, salvo algunas exclusivas como la
propiedad Style.
Propiedad Style
La propiedad Style tiene 2 valores, 0 - Standar y 1 - Graphical. La primera es del
clásico botón y este valor es el asignado por defecto. En cambio Graphical permite
utilizar CommandButton para poder mostrar imágenes, cambiarle el color del fondo, el
tipo de fuente, y utilizando el Api de windows, se puede cambiar por ejemplo el color
de la fuente, es decir el ForeColor que este control no lo posee.
Esta imagen muestra, en el Command1 , una imagen, por medio de la propiedad Picture
que la puedes cargar desde la ventana de propiedades. El segundo, el Command2, no
tiene imagen, pero muestra como se puede establecer el color de fondo, propiedad
Backcolor, siempre y cuando la propiedad Style sea de tipo gráfico, ya que si está en
estándar no surtirá efecto.
Otro ejemplo sobre esta propiedad: Al pasar el mouse por encima del Commandbutton,
se cambiará la fuente, en Negrita, el Subrayado, y el color de fondo, al salir el puntero
fuera del botón, se reestablecerá a la fuente normal, y se restaurará el color de fondo
usando el color por defecto que utiliza windows para los botones, mediante la constante
VbButtonFace
Para el ejemplo, colocar un Command1, colocar la propiedad Style en Graphical y pegar
estas líneas en el formulario:
Texto planoImprimir
1. Option Explicit
2.
3. ' -- Flag para que no se ejecute constantemente
4. ' -- el código del Form y del CommandButton
5. Dim Flag As Boolean
![Page 26: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/26.jpg)
6.
7. Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
8.
9. ' -- Establecer la fuente del commandButton en negrita y con subrayado
10. If Flag Then
11. Command1.Font.Bold = True
12. Command1.Font.Underline = True
13. Command1.BackColor = vbWhite
14. Flag = False
15. End If
16. 17. End Sub
18. 19. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single
, Y As Single)
20. ' -- Quita la negrita, el subrayado, y restaura el color de fondo
21. If Flag = False Then
22. Command1.Font.Bold = False
23. Command1.Font.Underline = False
24. Command1.BackColor = vbButtonFace
25. Flag = True
26. End If
27. 28. End Sub
Propiedad Default
Esta propiedad es muy útil en ciertas locaciones, sobre todo en formularios y programas
que utilizan bases de datos, y opciones para buscar.
Default puede tener dos valores , True o False. Si está en True, el botón será el botón
por defecto que se ejecutará cuando se presione la tecla enter. Por ejemplo hagamos de
cuenta que nuestro programa contiene un botón. Ese botón ejecuta un código para
buscar datos en una base de datos. Si el usuario en un momento determinado, se
encuentra escribiendo datos en un control textbox, y presiona la tecla Enter, el
CommandButton al tener la propiedad Default en True, ejecutará el código que tenga en
el evento click. En este caso , en el evento clic, contendría todo el código para realizar la
búsqueda de registros.
Un simple ejemplo
Coloca: Un control TextBox, un CommandButton. Pega el siguiente código
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4. MsgBox "Se ejecutó el evento Click del commandButton", vbInformation
![Page 27: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/27.jpg)
5. End Sub
6.
7. Private Sub Form_Load()
8. ' -- Establecer propiedad Default
9. Command1.Default = True
10. 11. MsgBox "Coloca el cursor en un control textbox para que tome el foco, " & _
12. "y luego, presiona la tecla enter, y verás como de todas formas " & _
13. "se ejecutó el evento click ya que es el control por defecto del" & _
14. "formulario. ( Nota .Solo puede haber un solo botón con la propiedad " &
_
15. "Default en un formuario)", vbInformation
16. 17. End Sub
Propiedades de posición
Las propiedades de posición son las que permiten cambiar el tamaño y la posición en el
objeto que lo contiene. estas propiedades son cuatro : Left, Top, Height y Width.
El siguiente ejemplo muestra como usar estas propiedades. Supongamos que nuestro
formulario contiene un botón "Salir" en la parte inferior:
Ahora bien ¿ como hacer para que al presionar el botón de maximizar del formulario o
cambiar de tamaño el formulario, el botón continúe situado en la esquina inferior
derecha ? Para ello hay que modificar la propiedad Left y Top del botón. ¿ Pero donde
colocar el código? para ello se debe colocar en el evento Resize del formulario.
Puedes probar este simple ejemplo con el siguiente código:
Texto planoImprimir
1. Option Explicit
2.
![Page 28: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/28.jpg)
3. ' Valores para márgenes - Prueba cambiando estos valores
4. Private Const MARGEN_IZQUIERDO As Single = 60
5. Private Const MARGEN_INFERIOR As Single = 60
6.
7. Private Sub Command1_Click()
8. Unload Me
9. End Sub
10. 11. Private Sub Form_Load()
12. Command1.Caption = "Salir"
13. End Sub
14. 15. ' -- Posicionar el botón al cambiar de tamaño la ventana de formulario
16. Private Sub Form_Resize()
17. Command1.Left = (Me.ScaleWidth - Command1.Width) -
MARGEN_IZQUIERDO
18. Command1.Top = (Me.ScaleHeight - Command1.Height) -
MARGEN_INFERIOR
19. End Sub
Propiedad Enabled
Esta propiedad lo que hace es habilitar o deshabilitar el botón. Es una propiedad que la
poseen casi todos los controles, tanto los de Visual basic, como otros controles de
terceros ( controles ocx o Activex )
Aquí puedes ver ver un pequeño ejemplo de su uso.
Supongamos que nuestro programa contiene un un control de texto donde se ingresan
datos para buscar registros en una base de datos. Y también tenemos un botón que
contiene el código que debe ejecutar para realizar la búsqueda dentro de la base de
datos. Si en algún momento el control de texto no contiene datos, es decir no contiene
texto valga la redundancia, no sería necesario que el botón se encuentre habilitado, por
el contrario, deberíamos deshabilitarlo.
Puedes probar este simple ejemplo, colocando un control Textbox , un botón y pegando
el siguiente código en el formulario principal
Texto planoImprimir
1. Option Explicit
![Page 29: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/29.jpg)
2.
3.
4. Private Sub Command1_Click()
5. MsgBox Text1.Text, vbInformation
6. End Sub
7.
8. Private Sub Form_Load()
9. Text1.Text = ""
10. Command1.Caption = "Buscar .."
11. End Sub
12. 13. ' -- El evento Change se produce cuando cambia el contenido
14. ' -- de la caja de texto
15. Private Sub Text1_Change()
16. If Text1.Text = "" Then
17. Command1.Enabled = False
18. Else
19. Command1.Enabled = True
20. End If
21. End Sub
Modificar propiedades de varios controles
Si en el algún momento se necesita, por ejempo, habilitar o deshabilitar todos los
botones que hay en el formulario, o por ejemplo camabiarle y establecerle otras
propiedades que se deseen, puedes utilizar un bucle For Each para recorrer todos los
controles del formulario,y utilizando el operador TypeOf de Visual basic, comprobar si
el control dentro del bucle es de tipo CommandButton.
Nota. El ejemplo no tiene ninguna utilidad especifica, solo muestra el uso del ejemplo.
Debes colocar dos controles textBox. Text1 y Text2, y todos los botones que desees, por
ejemplo 4 como mustra la imagen de abajo
Al colocar el cursor en el Text1 se habilitarán todos los botones, luego al colocar el
cursor en el Text2, es decir cuando recibe el foco, se deshabilitarán todos los botones.
Texto planoImprimir
![Page 30: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/30.jpg)
1. Option Explicit
2.
3. Private Sub Form_Load()
4. Command1.Caption = "Opción 1"
5. Command2.Caption = "Opción 2"
6. Command3.Caption = "Opción 3"
7. Command4.Caption = "Opción 4"
8. End Sub
9.
10. ' \\ -- Procedimiento para activar y desactivar los botones
11. Sub EnabledDisabled(ByVal bValue As Boolean)
12. 13. ' -- Recorrer todos los objetos y controles del form
14. Dim xCtrl As Control
15. For Each xCtrl In Me.Controls
16. ' xCtrl ¿ es un Command Button ?
17. If TypeOf xCtrl Is CommandButton Then
18. ' si lo es, entonces habilitarlo o deshabilitarlo
19. xCtrl.Enabled = bValue
20. End If
21. Next
22. End Sub
23. 24. '\\ -- Deshabilitar
25. Private Sub Text2_GotFocus()
26. Call EnabledDisabled(False)
27. End Sub
28. 29. '\\ -- Activar
30. Private Sub Text1_GotFocus()
31. Call EnabledDisabled(True)
32. End Sub
Propiedad MousePointer y Mouseicon
Estas dos propiedades son muy simples de usar y son comunes a la mayoría de objetos y
controles de vb
Mousepointer devuelve o establece el tipo de puntero del mouse mostrado al pasar por
encima de un objeto
MouseIcon establece un icono personalizado para el mouse
Ejemplo. Colocar un control ListBox y un botón. Pegar el siguiente código fuente en el
formulario
![Page 31: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/31.jpg)
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Form_Load()
4.
5. With Command1
6. ' -- Puntero de mouse personalizado - Pasar usar con íconos
7. .MousePointer = 99
8. ' --
usar el ícono del formulario ( Puedes especificar el que desees cargandolo desde
la ventana de propiedades o utilizando la función LoadPicture)
9. .MouseIcon = Me.Icon
10. End With
11. 12. ' -- Cargar la lista de punters de mouse para el botón
13. With List1
14. .AddItem "0 - Default"
15. .AddItem "1 - Arrow"
16. .AddItem "2 - Cross"
17. .AddItem "3 - Beam"
18. .AddItem "4 - Icon"
19. .AddItem "5 - Size Ne SW"
20. .AddItem "6 - Size Ne SW"
21. .AddItem "7 - Size N S"
22. .AddItem "8 - Size NW Se"
23. .AddItem "9 - Up Arrow"
24. .AddItem "10 - HourGlass"
25. .AddItem "Custom"
26. End With
27. 28. End Sub
29. 30. Private Sub List1_Click()
31. ' -- Cambiar la propiedad MousePointer
32. With List1
33. If .ListIndex <> -1 Then
34. Command1.MousePointer = .ListIndex
35. End If
36. If .ListIndex = .ListCount - 1 Then
![Page 32: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/32.jpg)
37. Command1.MousePointer = 99
38. Command1.MouseIcon = Me.Icon
39. End If
40. End With
41. End Sub
Métodos y funciones
Este control prácticamente no contiene métodos o funciones. El mas importante y el
mas utilizado es el método SetFocus, que también lo posen muchos otros controles.
Lo que hace el método setFocus, es poder establecer el enfoque a un objeto especifico,
en este caso al botón. Su uso es muy simple, solo basta con ejecutarlo desde alguna
parte de nuestro programa para que el Commandbutton pase a tener el foco.
Una cosa muy importante a tener en cuenta , es que para poder establecer el foco a
cualquier control de visual basic, el objeto se debe encontrar visible, y también se debe
encontrar habilitado. Es decir, si la propiedad Visible o la propiedad Enabled del objeto
se encuentran en False, esto producirá un error en tiempo de ejecución. Por ello siempre
se debe colocar una rutina de error para poder controlar esto, o comprobando estas
propiedades mediante una instrucción If Then
Para recrear este error puedes ejecutar este código
Coloca dos botones
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command2_Click()
4. ' -- Esta instrucción generará un error, ya que le intentará pasar el foco
5. ' -- al command1, que se encuentra deshabilitado
6. Command1.SetFocus
7. End Sub
8.
9. Private Sub Form_Load()
10. ' -- Deshabilitamos el Command1
11. Command1.Enabled = False
12. MsgBox "Presiona el Botón Command2", vbInformation
13. End Sub
Para solucionarlo, simplemente puedes hacer algo asi
Colocar dos botones
Texto planoImprimir
![Page 33: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/33.jpg)
1. Option Explicit
2.
3. Private Sub Command2_Click()
4. With Command1
5. ' -- Si está visible y esta habilitado, entonces .. pasar el foco
6. If .Visible And .Enabled Then
7. .SetFocus
8. End If
9. End With
10. End Sub
11. 12. Private Sub Form_Load()
13. MsgBox "Presiona el Botón Command2", vbInformation
14. End Sub
Eventos principales del control
CommandButton
Aparte del evento Click que se ejecuta cuando lo presionamos, otros eventos
importantes son:
Evento GotFocus y LostFocus : Se disparan dichos eventos cuando el control
recibe o pierde el foco
MouseMove, MouseDown y MouseUp: El primero se dispara cuando el
puntero del mouse se mueve encima del botón, MouseDown cuando el botón
está abajo y cuando está arriba MouseUp
Por ejemplo para probar el uso de los métodos GotFocus y LostFocus (recibe y pierde el
foco) colocar 3 CommandButton, Command1, Command2 y Command3. Luego un
Label1 que mostrará el control que recibe el foco (GotFocus) y un Label2 que mostrará
el control que pierde el foco (LosFocus)
Luego de añadir los controles pegar el código siguiente en el formulario
Texto planoImprimir
1. Private Sub Command1_GotFocus()
2. Label1 = "El foco lo tiene: " & Command1.Caption
3. End Sub
4.
5. Private Sub Command2_GotFocus()
6. Label1 = "El foco lo tiene: " & Command2.Caption
![Page 34: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/34.jpg)
7. End Sub
8.
9. Private Sub Command3_GotFocus()
10. Label1 = "El foco lo tiene: " & Command3.Caption
11. End Sub
12. 13. Private Sub Command1_LostFocus()
14. Label2 = "Perdió el foco el: " & Command1.Caption
15. End Sub
16. 17. Private Sub Command2_LostFocus()
18. Label2 = "Perdió el foco el: " & Command2.Caption
19. End Sub
20. 21. Private Sub Command3_LostFocus()
22. Label2 = "Perdió el foco el: " & Command3.Caption
23. End Sub
Nota: en la ventana de código podés ver que tenés 2 combos o listas desplegables:
El combo de la izquierda muestra los objetos que tiene el formulario, es decir los
controles, rutinas y funciones, y la lista de la derecha los eventos y métodos del
objeto seleccionado en la lista izquierda.
En la captura del ejemplo anterior, se puede ver que cuando el cursor se encuentra
dentro de la ventana de código está situado en un procedimiento determinado, las listas
se actualizan mostrándote dicho objeto, por ejemplo el cursor está en el control u objeto
llamado Command3 en el evento Gotfocus, y las listas desplegables muestran esto
mismo.
![Page 35: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/35.jpg)
Siguiendo el ejemplo anterior, para escribir código en el evento MouseMove del
Command1 para que muestre un mensaje cuando pasa el mouse encima del botón, se
tendría que seleccionar de la lista izquierda el Command1 de esta forma:
y después seleccionar el evento que se quiera utilizar disponible en el otro combo
desplegable, en este caso el MouseMove
Al hacer esto en la ventana de código visual basic te agrega un procedimiento vacío:
![Page 36: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/36.jpg)
Ahora el código que escribas dentro de este procedimiento se va a disparar cada vez que
pases el mouse encima del Command1. Por ejemplo para mostrar un mensaje con la
función MsgBox cada ves que pases el puntero encima, agrega lo siguiente:
Texto planoImprimir
1. Option Explicit
2.
3. ' -- \\ Evento MouseMove
4. Private Sub Command1_MouseMove( _
5. Button As Integer, _
6. Shift As Integer, X As Single, Y As Single)
7.
8. MsgBox "Estás encima del botón", vbInformation
9.
10. End Sub
Tomar la apariencia de los temas de
windows para los botones
Por defecto el aspecto de los botones, no toma la apariencia del tema que tenga activo
windows. Para poder hacer que los botones y el resto de los controles tengan la tengan,
se puede utilizar un archivo Manifest.
![Page 37: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/37.jpg)
En el siguiente enlace puedes ver un ejemplo de como implementarlo:
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 planoImprimir
1. Private Sub Form_Load()
2.
3. Check1.Caption = "Es usted mayor de edad"
![Page 38: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/38.jpg)
4. Check2.Caption = "¿ Tiene hijos ?"
5. Check3.Caption = "¿ Estudió alguna carrera ?"
6.
7. 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.
![Page 39: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/39.jpg)
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 planoImprimir
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
![Page 40: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/40.jpg)
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.
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
![Page 41: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/41.jpg)
Colocar varios controles Check y un botón
Texto planoImprimir
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
Cambiar la propiedad Value de todos los CheckBox que haya en el formulario
Colocar varios controles CheckBox y un Command
Texto planoImprimir
1. Option Explicit
2.
3.
4. Private Sub Command1_Click()
![Page 42: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/42.jpg)
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
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
![Page 43: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/43.jpg)
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 planoImprimir
1. Private Sub Check1_Click()
2.
3. 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 planoImprimir
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
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.
![Page 44: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/44.jpg)
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 planoImprimir
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 Sin
gle, 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.
![Page 45: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/45.jpg)
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
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:
![Page 46: controles[1]](https://reader033.vdocuments.co/reader033/viewer/2022052414/563db7af550346aa9a8d051b/html5/thumbnails/46.jpg)
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.