Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
.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.
• 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
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
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
•
• 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
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()
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
• 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
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
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
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
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.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
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
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:
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 "
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