controles[1]

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

Upload: gianamor

Post on 04-Jan-2016

28 views

Category:

Documents


18 download

DESCRIPTION

ok

TRANSCRIPT

Page 1: controles[1]

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]

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]

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]

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]

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]

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]

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]

'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]

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]

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]

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]

' 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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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]

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.