Está en la página 1de 106

Interface del usuario

Salvador Gurrola Velazquez


salvador.gurrola@yahoo.com.mx
Control Label - Etiquetas
• El control Label o Etiqueta es un simple control que se utiliza para mostrar
texto, descripciones, información 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 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.
– 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
Option Explicit  
Private Sub Form_Load()   
    ' \\ -- Configurar Timer   
    With Timer1   
        .Interval = 1000 ' -- 1 segundo   
        .Enabled = True  
    End With  
    With Label1    Private Sub Timer1_Timer()   
    Label1.Caption = Now   
        .Caption = ""  
End Sub  
        .Width = 2000   
    End With  
End Sub  
  
Propiedades
• 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:
Propiedades
• 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 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.
Ejemplo para cambiar propiedades en

tiempo de ejecución
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
• 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
•  
Ejemplo para cambiar propiedades en
tiempo de ejecución
' \\ -- Enabled   
• Código fuente dentro del formulario  Private Sub Command3_Click()   
Option Explicit       ' -- Si la propiedad Enaled está en True se pone F
  
' \\ -- Caption        ' -- si está en False se pone en TRue   
Private Sub Command1_Click()        Label1.Enabled = Not Label1.Enabled   
End Sub  
    Dim texto As String   ' \\ -- Tooltiptext   
    texto = InputBox("Escriba el texto a mostrar en el Label", "E Private Sub Command4_Click()   
Dim texto As String  
jemplo")    texto = InputBox("Escribi el texto que mostrará la pro
    ' -- Acá se asigna la variable texto en el Label    ad" _   
                                   & "ToolTipText", "Ejemplo")   
    Label1.Caption = texto      
End Sub       ' -- Le asignamos el valor de la variable Texto al L
  
' \\ -- BorderStyle        Label1.ToolTipText = texto   
Private Sub Command2_Click()        ' -- Mostramos un mensaje para indicar que pase e
use por   
    'Si actualmente tiene el valor 0 entonces la colocamos a 1        ' -- encima del control Label1   
    If Label1.BorderStyle = 0 Then       MsgBox "Pasá el mouse por encima del Label"  
End Sub  
        Label1.BorderStyle = 1   
    'Si tiene el valor 1 lo ponemos a 0    ' \\ -- Visible   
Private Sub Command5_Click()   
    Else     
        Label1.BorderStyle = 0        ' -- Si el Label está visible entonces lo ocultamos,
    ' -- si está oculto lo mostramos   
    End If       Label1.Visible = Not Label1.Visible   
End Sub     
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 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
Eventos del control Label:
• 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.

Option Explicit  
Private Sub Form_Load()   
    With Label1   
        ' -- Estilo transparente   
        .BackStyle = 0   
        ' -- Ajustar el control al texto   
        .AutoSize = True  
        ' --  Asignamos un texto para la dirección url   
        .Caption = " http://www.google.com "  
    End With  
End Sub  
  

Private Sub Form_MouseMove( _   
    Button As Integer, _   
    Shift As Integer, _   
    X As Single, Y As Single)   
   With Label1   
        If .FontUnderline Then  
            ' -- Color de la fuente del Label en negro   
            .ForeColor = vbBlack   
            ' Quitamos el Subrayamos al Label   
            .FontUnderline = False  
        End If  
    End With  
End Sub
Private Sub Label1_MouseMove( _   
    Button As Integer, _   
    Shift As Integer, _   
    X As Single, Y As Single)   
   With Label1   
        If Not .FontUnderline Then  
            ' --  Color Azul como el de los enlaces clásicos
  
            .ForeColor = QBColor(9)   
            ' -- Subrayamos el Label   
            .FontUnderline = True  
        End If  
   End With  
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:   

• 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
Control TextBox - Caja de texto
• 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
Control TextBox - Caja de texto
• 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, o sea 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.
Control TextBox - Caja de texto
• 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.
Control TextBox - Caja de texto
• 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
Control TextBox - Caja de texto
• 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.
Control TextBox - Caja de texto
• 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
• 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 
Control TextBox - Caja de texto
• 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


Private Sub Command1_Click()
With Text1

.ForeColor = vbGreen
.BackColor = vbBlack
.FontSize = 12
.FontBold = True
.Text = " Hola Mundo"

End With
End Sub
Control TextBox - Caja de texto
• 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
'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
Control TextBox - Caja de texto
• 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.
• 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
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
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
Control Frame de Visual basic
• El Frame es un control que se utiliza como contenedor de otros controles, de esta
manera los podemos agrupar.

Otra forma de colocar los controles dentro de un Frame es, por ejemplo si
tenemos 5 controles en un formulario y los quisiéramos colocar dentro, los
seleccionaríamos haciendo Click izquierdo y manteniendo presionada la
tecla Ctrl. Una vez que están todos seleccionados, desplegamos el menú
Edición, seleccionamos Cortar, luego seleccionamos el control Frame y
elegimos la opción Pegar.
Control Frame de Visual basic
• Propiedad Caption:
• Caption es la propiedad por defecto del control Frame y lo que hace es mostrar un texto a modo de título en la parte superior para el marco.
• Para asignar el texto lo podemos hacer desde la ventana de propiedades de vb y seleccionar dicha propiedad, o si la establecemos mediante código en tiempo de ejecución lo haríamos así

Option Explicit  
  
Private Sub Command1_Click()   
    ' -- Cambiar el caption   
    Frame1.Caption = "Texto del Frame"  
End Sub  
•   
Control Frame de Visual basic
• Propiedad BorderStyle
• Esta propiedad que posee el valor 0 y 1, indica si el Frame tendrá o no un borde. La siguiente imagen muestra en la izquierda un Frame
con el BorderStyle en 0 mientras que a la derecha un Frame con el BorderStyle en 1
•   
Control Frame de Visual basic
• Otras propiedades comunes
– Font : permite establecer el tipo de fuente : Negrita, subrayado, el tamaño, cursiva, tachado, etc .., y la propiedad
– ForeColor: permite establecer el color de la fuente.
– BackColor : el color de fondo del objeto
– Enabled : Determina si está habilitado o no el Frame.
– Height y Width : Determina el alto y ancho del control respectivamente.
– Left y Top: Determina la posición izquierda y superior en el contenedor, por lo general en el formulario, aun que puede ser cualquier otro que actué como contenedor de controles, como es el caso de un PictureBox.
– Visible : Devuelve y establece si el Frame se encuentra o no visible.
•   
Control Frame de Visual basic
• Recorrer todos los Frame de un formulario
– Si en algún momento es necesario poder averiguar todos los controles Frame que se encuentran en el formulario actual, por ejemplo para cambiarle alguna propiedad, es posible utilizar un bucle For Each y mediante el operador TypeOf de Visual basic, comprobar el tipo de objeto.
Ejemplo
– Lo siguiente es un simple ejemplo que recorre todos los controles del formulario, y dentro del bucle se verifica la clase de control. Si el control es un Frame, entonces le cambia la propieda Enabled a True o False dependiendo del valor del CheckBox, y también le cambia la propiedad Enabled a
los controles que se encuentren dentro de los Frames
– Colocar un CheckBox en el formulario, algunos frames por ejemplo, y dentro de los frames algunos controles
      

•   
Control Frame de Visual basic
Option Explicit  
' -- Caja de verificación para habilitar y deshabilitar   
Private Sub Check1_Click()      ' -- Desactivar controlador de error por si el cont
    Call EnabledDisabledFrames(Abs(Check1.Value))    rol   
        ' -- no posee la propiedad Container, como p
End Sub  
or ejemplo los Line, Shape etc ..   
' -- Sub para cambiar el Enabled y el forecolor de los frame         On Error Resume Next  
s.            ' -- Si el control x está dentro del frame, ento
' ---------------------------------------------------------------------------- nces ...   
------            If TypeOf xControl.Container Is Frame Then
Private Sub EnabledDisabledFrames(ByVal bValue As Bool   
ean)               xControl.Enabled = bValue ' -- Activar o de
    Dim xControl As Control    sactivar   
    ' -- recorrer la colección de controles del formulario            End If  
    For Each xControl In Me.Controls            On Error GoTo 0   
    Next  
        ' -- Comprobar el tipo de control con TypeOf   
End Sub 
        If TypeOf xControl Is Frame Then  
Private Sub Form_Load()   
           xControl.Enabled = bValue ' - - Habilitar o deshabilita     With Check1   
r            .Caption = "Habilitar / Deshabilitar Frames"  
        End If           .Value = 1   
           End With  
End Sub  
•   
Control Frame de Visual basic
• Ajustar el contr ol a las dim ensiones del formulario
– Lo siguiente , al maximizar o cambiar las dimensiones de la ventana, se ajusta el tamaño del frame modificando el ancho y alto del control.
– Colocar un Frame y un Botón de comando
     Option Explicit  
Private Sub Form_Resize()   
    Dim lFrameHeight As Long  
    lFrameHeight = Me.ScaleHeight - 100 - Command1.Height   
    ' -- Para evitar errores en valores negativos   
    If lFr ameHeight < 0 Then lFrameHeight = 0   
    ' -- Posicionar y ajustar Frame   
    With Frame1   
        .Move 50, 10, Me.ScaleW idth - 75, lFrameHeight   
    End W ith  
    ' -- Posicionar y ajustar el botón en la parte inferior derecha de la ventana   
    With Command1   
        .Top = Frame1.Top + Frame1.Height + 50   
        .Left = Frame1.Left + Frame1.W idth - .Width   
    End W ith  
End Sub   
Private Sub Command1_Click()   
    Unload Me  
End Sub  
Private Sub Form_Load()   
    Command1.Caption = "Salir .." 
End sub 

 
Control Frame de Visual basic
• Crear Frame en tiempo de ejecución
• Este código , crea un control en tiempo de ejecución utilizando el método Add de la colección Controls de los formularios, y declara una variable de tipo "Frame" con la palabra reservada Withevents de Visual basic para poder acceder a los eventos del mismo, como cualquier otro Frame, es decir los eventos clic, DobleClic, etc ..
Option Explicit  
' -- Variable  con evento para  crear el objeto / control   
Private WithEvents mFrame As Frame   
Private Sub Form_Load()   
    ' -- Crear Frame con Controls.Add y asignarlo a mF rame   
    Set mFrame = Me.Controls.Add("vb.Frame",  "NombreDelFrame")   
    ' -- Establecerle propiedades   
    W ith mFrame   
        ' -- Posicionarlo y establecer dimensión   
        .Move 500, 500, Me.ScaleWidth - 1000, Me.ScaleHeight - 1000   
        ' -- Otras   
        .Caption = "F rame  creado en tiempo de ejecución"  
        .Font.Size = 10   
        .Font.Bold = True  
        .Visible = True ' -- Hacerlo visible   
    End With  
End Sub  
' \\ -- Evento   
Private Sub mFrame_Click()   
    Ms gBox "Clic en el Frame", vbInformation   
End Sub  

' \\ -- Eliminar control y variable de referencia cuando ya no se utilice   
Private Sub Form_Unload(Cancel As Integer)   
    Me.Controls.Remove "NombreDelFrame"  
    Set mFrame = Nothing  
End Sub  
Control CommandButton - botón de



comando
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
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:
Private Sub Command1_Click()   
  
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
Option Explicit  
Private Sub Command1_Click()   
    ' -- Establecemos en la barra de título del formulario la fecha del Pc   
    Me.Caption = Date  
End Sub 
 

 
Control CommandButton - botón de


Propiedad Style
comando
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.
 

 
Control CommandButton - botón de


comando
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:
Option Explicit  
' -- Flag para que no se ejecute constantemente   
' -- el código del Form y del CommandButton   
Dim Flag As Boolean  
Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)   
    ' -- Establecer la fuente del commandButton en negrita y con subrayado   
    If Flag Then  
        Command1.Font.Bold = True  
        Command1.Font.Underline = True  
        Command1.BackColor = vbWhite   
        Flag = False  
    End If  
End Sub  

Private Sub Form_MouseMove(Button As Integer, Shift As Inte
ger, X As Single, Y As Single)   
    ' -- Quita la negrita, el subrayado, y restaura el color de fond
o   
    If Flag = False Then  
        Command1.Font.Bold = False  
        Command1.Font.Underline = False  
        Command1.BackColor = vbButtonFace   
        Flag = True  
    End If  
Control CommandButton - botón de



Propiedad Default
comando
– 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 F alse. Si está en True, el botón s erá 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ódig o para buscar datos en una base de datos. Si el usuario en un momento determ inado, se encuentra escribiendo datos en un control textbox, y pres iona 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ús queda de registros.
Un simple ejemplo
Coloca: Un control TextBox, un CommandButton. Pega el siguiente código
  Option Explicit  
Private Sub Command1_Click()   
    Ms gBox "Se ejecutó el evento Click del commandButton",  vbInformation   
End Sub  
Private Sub Form_Load()   
    ' -- Establecer propiedad Default   
    Command1.Default  = True  
    Ms gBox "Coloca el curs or en un control textbox para  que tome el foco, " & _   
           "y luego, presiona  la tecla enter, y verás como de todas form as " & _   
           "se ejecutó el evento click ya que es el control por defecto del" & _   
           "form ulario. ( Nota .Solo puede haber un s olo botón con la propiedad " & _   
           "Default en un formuario)", vbInformation   
End Sub  
  

 
Control CommandButton - botón de


Propiedades de posición
comando
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.
Option Explicit  
  
' Valores para  márgenes - Prueba cambiando estos valores   
Private Const MARGEN_IZQUIERDO        As Single = 60   
Private Const MARGEN_INFERIOR        As Single = 60   
  
Private Sub Command1_Click()   
    Unload Me  
End Sub  
  
Private Sub Form_Load()   
    Command1.Caption = "Salir"  
End Sub  
  
' -- Posicionar el botón al cambiar de tamaño la ventana de formulario   
Private Sub Form_Resize()   
    Command1.Left = (Me.ScaleWidth - Command1.Width) - MARGEN_IZQUIERDO   
    Command1.Top = (Me.ScaleHeight - Command1.Height)  - MARGEN_INFERIOR   
End Sub  

  

 
Control CommandButton - botón de





Propiedad Enabled

Aquí puedes ver ver un pequeño ejemplo de su uso.


comando
Esta propieda d lo que hace es habilitar o deshabilitar el botón. Es una propiedad que la poseen casi todos los controles, ta nto los de Visual basic, como otros controles de terceros ( controles ocx o Acti vex )

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ía mos deshabilitarlo.
Puedes proba r este simple ejemplo, colocando un control Textbox , un botón y pegando el siguiente código en el formulario principal
Option Explicit  
Private Sub Command1_Click()   
    MsgBox Text1.Text, vbInformation   
End Sub  
Private Sub Form_Load()   
    Text1.Text = ""  
    Command1.Caption = "Buscar .."  
End Sub  
' -- El evento Change se produce cuando cambia el contenido   
' -- de la caja de texto   
Private Sub Text1_Change()   
    If Text1.Text = "" Then  
       Command1.Enabled = False  
    Else  
       Command1.Enabled = True  
    End If  
End Sub  

  

 
Control CommandButton - botón de





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
comando
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
Option Explicit  
Private Sub Form_Load()   
    With Command1   
        ' -- Puntero de mouse personalizado - Pasar usar con íconos   
        .MousePointer = 99   
        ' usar el íco no del formulario ( Pued es especificar el 
‘que desees cargandolo  desde la ventana de 
‘propiedades o utilizando la función LoadPicture)   
        .MouseIcon = Me.Icon   
    End With  
    ' -- Cargar la lista de punters de mouse para el botón   
    With List1   
        .AddItem "0 - Default"  
        .AddItem "1 - Arrow"  
        .AddItem "2 - Cross"  
        .AddItem "3 - Beam"  
        .AddItem "4 - Icon"  
        .AddItem "5 - Size Ne SW"  
        .AddItem "6 - Size Ne SW"  
     

  

   .AddItem "7 - Size N S"  
        .AddItem "8 - Size NW Se"  
        .AddItem "9 - Up Arrow"  
        .AddItem "10 - HourGlass"  
        .AddItem "Custom"  
    End With  
End Sub  
Private Sub List1_Click()   
    ' -- Cambiar la propiedad MousePointer   
    With List1   
        If .ListIndex <> -1 Then  
            Command1.MousePointer = .ListIndex   
        End If  
        If .ListIndex = .ListCount - 1 Then  
           Command1.MousePointer = 99   
           Command1.MouseIcon = Me.Icon   
        End If  
    End With  
End Sub 
Control CommandButton - botón de





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
comando
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. Lueg o un Label1 que mostrará el control que recibe el foco (GotFocus) y un Label2 que mostrará el control que pierde el foco (LosFocus)
Private Sub Command1_GotFocus()   
    Label1  = "El foco lo tiene: " & Command1.Caption   
End Sub  
Private Sub Command2_GotFocus()   
    Label1  = "El foco lo tiene: " & Command2.Caption   
End Sub  
Private Sub Command3_GotFocus()   
    Label1  = "El foco lo tiene: " & Command3.Caption   
End Sub  
Private Sub Command1_LostFocus()   
    Label2  = "Perdió el foco el: " & Command1.Caption   
End Sub  
Private Sub Command2_LostFocus()   
    Label2  = "Perdió el foco el: " & Command2.Caption   
End Sub  
Private Sub Command3_LostFocus()   
    Label2  = "Perdió el foco el: " & Command3.Caption   
End Sub  

     

  

 
Control CheckBox
• El control CheckBox se utiliza generalmente para listar opciones y que el usuario pueda elegir
entre ellas, y dependiendo del valor (si está chequeado o no), se realiza una u otra acción.
• Una vista previa de este control:

Propiedad Caption
La propiedad del CheckBox que visualiza el texto en el control se llama Caption. Para
establecerla se realiza desde la ventana de Propiedades de Visual Basic , o en tiempo de
ejecución de esta manera:
Por ejemplo si quisiéremos hacerlo en el evento Load del Formulario , DobleClick sobre
el form y en el procedimiento Form_Load:
Private Sub Form_Load()   
  
    Check1.Caption = "Es usted mayor de edad"  
    Check2.Caption = "¿ Tiene hijos ?"  
    Check3.Caption = "¿ Estudió alguna carrera ?"  
  
End Sub  
Control CheckBox
• 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.
Control CheckBox
• 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.
Option Explicit  
Private Sub Command1_Click()   
    ' -- Esta variable almacenará los datos para mostrar   
    ' -- el resultado al final de la rutina   
    Dim Resultado As String  
    ' -- Esto verificará si el text1 no está vacio y se ha ingresado un nombre   
    If Text1 = "" Then  
        ' -- si está vacío mostramos el mensaje   
        MsgBox "Debe ingresar un nombre", vbExclamation, "Encuesta"  
        ' -- Mediante Exit Sub salimos de la rutina para   
        ' -- no ejecutar las líneas que debajo   
        Exit Sub  
    End If  
    ' -- Ahora guardamos en la Variable Resultado el nombre que   
    ' -- se ingresó en el control text1   
    Resultado = "Su nombre es " & Text1 & vbNewLine   
    ' -- Evaluamos el Check1 (mayor de edad)   
    If Check1.Value = 0 Then  
        Resultado = Resultado & "Usted no es mayor de edad"  
    Else  
        Resultado = Resultado & "Usted es mayor de edad"  
    End If  
    ' -- Le agregamos a la variable resultado un salto de carro o salto de línea   
  

  Resultado = Resultado & vbNewLine   
    ' -- Evaluamos el Check2 (Si tiene hijos )   
    If Check2.Value = 0 Then  
        Resultado = Resultado & "Usted no tiene Hijos"  
    Else  
        Resultado = Resultado & "Usted tiene hijos"  
    End If  
    ' -- Otro salto de carro   
    Resultado = Resultado & vbNewLine   
    ' -- Evaluamos el Check3 (si estudió)   
    If Check3.Value = 0 Then  
        Resultado = Resultado & "Usted no estudió una Carrera"  
    Else  
        Resultado = Resultado & "Usted estudió una Carrera"  
    End If  
    ' -- Mostramos el valor de la variable Resultado con la informació
  
    MsgBox Resultado, vbInformation, "Encuesta"  
End Sub  
Private Sub Form_Load()   
    ' -- Establecer Caption  de los controles   
    Command1.Caption = "Mostrar resultados"  
    Check1.Caption = "¿ Es usted mayor de edad ?"  
    Check2.Caption = "¿ Tiene hijos ?"  
    Check3.Caption = "¿ Estudió alguna carrera ?"  
    Text1.Text = vbNullString   
End Sub 
Control CheckBox
Control CheckBox
• Cambiar la propiedad FontBold ( Estilo negrita ) de todos los CheckBox que haya en el formulario
• Colocar varios controles Check y un botón
Option Explicit  
Private Sub Command1_Click()   
    Static bValue As Boolean  
    ' Variable de tipo control   
    Dim xCheckBox As Control   
    ' Recorr er en un bucle todos los controles del formulario actual   
    For Each xCheckBox  In Me.Controls   
        ' Comprobar con el operador TypeOf si es un contr ol CheckBox   
        If TypeOf xCheckBox Is CheckBox Then  
           ' Cambia la propiedad Bold   
           xCheckBox.FontBold = Not bValue   
        End If  
    Next  
    If bValue = False Then  
       Command1.Caption = "Negrita"  
    Else  
       Command1.Caption = "Normal"  
    End If  
    bValue = Not bValue   
End Sub 
Private Sub Form_Load()   
    Command1.Caption = "Normal"  

End Sub  
Control CheckBox
• Cambiar la propiedad Value de todos los CheckBox que haya en el formulario
• Colocar varios controles CheckBox y un Command
Option Explicit  
  
  
Private Sub Com mand1_Click()   
  
    Static  bValue As Boolean  
       
    bValue = Not bValue   
       
    Dim xCheckBox As Control   
    ' Recorrer en un bucle todos los controles del form   
    For Each xCheckBox In Me.Controls   
        ' Comprobar con el operador TypeOf si es un control CheckBox   
        If TypeOf xCheckBox Is CheckBox Then  
           ' Cambiar la propiedad Value   
           xCheckBox.Value  = Abs(bValue)   
        End If  
    Next  
       
    Command1.Caption = "Value: " & CS tr(bValue)   
       
End Sub  
  
Private Sub Form_Load()   
    Command1.Caption = "Value: F also"   
End Sub  
Control CheckBox
• 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.
Control CheckBox
• 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.
Option Explicit  
' -- Flag   
Private bMouseEnter      As Boolean  
' -- Cambiar color del texto al cambiar el value   
' ------------------------------------------------------   
Private Sub Check1_Click()   
    With Check1   
        If .Value = 0 Then .ForeColor = vbBlack   
        If .Value = 1 Then .ForeColor = vbRed   
    End With  
End Sub  
  
Private Sub Check1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)   
    If bMouseEnter = False Then  
        bMouseEnter = True  
        ' -- Resaltar texto y mostrar la descripción en la barra de estado   
        Call CambiarPropiedad(Check1, True)   
        StatusBar1.Panels(1).Text = "Un texto descriptivo ...."  
    End If  
End Sub  
  
Private Sub Form_Load()          
    ' -- Propiedades de la barra de estado   
Control CheckBox
    With StatusBar1   
        .Style = sbrNormal                  ' -- Estilo   
        .Panels(1).AutoSize = sbrSpring     ' -- ajustar al ancho   
    End With  
    ' -- Propiedades iniciales de la fuente   
    With Check1   
        .FontName = "Verdana"  
        .FontSize = 12   
        .FontBold = True  
    End With  
End Sub  
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)   
    If bMouseEnter Then  
       bMouseEnter = False  
       ' -- Volver a colocar el texto normal   
       Call CambiarPropiedad(Check1, False)   
       StatusBar1.Panels(1).Text = ""  
    End If  
End Sub  

Private Sub CambiarPropiedad(CheckBox As CheckBox, 
bMouse As Boolean)   
    With CheckBox   
        If bMouse Then  
            ' subrayar el texto y colocarlo en azul   
           .ForeColor = vbBlue   
           .FontUnderline = True  
        Else  
            ' texto normal   
            If .Value = 0 Then .ForeColor = vbBlack   
            If .Value = 1 Then .ForeColor = vbRed   
           .FontUnderline = False  
        End If  
    End With  
End Sub  
Control OptionButton - Botón de opción
• La función específica del control OptionButton es permitirle al usuario elegir entre diferentes
opciones dentro de un grupo de opciones. Este control no se utiliza de a uno solo, si no que se debe
tener por lo menos 2 de ellos, ya que sería ilógico utilizar uno solo.
• En este grupo de opciones solo puede estar un solo botón de opción seleccionado al mismo tiempo

Control OptionButton - Botón de opción
Propiedad Value del OptionButton
•  Esta es la propiedad mas importante de este control. Los valores que puede tener la propiedad Value son de tipo boolean (Verdadero - Falso) es decir True y False.
• Para probar un ejemplo muy fácil de como verificar el valor de la propiedad Value , agrega 3 OptionButton dentro de un control Frame como muestra la imagen anterior.
• Mediante la propiedad Caption le cambias el texto de cada botón de opción. Luego Agrega un Command1 y en el caption escribe Aceptar.
• Ahora pega este código en el formulario:
Private Sub Command1_Click()
'Si está seleccionado el Option1 se ejecuta la siguiente condición
If Option1.Value = True Then
   MsgBox "Seleccionaste pagar en Efectivo"
End If

'Si está seleccionado el Option2 esta


If Option2.Value = True Then
   MsgBox "Seleccionaste pagar con Tarjeta de crédito"
End If

'Si está seleccionado el Option3 se ejecuta esta otra


If Option3.Value = True Then
   MsgBox "Seleccionaste pagar mediante Cheque"
End If

End Sub
Control OptionButton - Botón de opción
• Las demás propiedades que posee son comunes a la mayoría de los otros controles del visual basic, como:
• Propiedad Forecolor (color de la fuente)
• Propiedad Font ( para especificar el tipo de fuente, el estílo, el tamaño etc...)
• Propiedad Enabled ( Para habilitar o deshabilitar el control )
• Propiedad Hight y Width ( Ancho y alto del control )
• Propiedad Backcolor ( color del fondo )
• Propiedad ToolTipText ( Muestra un recuadro con información adicional cuando el mouse está encima del control )
• Propiedad Visible ( determina si el control estará visible - Los valores son True y False )
Control OptionButton - Botón de opción
• Otro ejemplo del control OptionButton:
•  Coloca 2 controles OptionButton llamados Option1 y Option2 dentro de un control Frame (opcional). También colocar un control Label llamado Label1, como está en esta imagen:
Private Sub Form_Load()
'Le establecemos en tiempo de ejecución algunas propiedades al control Label1
'cuando carga el formulario

'Esto hace que el control Label se ajuste al texto


Label1.AutoSize = True
'Esta línea cambia la propiedad Forecolor del Label en azul
Label1.ForeColor = vbBlue
End Sub

Private Sub Option1_Click()


'Mostramos en el Label1 la fecha del Sistema
Label1 = Date
End Sub

Private Sub Option2_Click()


'Mostramos en el Label1 la Hora del sistema
Label1 = Time
End Sub
Control OptionButton - Botón de opción
• Por ejemplo supongamos que queremos en un mismo formulario, tener varios grupos de opciones .Para hacer esto se deben colocar el grupo de
OptionButton contenidos en un control contenedor, por ejemplo un Frame, de esta manera cada grupo de OptionButton será único. Para que se
entienda mejor un ejemplo.
• Colocar 2 Controles Frame ( Frame1 y Frame2 ) . Dentro del Frame1 agregar 2 OptionButton (Option1 y Option2) y en el Frame2 otros 2 Option
(Option3 y Option4)
Control ListBox
• Control ListBox
• El control ListBox permite añadir elementos en forma de lista y también poder seleccionar elementos de la misma para trabajar los datos.
• Este control permite seleccionar un elemento solo o varios de ellos, utilizando la propiedad Multiselect. La imagen de la izquierda muestra un ListBox en el que
se selecciona un solo elemento y a la derecha se seleccionan varios:


Control ListBox
Para agregar elementos a un control ListBox en tiempo de diseño, se debe seleccionar el control Listbox, y desde la ventana de propiedades ubicarnos en la que se llama List. Al desplegarla podemos agregar y remover elementos.
• Para esto se debe ingresar uno, luego mantener la tecla Ctrl presionada y presionar Enter, y agregar el siguiente y asi con los demás.
• Para agregarlos en tiempo de ejecución, es decir mediante código, se utiliza un método llamado AddItem.
• El método AddItem tiene 2 parámetros.
• AddItem "Elemento que vamos a agregar", "Index (posición)"
• El primer parámetro es obligatorio, y es el elemento que vamos a añadir al control List. El segundo parámetro no es obligatorio, es decir es opcional, y permite especificar el lugar donde añadir el elemento, es decir la posición. A este se le pasa un número entero, por
ejemplo 0, 1, 5 etc...Si no se especifica una posición, el elemento que se agrega es añadido al final de la lista.


• Por ejemplo, si quisiera agregar 5 nombres de países en un control llamado List1, cuando presionamos un Command1 :
Control ListBox
Private Sub Command1_Click()
List1.AddItem "Brasil"
List1.AddItem "Francia"
List1.AddItem "Italia"
List1.AddItem "Argentina"
List1.AddItem "venezuela"
End Sub
• Para eliminar un elemento se utiliza el método RemoveItem. Este método tiene un parámetro llamado Index en el cual debemos indicar la posición del elemento que vamos a eliminar.
Private Sub Command2_Click()
'Eliminamos el elemento 2 de la lista
List1.RemoveItem 2
End Sub
• El ejemplo anterior eliminaría de la lista el elemento "Italia". Te preguntarás porque elimina a "Italia" si este está en la posición 3. En realidad está en la posición 2, ya que se comienza el conteo desde el 0, es decir en la lista del ejemplo anterior, "Brasil" tiene el número 0, "Francia" el 1, "Italia" el 2 etc...


• Ejemplo simple para agregar y eliminar elementos de un control List
Control ListBox
• Un control Label1 y en el Caption escribir "Nombre". Un Command1 y en el Caption "Añadir". Al Command2 "Eliminar Seleccionado". Luego agrega un Text1 al lado del control Label1 y un control List1.
Private Sub Command1_Click()
If Text1 = "" Then
   MsgBox "Debe ingresar un nombre para poder agregar un elemento", vbQuestion + vbOKOnly, "Datos incompletos"
   'Salimos de la rutina ya que no se ha ingresado nada en el control text1
   Exit Sub
End If

'Agregamos el contenido del Text1 en el control List1


List1.AddItem Text1
End Sub

Private Sub Command2_Click()


'Si la lista no está vacía entonces podemos eliminar
If List1.ListIndex <> -1 Then
   'Eliminamos el elemento que se encuentra seleccionado
   List1.RemoveItem List1.ListIndex
End If
End Sub
• Propiedad Sorted:
Control ListBox
• Si quisiéramos ordenar el contenido, es decir los elementos del control List en forma alfabética, debemos utilizar la propiedad Sorted.
• Esta propiedad no se puede utilizar en tiempo de ejecución, si no que la debemos establecer en tiempo de diseño desde la ventana de propiedades. Si la propiedad está en True, la lista de elementos se mostrará en forma ordenada, si está en False sin ordenar. Por defecto esta propiedad está con el Valor False.
•  
• Eliminar elementos con el método Clear
• Para eliminar todo el contenido de un control ListBox se utiliza el método o función llamado Clear.
• Por ejemplo:
Private Sub Command1_Click()

'Elimina todo el contenido del ListBox


List1.Clear

End Sub
• Propiedad ListCount
Control ListBox
• La propiedad ListCount devuelve la cantidad de elementos que contiene el control.
• Por ejemplo, en las siguientes líneas, cuando se presiona un Command1, se agregan 3 elementos. Luego se muestra un mensaje, mediante un MsgBox, con la cantidad de elementos del control, consultando el valor de la propiedad ListCount :
•  
Private Sub Command1_Click()

'Agregamos 3 elementos al listado


List1.AddItem "Enero"
List1.AddItem "Febrero"
List1.AddItem "Marzo"

'Mostramos medianete un mensaje la cantidad de elementos


'del contenido del ListBox, en este caso devuelve 3
MsgBox List1.ListCount

End Sub
• Propiedad List
Control ListBox
• La propiedad List devuelve o establece los elementos contenidos en la lista del control.
• Esta propiedad lleva un parámetro que indica el número del elemento que se quiere consultar.
• Un ejemplo: si quisiera mostrar en un Label1 el texto del elemento que se selecciona, haríamos lo siguiente:
•  
• Colocar un List1 y un Label1. Pegar esto en el formulario:
Private Sub Form_Load()
'Agregamos 3 elementos al listado
List1.AddItem "Enero"
List1.AddItem "Febrero"
List1.AddItem "Marzo"
End Sub

Private Sub List1_Click()


'Cuando hacemos Click en un elemento del List1 _
mostramos en el Label1 el texto del elemento
Label1 = List1.List(List1.ListIndex)
End Sub

Control ListBox
Otras propiedades del control ListBox son:
• Propiedad Backcolor : Establece el color de fondo del control
• Propiedad Enabled : Permite habilitar o deshabilitar el control ListBox - Valores True y False
• Propiedad Font : Establece el tipo de fuente, tamaño estilo etc... de los elementos
• Propiedad ForeColor : Establece el color de la fuente de los elementos
• Propiedad Height y Width : Establece el ancho y alto del control
• Propiedad MultiSelect : Permite indicar si el ListBox se podrá seleccionar mas de un elemento
• Propiedad Visible : Si está en True el control será visible si está en False estará oculto
• Los eventos principales del control son:
Control ListBox
• Evento Click: Ocurre cuando el usuario presiona y libera un botón del mouse encima de un objeto.
• Evento DblClick: Ocurre cuando el usuario presiona y libera un botón del mouse y después lo vuelve a presionar y liberar sobre un objeto.
• Evento DragDrop: Ocurre cuando finaliza una operación de arrastrar y colocar. en este enlace hay un ejemplo simple del uso de este evento: DragDrop entre dos listbox
• Evento DragOver: Ocurre cuando una operación de arrastrar y colocar está en curso.
• Evento GotFocus: Ocurre cuando el control recibe el enfoque.
• Evento LostFocus: Ocurre cuando un objeto Pierde el enfoque el control
• Evento ItemCheck: Ocurre cuando la propiedad Style de un control ListBox es 1 (casillas de verificación) y la casilla de verificación de un elemento en el control ListBox está activada o desactivada.
• Evento KeyDown: Ocurre cuando el usuario presiona una tecla mientras un objeto tiene el enfoque.
• Evento KeyPress: Ocurre cuando el usuario presiona y libera una tecla ANSI.
• Evento KeyUp: se produce cuando el usuario libera una tecla mientras el control tiene el enfoque.
• Evento MouseDown: Ocurre cuando el usuario presiona el botón del mouse mientras un objeto tiene el enfoque.
• Evento MouseMove: Ocurre cuando el usuario mueve el mouse.
• Evento MouseUp: Ocurre cuando el usuario libera el botón del mouse mientras un objeto tiene el enfoque.
• Evento Scroll: Ocurre cuando cambia la posición de un cuadro de desplazamiento en un control, es decir cuando se mueve la barra de Scoll
• Evento Validate: Se produce cuando un control pierde el enfoque en favor de un control que produce una validación.
Control ComboBox
• Este control muy utilizado en los programas nos permite mediante una lista desplegable poder
seleccionar elementos, como también es posible introducir elementos a la misma

Por ejemplo , el siguiente código añade 50 elementos en un bucle For Next:


Dim Elemento As Integer
For Elemento = 0 To 50
  'Agregamos el valor de la variable Elemento al Combo
  Combo1.AddItem i
Next
 
Al igual que el control ListBox, para eliminar todo el contenido se usa el método Clear
 
'Eliminamos todo el contenido
Combo1.Clear
• Propiedad DataField y DataSource
Control ComboBox
• Estas dos propiedades presente en el control ListBox y el control ComboBox, además de varios otros controles de visual basic, como el Label, TextBox etc..., pemiten enlazar los controles a una base de datos.
•  
– DataField: Devuelve o establece un valor que enlaza un control con un campo del registro actual.
– DataSource: Establece un valor que especifica el control de datos mediante el cual se enlaza el control actual a una base de datos

• Por ejemplo, lo siguiente, enlaza un control Combo1, que previamente está asociado a un control Data1 mediante la propiedad DataSource, con el campo " Nombres " de una tabla llamada Clientes, de la base de datos Bd1.Mdb.
– Data1.DatabaseName = App.Path & "\bd1.mdb"
Data1.RecordSource = "Clientes"

Combo1.DataField = "Nombres"

Control PictureBox - Caja de gráficos e
imágenes
• El control PictureBox se utiliza para mostrar y cargar archivos de imagen,
también para dibujar figuras mediante los métodos gráficos , y también
como control contenedor de otros controles, como los controles Frame
• Vista de un picturebox con un gráfico cargado

Vista de un PictureBox con un dibujo hecho por


nosotros, en este caso un rectángulo :
Control PictureBox - Caja de gráficos e

imágenes
La principal propiedad del control PictureBox se llama precisamente Picture.
• Esta propiedad es la que indica el gráfico que estará cargado. Para cargar un gráfico en visual basic desde el disco, se usa la función LoadPicture. A Esta función le debemos indicar como parámetro la ruta del fichero
• Por ejemplo si quisiera cargar un archivo de imagen llamado paisaje.jpg que está ubicado en la unidad c:, y que se cargue cuando le damos un click a un CommandButton, tendriamos que hacer esto:
Option Explicit  
  
Private Sub Command1_Click()   
    ' -- Le indicamos al método LoadPicture la ruta del gráfico   
    With Picture1   
        .Picture = LoadPicture("c:\paisaje.jpg")   
    End With  
End Sub  
• De esta manera estamos cargando el archivo en tiempo de ejecución. Se dice tiempo de ejecución ya que el archivo lo estamos cargando cuando está corriendo el programa. En cambio si quisiéramos cargar el archivo gráfico en tiempo de diseño, tendríamos que seleccionar el
control Picture que colocamos en el formulario, ir a la ventana de propiedades de Visual basic, buscar la propiedad Picture, y seleccionar mediante un cuadro de diálogo de windows, buscarlo en la Pc, y cargar el archivo que queramos. Luego de hacer esto, automáticamente se
cargaría la imagen en el control.
Control PictureBox - Caja de gráficos e

imágenes
Ahora ¿ Cómo borrar en tiempo de ejecución la imagen cargada y dejar el Picture vacío ?
• Muy simple, debemos hacer lo siguiente:
Option Explicit  
  
Private Sub Command1_Click()   
    ' -- Le indicamos una ruta o path vacío para eliminar la imagen del PictureBox   
    With Picture1   
        .Picture = LoadPicture("")   
    End With  
End Sub  
 
• Otra forma de eliminar la imagen es mediante la palabra reservada de vb Nothing .
' -- Eliminar la imagen mediante la palabra reservada Nothing de vb   
With Picture1   
    .Picture = Nothing  
End With  
Usar el PictureBox como contenedor
• El control PictureBox también funciona como contenedor de otro controles. Esto quiere decir que podemos colocar controles TextBox, botones
etc..., dentro del control , y estos estarán contenidos.
• Ejemplo : Colocar un Picture1 en el formulario con 2 CommandButton de la siguiente manera:
• En la propiedad caption del Command1 coloca "Ocultar PictureBox" y en el otro "Mostrar PictureBox"
• Ahora selecciona los controles que quieras de la barra de controles y dibujalos dentro del Picture1. Asegurate que los dibujes dentro del mismo
• Los botones Command1 y Command2 hacen lo mismo que el ejemplo anterior, es decir mediante la propiedad Visible del Picture1 , ocultan y
hace visible nuevamente al PictureBox, utilizando el valor True o False respectivamente.
Usar el PictureBox como contenedor
Option Explicit  
  
Private Sub Command1_Click()   
    ' -- Ocultar el Picture   
    Picture1.Visible = False  
End Sub  
  
Private Sub Command2_Click()   
    ' -- Mostrar el Picture1   
    Picture1.Visible = True  
End Sub  
• Al ejecutar el program, a podés ver que cuando ocultás el PictureBox, todos los demás controles también se ocultan, es decir esto demuestra que el control Picture es el contenedor de los otros. Si no llegara a ocultarse todos
los demás controles, es porque hiciste mal el paso de ubicarlos dentro del Picture. En este caso asegurate que al dibujarlos queden dentro del mismo. Otra forma de colocar controles dentro de un picture y que queden
contenidos en él, es cortar el control con el comando Cortar (click derecho sobre el mismo) y seleccionar el Picture y cuando está seleccionado lo pegás, automáticamente de esta forma ya pasa a estar contenido.
Propiedad Container - Insertar controles
en tiempo de ejecución
• El anterior ejemplo, mostraba como colocar los controles en tiempo de diseño, pero hay veces que es necesario por algún motivo hacerlo si o si en tiempo de ejecución.
• Para poder colocar los controles dentro de un contenedor, podemos usar la propiedad Container .
• Este simple ejemplo muestra como insertar un control TextBox y un Commandbuton dentro de un Picture1 al cargar el formulario, es decir en el evento FormLoad
•  
• Colocar en el form1 : Un Text1, command1 y un Picture1
• Color el código fuente en el formulario
Option Explicit  
  
Private Sub Form_Load()   
    ' -- Inserta los controles ( El textbox y el botón )   
    Set Text1.Container = Picture1   
    Set Command1.Container = Picture1   
    ' -- los posiciona   
    Text1.Move 0, 0, 1000   
    Command1.Move 0, (Text1.Top + Text1.Height + 10), 1000   
  
End Sub 
Propiedad Autoredraw
• La propiedad AutoRedraw es una propiedad muy importante y muy utilizada cuando se usa un picturebox para dibujar sobre el control
• Lo que permite hacer la propiedad Autoredraw, es que al estar activada (con el valor True), y utilizar los métodos gráficos, por ejemplo dibujar un círculo, una linea, o cualquier imagen / dibujo, cuando se repinte el control, la imagen no se pierda, es decir que se mantenga. De esta manera Visual
basic automáticamente vuelve a dibujar la imagen. Esta propiedad por defecto se encuentra en false. Luego es posible borrar la imagen con el método Cls
• Puedes ver un simple ejemplo de esto mismo en el siguiente código:
• Esto dibuja una cuadrado en el picture1 al presionar un botón. Luego, podés minimizar y volver a maximizar la ventana del formulario y ver que el dibujo se mantiene ya que la propiedad AutoRedraw se ha establecido en True
• Colocar un botón y un picturebox en el formulario ( Command1 y picture1 )
 Option Explicit  
' -- Botón para dibujar el rectángulo     
Private Sub Command1_Click()   
    With Picture1   
        .AutoRedraw = True  
        ' -- Dibujar un cuadradro   
        Picture1.Line (100, 100)-Step(400, 400), vbRed, B   
    End With  
End Sub  
Private Sub Form_Load()   
    Command1.Caption = "Dibujar cuadrado"  
End Sub  
Propiedad Autoredraw
• Ahora, prueba este mismo código que es igual al anterior, pero se ha establecido la propiedad AutoRedraw en False. Al presionar el botón se dibujará el rectángulo de todas formas, pero si minimizas la ventana y la vuelves a maximizar, el dibujo se perderá
• Colocar un botón y un picturebox en el formulario ( Command1 y picture1 )
Option Explicit  
  
' -- Botón para dibujar el rectángulo   
' ---------------------------------------------------------   
Private Sub Command1_Click()   
    With Picture1   
        .AutoRedraw = False  
        ' -- Dibujar un cuadradro   
        Picture1.Line (100, 100)-Step(400, 400), vbRed, B   
    End With  
End Sub  
  
Private Sub Form_Load()   
    Command1.Caption = "Dibujar cuadrado"  
End Sub  
Propiedad Autoredraw
• Este código muestra que se ejecuta el evento paint, ya que la propiedad AutoRedraw se encuentra en False
Option Explicit  
  
Private Sub Form_Load()   
  
    Picture1.AutoRedraw = False  
End Sub  
  
Private Sub Picture1_Paint()   
  
    Static i As Integer  
       
    i = i + 1   
       
    Me.Caption = "se ejecutó Paint " & CStr(i) & " veces"  
       
    ' -- Eliminar dibujo previo   
    Picture1.Cls   
    ' -- Dibujar un cuadradro   
    Picture1.Line (100, 100)-Step(400, 400), vbRed, B   
End Sub  
Guardar la imagen del picturebox como
BMP
• Utilizando método SavePicture de vb es posible grabar en disco un archivo BMP, con el gráfico cargado en el control ( propiedad Picture del PicBox). El uso de este método o función es muy simple. A SavePicture se le debe
pasar dos parámetros:
• La propiedad Picture es decir la imagen ( También es posible pasar la propiedad image si se ha dibujado con los métodos gráficos o con el uso de las apis de windows )
• y el path donde se creará el archivo
• Por ejemplo:
' -- Cargar una imagen en el control   
Picture1.Picture = LoadPicture(ruta)   
  
' -- Grabar el archivo BMP en la ruta especificada   
SavePicture Picture1.Picture, "C:\Imagen.BMP"  

 
Los menues de cabecera y submenues
• Los menúes de cabecera son los menúes principales que contienen otros submenues.
• Por ejemplo en el menú del internet explorer, el menú archivo es el menú de cabecera o de primer nivel, y las opciones internas de este (abrir, guardar, imprimir, cerrar, etc...) son los submenues
que están en un nivel por debajo del menú archivo.
• Crear un menú
– El primer paso es diseñar un buen diagrama que incluya la mayoría de las opciones, para que el usuario las pueda tener a mano también en el menú.
– Si observas otras aplicaciones, estas respetan el orden y ubicación de sus menues, es decir que si estás creando un programa que tiene opciones para imprimir una hoja, esta se encontrarán en la sección del menú archivo, si tienes opciones
de edición del documento como cortar copiar, pegar , seleccionar todo, etc..., las encontrarás en el menú "edición", si deseas crear un formulario "acerca de..", lo ubicarás en el menú ayuda con el "nombre acerca de...". esta forma de diseño
y diagramación es fundamental para que el programa sea estándar y aceptado por todos, por llamarlo de alguna manera, ya que si bien nosotros recordamos el nombre y donde se encuentra ubicada cada opción, un usuario o tercero debe
resultarle lo mas sencillo posible el acceso a las opciones del mismo.

 
Agregar elementos en un menú
• El siguiente ejemplo consiste en un formulario que contiene solo un control label que nos mostrará una leyenda con el texto del menú que seleccionamos o
presionamos.
• El menú estará compuesto por 3 menues de cabecera, el primero llamado "Archivo", el segundo "Edición" y el último "Ayuda". A su vez cada menú tendrá los
siguientes submenues:
• Archivo : Este menú contendrá los submenues " Abrir ", " Guardar ", " Imprimir " y " Cerrar "
• Edición: Contendrá los submenues " Cortar ", " Copiar ", " Pegar ", " Seleccionar todo "
• Ayuda : Tendrá los submenues " Ayuda " y " Acerca de.. "

 
Agregar elementos en un menú
• El cuadro de diálogo del editor de menú de visual basic posee los siguientes campos para rellenar. Algunos son opcionales y otros son obligatorios, como la propiedad Caption y Name:
• Caption: en este campo debemos colocar la leyenda que mostrará el menú, es decir el texto que mostrará el mismo.
• Name: en este campo debemos introducir un nombre para cada menú. Este es obligatorio y no puede estar duplicado ya que por medio de este nombre identificaremos al menú en el código.
• Index: en este campo que es opcional podemos introducir un número para formar vectores de menues o arreglos de menues, en este ejemplo no se usa, por ejemplo para crear menues en forma dinámica en tiempo de ejecución
• helpcontextid: este campo opcional podemos introducir un n° para el tópico de ayuda, por si el usuario presiona la tecla F1 justo cuando está posicionado en el menú.
• Shortcut: Podemos ingresar una tecla de acceso rápido al menú para que se despliegue el mismo automáticamente, como por ejemplo Ctrl + a, Ctrl + b, etc...
• Checked: este campo indica si el menú tendrá un tilde a la izquierda o no. Si está en true lo muestra si está en False no. El campo es de tipo opcional.
• Enabled : propiedad booleana que determina si el menú está habilitado o no. Esta propiedad es exactamente igual a la propiedad Enabled de cualquier control de visual basic. El campo por defecto, mejor dicho la propiedad está en True
• Visible : propiedad opcional y de tipo booleana que determina si el menú estará visible o no. Esta propiedad es ideal para crear los menues contextuales o PopUp (mas adelante hay un ejemplo de como crear uno).

 
Menues contextuales o popup menú
• Los menues contextuales, esos que se despliegan cuando presionamos el botón derecho del mouse, son simples menues pero con la diferencia de que los mismos poseen la propiedad Visible en False, y luego se visualizan utilizando el método PopUpMenu
• El método PopUpMenu , se encuentra disponible solo para los formularios.
• Los parámetros de este método son los siguientes:
•  
• Nombreformulario.PopUpMenu "Elmenu", "flags", x , y, opcion
– Menu: este es el menú popup que debe estar en el formulario, es decir el nombre
– Flags: este parámetro indica la apariencia del menú en el formulario. Acá podemos utilizar las siguientes constantes para ubicar el menú:
vbpopupmenuleftalign ubica el menú en el lado izquierdo con respecto a x.
vbpopupmenucentertalign alinea en el centro de la coordenada x. vbpopupmenurightalign lo alinea en el lado izquierdo. En la mayoría de los casos este parámetro no se utiliza.
– X e Y: podemos indicar, aunque no se suele utilizar, las posiciones x e y donde debe desplegarce el menú.
– opcion: en este parámetro opcional , podemos indicar el nombre de un submenú para que aparezca resaltado en negrita.

 
Ejemplo para crear un menú PopUp
• Crear un menú llamado mnuContextual con la propiedad visible en False y pegar esta rutina en el formulario:
•  
Private Sub form_mouseup(button As Integer, shift As Integer, x As Single, y As Single)
 
 
' Consultamos si el botón presionado es el derecho
If button = vbRightButton Then

' Depliega el menú PopUP


Me.PopupMenu mnucontextual
End If
 
End Sub 
•  
• En el siguiente enlace hay 3 ejemplos con su código fuente que muestra como crear 2 menú y uno de estilo PopUp

 
Ejemplo para crear un menú PopUp
• Crear un menú llamado mnuContextual con la propiedad visible en False y pegar esta rutina en el formulario:
•  
Private Sub form_mouseup(button As Integer, shift As Integer, x As Single, y As Single)
 
 
' Consultamos si el botón presionado es el derecho
If button = vbRightButton Then

' Depliega el menú PopUP


Me.PopupMenu mnucontextual
End If
 
End Sub 
•  

 
Graficos
Método Line
• Con este método podemos dibujar Líneas y rectángulos en un objeto
donde se permita utilizar dicho método, como por ejemplo en los
Formularios, los controles PictureBox, el objeto Printer.
• Los parámetros de Line son:
• El_Objeto.Line (X1, Y1) - ( X2, Y2), El_Color, BF
•  
• Donde El_Objeto es donde vamos a dibujar.
• Los primeros dos parámetros son las coordenadas para X e Y, luego el
color de la línea y por último el parámetro BF al igual que el color, es un
parámetro de tipo opcional, y aquí podemos pasar como valor: B o BF o
ningún valor
• Si pasamos B, se dibujará un rectángulo sin relleno.
• Si pasamos BF el rectángulo tendrá de relleno el color especificado en el
parámetro Color.
• Si no pasamos nada se dibuja una línea
Método Line
• Lo siguiente dibuja una línea de color Azul en el formulario:
•  
• Me.ScaleMode = vbPixels
Me.Line (10, 10)-(100, 100), vbBlue

• Como se ve en el ejemplo anterior, los valores que tomará y utilizará LINE


para las coordenadas X e Y, serán los establecidos en el ScaleMode del
Objeto donde dibujar, en este caso se colocó en Pixeles ( vbPixels )
Método Line
• Este otro dibuja una línea horizontal y otra vertical a lo ancho y alto del Formulario, al mover el puntero del mouse. A la primer
línea se le aplica el color verde, a la la línea horizontal el color Rojo, utilizando las constantes de color de vb. ( VbgGreen y
VbRed )
Option Explicit
 
Private Sub Form_MouseMove(Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single)

' Limpia el Form


Cls

'Dibuja la línea vertical


Line (X, ScaleTop)-(X, ScaleHeight), vbGreen

'Dibuja la línea Horizontal


Line (Me.ScaleLeft, Y)-(Me.ScaleWidth, Y), vbRed

End Sub 
Método Line
• En este otro ejemplo, se dibuja en el formulario, una cantidad x de lineas con colores aleatorios, utilizando la función Rnd de
visual basic para generar el color aleatorio y para la cantidad de lineas :
• colocar un control timer
• Código fuente en el formulario
Option Explicit
 
Private Sub Form_Load()
' si el form está minimizado sale
Form1.BackColor = vbBlack If Form1.WindowState = vbMinimized Then
Form1.ScaleHeight = 100
Form1.ScaleWidth = 100
Exit Sub
Timer1.Interval = 500 End If
 
End Sub
  ' limpia el formulario
Private Sub Timer1_Timer() Me.Cls
Dim x As Long
Dim x1 As Long, x2 As Long
Dim y1 As Long, y2 As Long ' Int(Rnd * 50) + 1, es la cantidad de lineas
Dim Color As Long
For x = 0 To Int(Rnd * 50) + 1
DoEvents
' valores x e y para la linea actual
x1 = Int(Rnd * 101)
x2 = Int(Rnd * 101)
y1 = Int(Rnd * 101)
y2 = Int(Rnd * 101)
' color aleatorio de 1 a 15 que luego se usa con
Qbcolor
Color = Int(Rnd * 15)
' dibuja la linea
Form1.Line (x1, y1)-(x2, y2), QBColor(Color)
Form1.Line (x1, y2)-(x2, y1), QBColor(Color)
Form1.Line (x2, y1)-(x1, y2), QBColor(Color)
Form1.Line (y1, y2)-(x1, x2), QBColor(Color)
Next x
End Sub
Método Line
• Lo siguiente dibuja un rectángulo sin relleno de color Rojo, pasándole la B
como parámetro al método Line
•  
Me.ScaleMode = vbPixels

Me.Line (10, 10)-(100, 100), vbRed, B


Método Line
• Ahora, en ves de especificar B, se indica el valor BF para rellenar el rectángulo :
•  
• Me.ScaleMode = vbPixels

Me.Line (10, 10)-(100, 100), vbRed, BF

• Cuando se dibujan rectángulos, es decir se utiliza B o BF, X1 , Y1, X2 e Y2 sería


equivalente a :
• El_Objeto.Line (Izquierda, Arriba) - (Ancho, Alto).
Método Line
• El siguiente ejemplo dibuja una línea vertical de color verde una al lado de la otra en todo el ancho del
formulario, en un bucle:

Private Sub Form_Paint()


Me.ScaleMode = vbPixels
 
 
For i = 0 To Me.ScaleWidth Step 10
 
Line (i, 10)-(i, Me.ScaleHeight - 10), vbGreen
 
Next
 
 
End Sub 
 
Propiedad CurrentX y CurrentY
• CurrentY devuelve o establece las coordenadas verticales para el siguiente método de dibujo,
en este caso para el método Line.
• Lo siguiente, dibuja al presionar un Command1, un rectángulo de 25 pixeles de ancho por 50
pixeles de alto.
• Y la posición izquierda y la posición superior (x1 e y1), es decir el CurrentX y el CurrentY, se
puede ver como no cambian su valor, y se mantienen igual.
• Es decir, la primera ves que se presiona para dibujar el primer rectángulo, Currentx y Currenty
valen 0.
• Luego la segunda ves, Currentx tiene el valor 25 y Currenty el valor 50. si se sigue presionando
el Command1, mientras no se cambie explicitamente el valor , currentx y Currenty
mantendrán dichos valores, x2 e y2.
 
Propiedad CurrentX y CurrentY
Private Sub Command1_Click()
 
 
Me.Line (CurrentX, CurrentY)-(25, 50), vbRed, B
MsgBox "Pos x: " & CurrentX
MsgBox "Pos y: " & CurrentY
 
End Sub
 
Private Sub Form_Load()
Me.ScaleMode = vbPixels
End Sub 
 
Propiedad CurrentX y CurrentY
• Siguiendo el ejemplo anterior, si quisieramos que las coordenadas x2 e y2 sean relativas a x1 e y1, podemos utilizar la palabra
reservada Step.
• Este código es exactamente igual al anterior, con la diferencia de que se utiliza Step para especificar el Currentx y el Currenty para
que x2 e y2 sea relativo a x1 e y1, el resultado sería esto:
Private Sub Command1_Click()
 
Me.Line (CurrentX, 20)-Step(25, 50), vbRed, B
 
End Sub
 
Private Sub Form_Load()

Me.ScaleMode = vbPixels
 
End Sub 
Propiedad CurrentX y CurrentY
Este es igual al anterior pero la posición Superior (y1) es fija, y lo que se desplaza es la posición horizontal, es decir el CurrentX, y cada ves
que se presione el Command1 , el Currentx (la posición izq ) se incrementará de 25 en 25 pixeles.
Private Sub Command1_Click()
 
 
Me.Line (CurrentX, 0)-(CurrentX + 25, 50), vbRed, B
 
 
End Sub
 
 
Private Sub Form_Load()

ScaleMode = vbPixels
 
End Sub 
Método Line
• Este otro ejemplo, dibuja un cuadrado uno al lado del otro , a lo ancho del formulario, el rectángulo es de 10 pixeles de ancho
por 10 pixeles de alto, y cada cuadrado está separado por 5 pixeles ente uno y otro.
 
Private Sub Form_Load()
Dim Izquierda As Single
 
 
Me.ScaleMode = vbPixels
Me.AutoRedraw = True
 
 
For Izquierda = 0 To Me.ScaleWidth Step 15
Me.Line (Izquierda, 10)-Step(10, 10), vbBlue, B
Next
 
End Sub 
Método Line
• Este otro dibuja rectángulos de 25 x 25 pixeles uno al lado del otro, en todo el formulario mediante dos bucles For. El primer bucle es para los rectángulos
horizontales y el otro para los verticales.
Private Sub Command1_Click()
 
 
Me.Cls
 
 
For Horizontal = 0 To ScaleWidth Step 30
 
For vertical = 0 To ScaleHeight Step 30

Line (Horizontal, vertical)-Step(25, 25), &H808080, B

Next
 
Next

End Sub
 
Private Sub Form_Load()

Me.ScaleMode = vbPixels
 
End Sub 

 

Método Line
Lo siguiente dibuja una cuadríacula mediante el método Line en el objeto indicado, puede ser un picturebox o formulario, indicando la cantidad de cuadros para la
forma horizontal y la cantidad para el vertical.
Código fuente en el formulario
Option Explicit
 
Sub Dibujar_cuadricula( _
Objeto As Object, _ ' cambiar color del lápiz
CountX As Single, _
Objeto.ForeColor = x_Color
CountY As Single, _
Optional x_Color As Long = vbBlack, _
Optional y_Color As Long = vbBlack) ' dibujar las líneas verticales de la cuadricula
For i = 0 To CountX
Dim i As Integer Objeto.Line (i * mx, 0)-(i * mx, Objeto.ScaleHeight)
Dim mx As Long Next i
Dim my As Long

Objeto.ForeColor = y_Color
' limpiar objeto
Objeto.Cls
' dibujar las líneas horizontales de la cuadricula
mx = CLng(Objeto.ScaleWidth / CountX) For i = 0 To CountY
my = CLng(Objeto.ScaleHeight / CountY) Objeto.Line (0, i * my)-(Objeto.ScaleWidth, i * my)
Next i

  End Sub
 
Private Sub Form_Load()

With Me
.BackColor = vbWhite
.ForeColor = vbBlue
.FontSize = 12

.AutoRedraw = True

End With

Call Dibujar_cuadricula(Me, 25, 25, vbBlue, vbRed)


'Call Dibujar_cuadricula(Me, 5, 10, vbBlue, vbRed)
'Call Dibujar_cuadricula(Me, 25, 50, vbBlue, vbRed)

End Sub

Propiedad DrawWidth
Para establecer el grosor de la línea de dibujo se utiliza la propiedad DrawWidth.
• Este ejemplo dibuja líneas una al lado de la otra, separadas por 20 pixeles, mediante un bucle y va incrementando el DrawWidth en 1 en cada pasada. El
dibujo se realiza en un control PictureBox llamado Picture1
Private Sub Command1_Click()
 
Picture1.Cls
Picture1.ScaleMode = vbPixels
 
For i = 0 To ScaleWidth Step 25
 
Picture1.Line (i, 10)-(i, Picture1.ScaleHeight - 10), vbGreen
 
Picture1.DrawWidth = Picture1.DrawWidth + 1
 
Next

Picture1.DrawWidth = 1

End Sub 

 

Propiedad DrawWidth
Este otro ejemplo dibuja un borde y un degradado en un formulario utilizando el método Line, como muestra la siguiente captura:
Para crear le ejemlo colocar la propiedad BorderStyle del formulario en 0 - None, y pegar el siguiente código:
Private Sub Form_Load()
With Me
 
'Algunas propiedades del formulario
.AutoRedraw = True
.ScaleMode = 3
.FontSize = 16
.ForeColor = &HC0FFFF
 
End With Sub Degradado(vForm As Form)
End Sub
 
 
Private Sub Form_Resize() Dim intContador As Integer
'Esto dibuja el degradado al formulario
Degradado Me
 
'Esto dibuja el borde al formulario vForm.DrawStyle = vbInsideSolid
Call Dibujar_Borde
End Sub vForm.DrawWidth = 2
 
Sub Dibujar_Borde()
'vForm.ScaleHeight = 256
Me.DrawStyle = 0  
For intContador = 0 To 255
Me.DrawWidth = 10
Line (0, 0)-(ScaleWidth - 1, ScaleHeight - 1), &HFFC0C0, B
End Sub vForm.Line (0, intContador)-(Screen.Width, _
 
  intContador - 1), _
RGB(0, 0, 255 - intContador), B
Next
   
Me.CurrentX = 20
Me.CurrentY = 20
Me.Print " Ejemplo para dibujar un borde a un formulario "
 
End Sub
Método Circle
• El método Circle permite dibujar un círculo, una elipse o un arco sobre un objeto.
• La sintaxis del método es la siguiente:
• EL_Objeto.Circle (Step As Integer, X As Single, Y As Single, Radius As Single, Color As Long, Start As Single, End As
Single, Aspect As Single)
• Los valores para X e Y especifican el punto donde estará el centro del círculo a dibujar.
• Radius es el valor del radio del mismo. El parámetro es obligatorio.
• Color: Valor que indica el color que tendrá el círculo o elipse para su contorno. Se puede pasar cualquier valor
admitido en visual basic, por ejemplo un Long, un valor Rgb etc..
• Los parámetros Start y End son opcionales , y se utilizan para dibujar parte de una elipse o círculo
• Por último el parámetro Aspect, se utiliza para definir el aspecto del círculo. Este valor es opcional. Ver ejemplos
mas abajo.
 

 

Método Circle
El siguiente ejemplo crea un círculo en el centro de un control PictureBox, con un radio de 50 pixeles.
 
Private Sub Command1_Click()
 Picture1.Cls
With Picture1
Picture1.Circle (.ScaleWidth / 2, .ScaleHeight / 2), _
50, _
vbBlue
End With
End Sub
 
 
Private Sub Form_Load()
Picture1.ScaleMode = vbPixels
End Sub 
 

 

Método Circle
Este ejemplo dibuja un círculo con un radio aleatorio entre 10 y 100 pixeles, al hacer click en el formulario, es decir el centro del círculo ( x1 e y1 ), son los valores x e y del
evento MouseDown del Form:

Private Sub Form_Load()

ScaleMode = vbPixels
Me.DrawWidth = 2

End Sub
 
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
 
Circle (X, Y), Int((100 - 10 + 1) * Rnd + 10), vbRed
 
End Sub 

 

Rellenar las circunferencias
Para esto se utiliza las propiedades FillColor y FillStyle. FillColor es el color de relleno, para FillStyle ver las opciones de estilos para los rellenos: 0 - Sólido, 1 - transparente, 2 - Línea Horizontal, 3 -
Línea Vertical etc..
• Un ejemplo: este es igual al anterior, pero rellena el círculo de un color aleatorio, siempre y cuando la propiedad FillStyle no sea transparente:
• Colocar un Command1 y un Combo1 en el formulario:
Private Sub Combo1_Click()
Me.FillStyle = Combo1.ListIndex
End Sub
 
Private Sub Command1_Click()
Me.Cls
End Sub
 
Private Sub Form_Load() With Combo1
ScaleMode = vbPixels .AddItem " 0 - Solido "
'Grosor de la línea
.AddItem " 1 - Transparente "
Me.DrawWidth = 2
'Opciones de estilo de relleno
.AddItem " 2 - Linea Horizontal "
.AddItem " 3 - Linea Vertical "
.AddItem " 4 - Diagonal Arriba "
.AddItem " 5 - Diagonal Abajo "
 

.AddItem " 6 - Cross "


  .AddItem " 7 - Diagonal Cross "
End With
Command1.Caption = "Limpiar"
End Sub
 
Private Sub Form_MouseDown(Button As Integer, Shift As
Integer, _
X As Single, Y As Single)
'color de relleno aleatorio
Me.FillColor = RGB(Int(255 * Rnd), Int(255 * Rnd), Int(255 *
Rnd))
'Dibuja el círculo
Circle (X, Y), Int((50 - 10 + 1) * Rnd + 10), _
RGB(Int(255 * Rnd), Int(255 * Rnd), Int(255 * Rnd))

End Sub 

Dibujar Elipses
Para dibujar Elipses se debe especificar en el parámetro Aspecto los siguientes valores. Por ejemplo si pasamos un 1, el círculo será una circunferencia perfecta, si pasamos 0.5 , el radio horizontal del mismo será el doble
que el radio vertical, si pasamos un 2 lo contrario.
• Para el ejemplo del gráfico, colocar un Combo1 y este código en el Form:
 
Private Sub Form_Load()

ScaleMode = vbPixels
'Grosor de la linea
Me.DrawWidth = 2
 
For i = 0.1 To 2.1 Step 0.1

Combo1.AddItem i

Next
Combo1 = Combo1.List(0)
End Sub
 
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
 
 
Circle (X, Y), Int((50 - 10 + 1) * Rnd + 10), _
RGB(Int(255 * Rnd), Int(255 * Rnd), Int(255 * Rnd)), , , CSng(Combo1)

End Sub 

 
Método Point y método Pset :
• El método Point lo que hace es devolver , como un número entero ( un Long ), el color RGB del
punto que se le especifique, puede ser utilizado tanto en un Formulario como en un PictureBox.
• El método Pset establece un color determinado para un punto de un objeto.
• El siguiente ejemplo utiliza los dos métodos.
• Cargar un gráfico en un Picture1 y también colocar un Picture2. Al hacer click en el Picture1, en
el evento MouseDown, se obtendrá el color de ese pixel, y ese valor se le aplicará al BackColor
del Picture2, como se ve en el gráfico, el punto verde es el establecido con el método Pset.

 
Private Sub Form_Load()
Método Point y método Pset :
'Modo de escala en pixeles
Picture2.ScaleMode = vbPixels
Picture1.ScaleMode = vbPixels
'Grosor del punto
Picture1.DrawWidth = 3
End Sub
 
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Picture1.Cls
' Establece el color del Picture2 mediante el método Point
Picture2.BackColor = Picture1.Point(X, Y)
 
' Dibuja el punto
Picture1.PSet (X, Y), vbGreen
 
'Valor Hexadecimal del color
Me.Caption = "Valor del color: " & Hex(Picture2.BackColor)
 
End Sub 

 

Método Point y método Pset :
Este es otro ejemplo que utiliza Pset para dibujar un punto al presionar en el formulario, tomando como valores el x e y del evento MouseDown del Form, luego se dibuja una línea
desde un punto hacia el otro punto mediante el método Line
Dim X1 As Single
Dim Y1 As Single
Private Sub Form_Load()
AutoRedraw = True
End Sub
Private Sub Form_MouseDown(Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single)
DrawWidth = 10
'Dibuja el punto con Pset pasandole el x e y donde se hizo click
PSet (X, Y), vbBlack
If X1 <> 0 And Y1 <> 0 Then
DrawWidth = 3
'Dibuja la linea
Line (X1, Y1)-(X, Y), vbWhite
End If
X1 = X
Y1 = Y
End Sub 
 

 

Método Point y método Pset :
Este otro ejemplo dibuja puntos en el formulario en forma aleatoria
• Colocarle al formulario la propiedad WindowState en Maximized y tambie´n agregar un control CommandButto
• Dim Tiempo As Long
 Private Sub Command1_Click()
' dibuja los puntos en el formulario
Call Dibujar_Puntos(vbBlue)
' dibuja los puntos en el formulario
Call Dibujar_Puntos(vbButtonFace)  End Function
End
 Private Sub Form_Load()
End Sub
 Function Dibujar_Puntos(Color As Long) ' modo de escala en pixeles y grosor del lapiz para
Dim Posicion_X el formulario
Dim Posicion_Y
Tiempo = Timer + 5 ScaleMode = 5
While Tiempo >= Timer DrawWidth = 10
' valores para la posición x e y
Posicion_X = Rnd * ScaleWidth
 End Sub 
Posicion_Y = Rnd * ScaleHeight
' Dibuja el punto en la coordenada y con el color indicado con Pset
PSet (Posicion_X, Posicion_Y), Color  
DoEvents
Wend

 
• Definición de la función QBColor de Visual basic:
Función QBColor:
• Esta función devuelve el código de color RGB de un número de color especificado de una lista de colores estándar predefinidos
• Es decir, esta función tiene como parámetro, un número entre el 0 y 15, es decir 16 valores posibles para retornar un color especifico.
• El siguiente ejemplo, muestra el uso de esta función. Lo que hace es recorer en un bucle, desde el 0 hasta el 15, y le cambia el BackColor a un arreglo de
controles Label.
• Colocar una matriz de Label1. Label1 (0), Label1(1) .... hasta el Label1(15)
Private Sub Form_Load()
 Me.Caption = " Ejemlpo de la función QBColor"
  Dim i As Integer
For i = 0 To 15
' Asigna el color devuelto por la función QBColor _
al color de fondo del Label
Label1(i).BackColor = QBColor(i)
' Asigna el caption
Label1(i).Caption = " Valor de QBColor: >> " & i
Next i
End Sub

También podría gustarte