Sei sulla pagina 1di 46

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 lgico 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 diseo o tiempo de ejecucin al control. Si es en tiempo de
diseo, 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
ejecucin debemos escribir el nombre de el TextBox que queremos y al presionar el
punto ".", vb despliega la lista de propiedades y mtodos del TextBox, y ah
seleccionamos Text

Por ejemplo si quiero mostrar un texto en un control llamado Text1 se hara de esta
forma:

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 hara 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 dara automticamente cuenta
que al no poner ninguna propiedad la asuma como tal, por ejemplo esto es vlido:
Private Sub Form_Load()
Text1 = "Un texto cualquiera"
End Sub

Esto de las propiedades por defecto lo tienen la mayora 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 dara 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 dara error y cargara una imagen perfectamente en el control sin indicar
explcitamente la propiedad.

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 lnea y que el texto se vea en varias y no todo en un nica lnea. Los valores
que posee son True que est activada y en False quiere decir que est deshabilitada. Por
defecto cuando aadimos un TextBox, la propiedad est en False, osea que tenemos que
indicarle nosotros a vb, ya sea desde la ventana de propiedades ponindola en true. Una
cosa importante es que esto no lo podemos cambiar en tiempo de ejecucin mediante
cdigo, 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 funcin de ocultar el verdadero contenido del TextBox por el
caracter que le indiquemos, por ejemplo los TextBox de ingresos de contrasea, 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

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
podrn 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 nmero que
identifica la longitud mxima 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 nmero de caracteres seleccionados.

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, haramos asi:

Private Sub Command1_Click()


'Copiamos el texto de Text1 en el Text2

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 haramos 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, automticamente 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 tamao de la fuente, establecerla en negrita, y luego le
asigna un texto "hola mundo".
Colocar un Command1 y un Text1

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 nmeros y algunos


otros caracteres indicados
El siguiente ejemplo muestra como hacer , comprobando en el eventos KeyPress de un
textbox, el valor del parmetro Keyascii, para que solo admita nmeros, 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 cdigo 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

'Acepta todos los nmeros, 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 funcin tambin 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 cdigo en todos ellos, solo asignando al valor KeyAscii el valor
retornado por la fuincin, para que el mismo acepte o no dichas teclas
Nota: tambin hay una funcin de visual basicllamada IsNumeric, para poder
determinar si un valor es un nmero

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 descripcin bsica de las funciones de visual basic para el
tratamiento de archivos, leer, guardar etc...

Colocar en un formulario un control Commondialog , un control textBox y un control


Command1:
Nota: al control textBox en la propiedadMultiline colocarle true y tambin establecerle
los ScrollBar

Cdigo fuente en el formulario:


Private Sub Command1_Click()
With CommonDialog1
.DialogTitle = " Seleccionar archivo"
.Filter = "Archivos txt|*.txt"
' abre el cuadro de dilogo 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

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
cdigo debe estar ubicado en el evento Resize del formulario, y para redimensionar el
textbox ( o cualquier otro control) se utiliza el mtodo Move
Ejemplo:
Private Sub Form_Resize()
'Primer y segundo parmetro es el valor Left y Top
'Parmetro 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

En el ejemplo, se recorren todos los controles del formulario mediante un bucle For
each. Luego, se van creando los dems controles Shape en tiempo de ejecucin, uno
para cada textbox , usando el mtodo Load que permite crear los controles en tiempo de
ejecucin 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

Cdigo 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(i).BackStyle =
Shape(i).BorderStyle
Shape(i).BorderWidth

shape
0 ' Fondo transparente
= 1 ' Borde slido
= 1 ' 0 Grosor del borde

' 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 dinmica
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
tambin 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 funcin SendKeys para enviar la
pulsacin 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...

Cdigo fuente en el formulario


Sub PasarFoco(KeyCode As Integer)
' si es la tecla enter ...
If KeyCode = 13 Then
' enva la pulsacin 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 parmetro el valor del cdigo 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

Ejemplo:
La rutina LimpiarTextBox, recibe como parmetro el formulario, por ejemplo para
limpiar todo el contenido de todas las cajas de texto que hay en el el formulario actual,
se ejecutara la rutina de la siguiente forma:
Call LimpiarTextBox(Me)

Colocar en el formulario, un CommandButton y varios controles TextBox


Cdigo 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
' botn que limpia todos los textbox
'''''''''''''''''''''''''''''''''''''
Private Sub Command1_Click()
Call LimpiarTextBox(Me)
End Sub

Descripcin
El control Label o Etiqueta es un simple control que se utiliza para mostrar texto,
descripciones, informacin para el programa.

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 Botn, hac doble click en el mismo, escribe Label1 y
presiona el ".", Visual Basic te desplegar la lista de propiedades y mtodos 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 cdigo, visualiza la hora actual, asignando a la propiedad Caption
(dentro de un Timer), el valor devuelto por la funcin 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.

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 ajustarn 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

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
cdigo, 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 descripcin cuando pasamos el mouse por
encima del control.

Ejemplo para cambiar propiedades en tiempo de


ejecucin
Colocar 5 Command Button en un formulario: Command1, Command2, Command3,
Command4 y Command5, y un control Label1 como est en la imagen:

Este bsico 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 dilogo 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 lnea:
Label1.Enabled = Not Label1.Enabled

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
clasula 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 informacin de un objeto mediante un rectngulo amarillo cuando pasamos
el mouse por encima, como los tipicos controles de windows de cualquier aplicacin.
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

Cdigo 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,

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:

Evento Click: Se produce al hacer un click


Evento DblClick: Se produce al hacer doble click
evento MouseDown: Se produce al presionar el ratn 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 despus de soltar el botn
del mouse
Evento Change: Se produce cuando cambia la propiedad Caption del control.
Este evento puede utilizarce para validar algn cambio

Ejemplo utilizando el evento MouseMove


Lo siguiente, muestra como simular un enlace, como el de una pgina 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.

Cdigo 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 direccin url
11.
.Caption = " http://www.google.com "
12. End With
13. End Sub
14.

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 clsicos
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 algn 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, pods utilizar un bucle For Each y mediante el
operador TypeOf de vb comprobar si es un Label

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 funcin RND y la funcin RGB
de Visual basic. Por supuesto en el bucle pods probar cambiar otras propiedades que
quieras. Esto tambin 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 tambin varios controles Label, por ejemplo
4o5
Colocar tambin un botn para poder ejecutar el cdigo del bucle
Pegar el siguiente fragmento de cdigo 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 cdigo , solo colocar dos controles Label
superpuestos, y el que est debajo de color negro, como muestra el grfico:

Nota: desde opciones > men Herramientas, puedes especificar los valores para la
cuadrcula del formulario, por defecto son 120 twips, colocando un valor mas bajo,
tendrs mas precicin para colocar el control Label al arrastrarlo en el formualrio.

Simple botn
Este senciilo ejemplo muestra una forma de poder crear un botn 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

Descripcin del control


Este control " Botn de comando ", nos permite ejecutar alguna rutina, funcin o
procedimiento, generalmente en el evento click del mismo, para realizar de esta manera
alguna tarea dentro del programa

Como se dijo, se utiliza generalmente en el evento Click par ejecutar alguna accin
cuando se produce dicho evento, y es precisamente el evento Click, el que por defecto
aade 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 cdigo de visual basic, podemos ver la
siguiente rutina:
Texto planoImprimir
1. Private Sub Command1_Click()
2.
3.
4. End Sub
Todas las instrucciones que estn dentro de este procedimiento, llamado
Command1_Click, se ejecutarn cuando presionemos el botn. Por ejemplo si
ejecutamos el siguiente cdigo, lo que hara sera mostrar la fecha del sistema en la
barra de ttulo del formulario, utilizando la funcin Date de Visual Basic
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4.
' -- Establecemos en la barra de ttulo del formulario la fecha del Pc
5.
Me.Caption = Date
6.
7. End Sub
Este otro ejemplo, al presionar el botn, termina el programa utilizando la funcin End
de vb. Colocar un Botn en el form
Texto planoImprimir
1.
2.
3.
4.
5.
6.
7.
8.
9.

Option Explicit
Private Sub Command1_Click()
End
End Sub
Private Sub Form_Load()
Command1.Caption = "Salir"
End Sub

Propiedades
Las propiedades que posee el control CommandButton son prcticamente 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
clsico botn y este valor es el asignado por defecto. En cambio Graphical permite
utilizar CommandButton para poder mostrar imgenes, 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 grfico, ya que si est en
estndar 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 botn, 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 lneas en el formulario:
Texto planoImprimir
1.
2.
3.
4.
5.

Option Explicit
' -- Flag para que no se ejecute constantemente
' -- el cdigo del Form y del CommandButton
Dim Flag As Boolean

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 botn ser el botn
por defecto que se ejecutar cuando se presione la tecla enter. Por ejemplo hagamos de
cuenta que nuestro programa contiene un botn. Ese botn ejecuta un cdigo 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 cdigo que tenga en
el evento click. En este caso , en el evento clic, contendra todo el cdigo para realizar la
bsqueda de registros.
Un simple ejemplo
Coloca: Un control TextBox, un CommandButton. Pega el siguiente cdigo
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command1_Click()
4.
MsgBox "Se ejecut el evento Click del commandButton", vbInformation

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.
13.
14.

"y luego, presiona la tecla enter, y vers como de todas formas " & _
"se ejecut el evento click ya que es el control por defecto del" & _
"formulario. ( Nota .Solo puede haber un solo botn con la propiedad " &

_
15.
"Default en un formuario)", vbInformation
16.
17. End Sub

Propiedades de posicin
Las propiedades de posicin son las que permiten cambiar el tamao y la posicin 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 botn "Salir" en la parte inferior:

Ahora bien como hacer para que al presionar el botn de maximizar del formulario o
cambiar de tamao el formulario, el botn contine situado en la esquina inferior
derecha ? Para ello hay que modificar la propiedad Left y Top del botn. Pero donde
colocar el cdigo? para ello se debe colocar en el evento Resize del formulario.
Puedes probar este simple ejemplo con el siguiente cdigo:
Texto planoImprimir
1. Option Explicit
2.

3. ' Valores para mrgenes - 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 botn al cambiar de tamao 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 botn. 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 pequeo 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 tambin tenemos un botn que
contiene el cdigo que debe ejecutar para realizar la bsqueda dentro de la base de
datos. Si en algn momento el control de texto no contiene datos, es decir no contiene
texto valga la redundancia, no sera necesario que el botn se encuentre habilitado, por
el contrario, deberamos deshabilitarlo.
Puedes probar este simple ejemplo, colocando un control Textbox , un botn y pegando
el siguiente cdigo en el formulario principal

Texto planoImprimir
1. Option Explicit

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 algn 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 habilitarn todos los botones, luego al colocar el
cursor en el Text2, es decir cuando recibe el foco, se deshabilitarn todos los botones.

Texto planoImprimir

1. Option Explicit
2.
3. Private Sub Form_Load()
4.
Command1.Caption = "Opcin 1"
5.
Command2.Caption = "Opcin 2"
6.
Command3.Caption = "Opcin 3"
7.
Command4.Caption = "Opcin 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 mayora 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 botn. Pegar el siguiente cdigo fuente en el
formulario

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 funcin LoadPicture)
9.
.MouseIcon = Me.Icon
10. End With
11.
12. ' -- Cargar la lista de punters de mouse para el botn
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

37.
Command1.MousePointer = 99
38.
Command1.MouseIcon = Me.Icon
39.
End If
40. End With
41. End Sub

Mtodos y funciones
Este control prcticamente no contiene mtodos o funciones. El mas importante y el
mas utilizado es el mtodo SetFocus, que tambin lo posen muchos otros controles.
Lo que hace el mtodo setFocus, es poder establecer el enfoque a un objeto especifico,
en este caso al botn. 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 tambin 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 ejecucin. Por ello siempre
se debe colocar una rutina de error para poder controlar esto, o comprobando estas
propiedades mediante una instruccin If Then
Para recrear este error puedes ejecutar este cdigo
Coloca dos botones
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub Command2_Click()
4.
' -- Esta instruccin 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 Botn Command2", vbInformation
13. End Sub
Para solucionarlo, simplemente puedes hacer algo asi
Colocar dos botones
Texto planoImprimir

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 Botn 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 botn, MouseDown cuando el botn
est abajo y cuando est arriba MouseUp

Por ejemplo para probar el uso de los mtodos 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 aadir los controles pegar el cdigo 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

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 cdigo pods ver que tens 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 mtodos 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 cdigo est situado en un procedimiento determinado, las listas
se actualizan mostrndote 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.

Siguiendo el ejemplo anterior, para escribir cdigo en el evento MouseMove del


Command1 para que muestre un mensaje cuando pasa el mouse encima del botn, se
tendra que seleccionar de la lista izquierda el Command1 de esta forma:

y despus 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 cdigo visual basic te agrega un procedimiento vaco:

Ahora el cdigo 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
funcin 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 "Ests encima del botn", 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.

En el siguiente enlace puedes ver un ejemplo de como implementarlo:

Descripcin
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 accin.
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
ejecucin de esta manera:
Por ejemplo si quisiremos 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"

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 ningn
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 botn
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
instruccin Exit Sub , en cambio si se ingres un nombre, visual basic prosigue la
ejecucin del resto del cdigo:

Cdigo 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 vaco mostramos el mensaje
12.
MsgBox "Debe ingresar un nombre", vbExclamation, "Encuesta"
13.
' -- Mediante Exit Sub salimos de la rutina para
14.
' -- no ejecutar las lneas 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 lnea
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 informacin
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 podra hacer de muchas otras maneras, pero est puesto as
para que se entienda mejor.

Otras propiedades
Las dems propiedades ya se han visto y son comunes a los dems controles de Visual
Basic, como son las propiedades de aspecto grfico y apariencia del control: Propiedad
Font, Forecolor, BackColor etc...., y otras como Visible, Enabled , Top, Left, Width,
Height etc...
A continuacin 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 botn


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()

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 grfico es la Propiedad Style:
Esta es similar a la del control CommandButton, y permite tener un checkBox de estilo
grfico o estilo Estndar normal, como muestra esta imagen:

Si est en Graphical, es posible cambiarle el color de fondo y tambin 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, pods ver que VisualBasic abre la ventana de cdigo
y te crea un procedimiento de evento como este:
Texto planoImprimir
1. Private Sub Check1_Click()
2.
3. End Sub
Todas las instrucciones que estn en este bloque , se producirn cuando hagamos un
click en dicho control:
Un ejemplo
Agrega 1 CheckBox. Luego pega el siguiente cdigo, 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 funcin
CBool que lo que hace es Convertir una expresin 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

Descripcin de los dems eventos

DragDrop: Ocurre cuando finaliza una operacin de arrastrar y colocar.


DragOver: Ocurre cuando la operacin 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 botn del mouse mientras el
checkBox tiene el enfoque.
MouseUp: Cuando se libera el botn del mouse mientras tiene el enfoque.
Validate : Ocurre cuando el control checkBox pierde el enfoque en favor de un
control que produce una validacin.

Ejemplos de eventos
Lo siguiente, utiliza el evento MouseMove del control, para que al pasar el mouse por
encima, se visualice una descripcin en un control de barra de estado. Tambin, hace un
simple efecto, cambiando el color del texto, similar al enlace de una pgina web.
Coloca en el formulario un control Check1, un control StatusBar, y el siguiente cdigo
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 descripcin 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

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 grficos 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 grfico para mostrar el valor checkeado, el otro control Image llamado
ImageUncheck, tiene el otro grfico 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.

Potrebbero piacerti anche