Sie sind auf Seite 1von 93

Programación con VB 6.0 Ing.

Kelvin Atencio

Este trabajo no pretende ser un Manual, pero


si una guía de estudio de VISUALBASIC 6.0
producto de una investigación personal.

Por Ingeniero de Petróleo


KELVIN ATENCIO
kelvin2710@hotmail.com

Maracaibo, Venezuela
Programación con VB 6.0 Ing. Kelvin Atencio

VISUAL BASIC:

Para entender lo que este lenguaje de programación quiere decir es necesario


descomponerla en dos partes:
VISUAL: Anteriormente era necesario escribir una gran cantidad de código en el lenguaje
para formar la interfaz de usuario y además eran mucho menos eficientes y más difíciles de
entender. Mediante la creación de una interfaz de usuario mediante objetos (controles)
prediseñados puede cambiar de forma sencilla la interfaz de usuario reduciendo el tiempo de
trabajo y la eficiencia del mismo, esto es lo que propone la palabra Visual, crear de forma sencilla
la interfaz de usuario de modo que no sea necesario dedicar tanto tiempo a la creación de la
misma.
BASIC: Esta palabra es la abreviación de las siglas (en inglés) Beginners All-Purpose
Symbolic Instriction Code, se refiere al lenguaje de programación más utilizado en la historia de la
informática y la programación, aunque en principio era un poco más sencillo, ahora muchas más
instrucciones y métodos que se han adaptado para crear aplicaciones bajo ambiente Windows.

Entonces Visual Basic se refiere al lenguaje de programación de computadoras que


combina las facilidades de trabajo que ha desarrollado Microsoft en un entorno de interfaz visual,
con el lenguaje de programación BASIC, por ello ahora la forma de crear una interfaz de usuario se
torna mucho mas económica, en los que a líneas de código se refiere y por lo tanto a ganar tiempo
para realizar programas con mucho y hasta nada de código.

1. EL ENTORNO DE DESARROLLO DE VB 6.0


Primero, se presenta la primera pantalla que aparece al ejecutar el comando de entrada de
VB 6.0. Fig. 1.

FIGURA 1. Primera Pantalla que aparece al ejecutar VB 6.0.


Programación con VB 6.0 Ing. Kelvin Atencio

En ella, aparece el cuadro de diálogo “Nuevo proyecto” que ofrece tres fichas de opciones
al comenzar en la sesión con Visual Basic, estas son:
• Nuevo: Propone crear un nuevo proyecto.
En ella aparece seleccionado por defecto EXE estándar. EXE es la abreviación de
EXECUTE o en español -proyecto ejecutable-. Esta opción nos crea un nuevo proyecto que
después de compilado nos crea una aplicación. Este es el elemento que más comúnmente
utilizaremos, ya que la presente investigación hace referencias a creaciones ejecutables. No hay
ejemplos de librerías dinámicas (*.dll o DLL ActiveX) ni a controles ActivesX (*.ocx) ni otro tipo de
aplicación; así que si desea buscar información sobre estos tipos de proyectos, puede abandonar
esta lectura.
• Existente: Propone abrir un proyecto que fue creado anteriormente, desplega el cuadro
de diálogo Abrir para buscar el proyecto en el directorio.
• Reciente: Propone también abrir un proyecto ya creado, pero a diferencia de
Existentes, éste nos desplega una lista de los proyectos que han sido creados o
modificados en las últimas sesiones de trabajo con VB 6.0.
Programación con VB 6.0 Ing. Kelvin Atencio

Para comenzar, se creará un nuevo proyecto haciendo doble-clic en EXE estándar. VB


desplegará la siguiente pantalla.

Figura 2. Entorno integrado de desarrollo de VB 6.0

El Sector 1 en la Fig. 2 se llama Formulario del proyecto. El formulario será la ventana de


aplicación o interfaz del usuario cuando el programa se compile o se ejecute. Un programa puede
tener uno o varios formularios, y se puedes abrir y cerrar cada uno de ellos según se necesite. En
ellos se agregarán los controles que sirven para crear una aplicación e interactuar con el usuario.
La pantalla blanca que se ve detrás del formulario es la pantalla donde se agrega el código
del programa.
La Fig. 3 (Sector 2 de la Fig. 2) es el Cuadro de herramientas, ella
proporciona algunas de las herramientas que puede agregar al formulario en
tiempo de diseño. Estas herramientas son llamadas controles y alguno de
ellos son las Etiquetas (Labels), Cuadro de texto (TextBox), botones de
comandos (CommandButton. Ver Controles en la Sección Nro. 4.
Para realizar la primera aplicación (Programa #1) se deben agregar
dos controles al formulario número uno. Haga clic sobre CommandButton en
Cuadro de Herramientas; el puntero del mouse tomará una forma de cruz
cuando esté por encima del formulario, dibuje el tamaño del control en el
mismo, para ello mantenga el clic presionado mientras dibuja el tamaño y
luego suelte el botón del mouse. Se dibujará en el formulario un botón de
comando con Caption (texto que se muestra) igual a Command1 e igual
nombre. Agreguemos también un Cuadro de texto (Textbox), para ello haga
clic sobre Textbox y luego dibújelo en el formulario mediante el mismo
procedimiento, aparecerá un cuadro de texto con Text (texto que se ve igual
a Text1) e igual nombre.
Figura 3. Cuadro El Sector 3 de la Fig. 2 muestra la Barra de herramientas (parte
de Herramientas superior de la Fig. 2). Las Barras de herramientas también se encuentran en
programas como Word, PowerPoint y Excel, entre otros y por ello ya es muy
probable que ya sean conocidas. Ella proporciona un acceso a los comandos utilizados cuando
está creando una aplicación. Puede agregar o quitar barras si hace clic en el botón secundario del
mouse sobre la barra de herramientas y luego clic sobre la que desea agregar o quitar.
Programación con VB 6.0 Ing. Kelvin Atencio

Para usar la Barra de herramientas diríjase al Menu Ejecutar y luego haga clic sobre Iniciar.
Se iniciará una prueba del programa, por ahora sólo mostrará el formulario con los controles
Command1 y Text1. También puede agregar un formulario al proyecto, para ello diríjase al menú
Proyecto y luego haga clic sobre Agregar formulario, después clic sobre Formulario.
La Fig. 4 modela lo que es el Explorador de Proyectos
(Sector 4 de la Fig. 2). Una aplicación puede contener uno o mas
elementos (nuestro ejemplo tiene dos formularios) y si quiere tener
acceso a uno de ellos tendrá que ir al Explorador de proyectos
hacer un clic sobre el elemento y luego clic en Ver Objeto o Ver
Código, según lo que desea.
En este ejemplo existe un proyecto con dos formularios
Form1(no seleccionado) y Form2 (seleccionado). Si hace clic en
Ver Objeto mostrará el formulario 2 si lo hace en Ver Código
mostrará el código de este formulario. En principio sólo es una
pantalla en blanco, ya que no hay código hasta el momento. Figura 4. Explorador de
Si no puede ver esta ventana directamente, tendrá que ir Proyectos
al menú Ver de la Barra de herramientas y luego hacer clic sobre
Explorador de Proyectos.

En la Fig. 5 se hace referencia a la Ventana Propiedades


(Sector 5 de la Fig. 2). Las propiedades son un conjunto de
características que determinarán la forma de los controles o
formularios. Algunas propiedades comunes son el nombre (para
identificarlo en el código), el alto, ancho, color del fondo y
muchas mas según el tipo de control con el que trabaja, por ello
cambia cada vez que cambia el enfoque del tipo de control. Es
decir, las características de un formulario no son iguales a las
características de una etiqueta, botón de comando o de un
cuadro de texto. Por ejemplo, haga clic sobre el botón de
comando Command1 y eche un vistazo sobre las diferentes
propiedades, observará un cuadro igual a la Fig. 5. Ahora, haga
clic sobre cualquier parte del formulario (que no sea Command1)
o sobre el control Text1, verá que algunas propiedades no se
encuentran, y en cambio aparecen otras.
Para utilizar esta Ventana, presione un solo clic sobre el
Control Command1 y en la Ventana Propiedades, cambie
Caption de Command1 a Saludar, vaya ahora al Cuadro de
Figura 5. Propiedades
texto, ubique la propiedad Text, borre el contenido (Text1) y
déjelo en blanco.
La Fig. 6 que proporciona la parte 6 de la Fig. 2 es la imagen de la ventana Posición del
Formulario. Ésta ventana permite cambiar la posición del formulario antes de que la aplicación vaya
a ser ejecutada. Puede utilizar esta pantalla cambiando la posición del formulario arrastrándola con
el ratón (mouse) y luego verificarla ejecutando el proyecto.

Figura 6. Ventana Posición del


Formulario
Programación con VB 6.0 Ing. Kelvin Atencio

Programa #1. Saludar:


Ahora se debe escribir un poco de código para crear la primera aplicación.
Para comenzar se puede hacer de tres maneras. Verifique que el formulario 1 con los dos
controles (TextBox y CommandButton) este activo en el Explorador de Proyectos, haga clic sobre
Ver Código y aparecerá una pantalla en blanco para empezar a escribir código, también verá que
inmediatamente arriba de esta pantalla aparece la palabra (General) que contiene una lista,
busque en ella la palabra Command1, este llamará directamente al evento clic, es decir, las
secuencias de comandos que se efectuarán al hacer clic en este botón. La otra manera es verificar
que el formulario activo (en el Explorador de Proyectos) sea el que tiene los dos controles
(Command1 y Text1), haga clic en Ver Objeto, y luego haga doble clic sobre el botón que dice
Saludar, se desplegará el siguiente código:

Private Sub Command1_Click()

End Sub

La tercera manera es escribir directamente el código que se mostró.

Aquí se escribirán las sentencias que se efectuarán cuando haga clic en el botón Saludar
(ya que Command1 es el nombre del botón).
Ahora copie y pegue este código o escriba, de tal manera que quede de la siguiente
manera:

Private Sub Command1_Click()


If Command1.Caption = "Saludar" Then
Text1.Text = "¡Hola!, ¿Cómo estas?"
Command1.Caption = "Borrar"
Else
Text1.Text = ""
Command1.Caption = "Saludar"
End If
End Sub

Ejecute la aplicación con F5 o Iniciar en la Barra de Herramientas e interactúe con el


programa.
Si desea una explicación detallada de este programa vaya a la Sección Explicación
Detallada de Programas en los capítulos finales. (Ver índice)
De aquí podemos concluir que las propiedades de los controles pueden cambiar, tanto en
tiempo de diseño como en tiempo de ejecución.

Nota: Para cerrar una sesión de trabajo con VB y abrir un Nuevo proyecto, puede guardar el
formulario, el proyecto y luego buscar en el Menú Archivo de la barra de herramienta, haga clic en
Quitar Proyecto, esto cierra el proyecto y puede crear uno nuevo en Archivo – Nuevo Proyecto. Si
no quita el proyecto y crea uno nuevo, se creará un Grupo de Proyectos.
Programación con VB 6.0 Ing. Kelvin Atencio

2. PROPIEDADES, MÉTODOS, EVENTOS Y CONSTANTES.


• Propiedades:
Como ya se ha mencionado en varias ocasiones, los controles y los formularios contienen
propiedades, éstas son, sus características particulares que los diferencian de otros.
Por ejemplo si hablamos de una silla, ésta tendrá propiedades como el material, número de
patas, tamaño, forma del asiento, y otras.
En Visual Basic las propiedades se identifican en el código por tener la forma:

Objeto.Propiedad = Valor

Donde Objeto es el elemento al cual se hace referencia y valor es una constante o variable
que llama a una constante. El valor que identifica la propiedad.

Si hablamos de la Silla, podríamos decir:.

Silla.Material = Madera
Silla.Patas = 4
Silla.Tamaño = 1,5

Se dice una variable que llama a una constante ya que, puede asignar a una variable un
valor y luego llamar a esta variable de la siguiente manera:

Material = Madera
Silla.Material = Material

En el Examinador de Objetos, o en el transcurso de una programación se pueden

identificar las propiedades por tener a su lado una figura como esta:

Lleve a cabo una pequeña demostración. En el programa #1, diríjase a la pantalla Ver
Código y escriba Command1. (la palabra Command1 más el punto), se desplegará una lista de
propiedades y métodos de los botones de comandos, en este caso de Command1. Observe la
figura que se encuentra a su lado.

• Los Métodos:
Los métodos son las diferentes acciones que puede realizar un elemento.
Por ejemplo la silla puede inclinarse, volver a su posición inicial, subir o bajar su cabecera,
moverse de un lado a otro, entre otros.
Los Métodos se diferencian en el código de las propiedades ya que no les sigue el signo
igual, pero podría tener un valor, es decir, tienen la siguiente forma:

Objeto.Método [Valor]

Así podemos llamar los siguientes métodos de la silla:

Silla.Inclinar 20°
Silla.Volver

El valor sólo aparece en algunos casos, es decir es opcional y depende del método que se
esté utilizando. Puede tener más de un valor. Ejemplo:

Silla.Mover (3mts adelante, 2mts hacia la derecha)


Programación con VB 6.0 Ing. Kelvin Atencio

Los métodos se identifican en el Examinador de Objetos o en el transcurso de la

codificación por tener a su lado la siguiente figura:

Realice la misma prueba que en las propiedades (Command1.) y ubique los métodos
mediante la figura.

• Los Eventos:
Los Eventos son los acontecimientos que pueden suceder mientras ejecuta una aplicación,
es decir, el clic a un botón de comando o a una etiqueta, esto llama a un procedimiento, a una
secuencia de comandos.
Estos se pueden Observar en el Código por la secuencia Sub, de la siguiente manera.

Sub Objeto_Evento([argumentos])
- Comando1
- Comando2
- ...Otros Comandos
End Sub

Por ejemplo, haciendo referencia a la silla observe lo que sucede al evento sentarse.

Sub Silla_Sentarse()
Peso es Variable
Si Peso es mayor a 100kg, entonces:
Silla.Romper
Sillas.Patas=0
Sino
Silla.Soportar
Fin de Secuencia Si
End Sub

El código describe los sucesos que se ejecutarán cuando suceda el evento sentarse.

Los eventos pueden encontrarse en el Examinador de Objetos, por medio de la figura de

un rayo .

• Las Constantes:
Son valores numéricos o cadenas de texto que hacen referencia a un estado. Por ejemplo:
En las casillas de verificación la propiedad Value del control puede tomar tres constantes:
- vbUnchecked, que corresponde al valor 0.
- VbChecked, que corresponde al valor 1.
- VbGrayed, que corresponde al valor 2
Se puede colocar su cadena de texto que corresponde a dicho estado o su valor numérico
si se quiere colocar en su forma abreviada. En VB 6.0 se utilizan mucho este tipo de constantes.

Las constantes se identifican en el Examinador de Objetos por tener a su lado una figura

como la siguiente:
Programación con VB 6.0 Ing. Kelvin Atencio

3. EL EXAMINADOR DE OBJETOS
El Examinador de Objetos es un tipo de ayuda de VB, que se utiliza generalmente para
encontrar los detalles de las distintas propiedades, los métodos, funciones, eventos o constantes.
Por ello es muy funcional a la hora de programar.
Para acceder a él, mientras esté en una sesión de programación, presione la tecla F2 o
vaya a la Barra de Herramientas en el menú Ver, busque Examinador de Objetos, se desplegará la
siguiente pantalla:

Por ejemplo, supongamos que deseamos verificar cuales son las diferentes constantes de
los estilos que se pueden emplear al crear un Cuadro de Mensaje (MsgBox), podemos escribir la
palabra MsgBox y el Examinador de objetos mostrará una serie de Clases que coinciden con la
palabra buscada, entre ellas VbMsgBoxStyle, puede hacer clic en ella y ver en la lista inferior las
constantes, tanto su modo abreviado como su equivalente numérico.
También puede acceder a las explicaciones de los distintos eventos de los controles o
formularios, para ello busque en la lista inferior izquierda el control al que desea encontrarle un
evento, por ejemplo CommandButton, la lista inferior derecha mostrará sus distintas propiedades,
métodos y eventos.
Si ahora hace clic sobre uno de ellos, en la parte inferior se muestra la explicación de dicho
elemento.
Programación con VB 6.0 Ing. Kelvin Atencio

4. LOS CONTROLES:
Los controles son una variedad de herramientas prediseñadas que pueden ser utilizados
en una aplicación según la finalidad de la misma.
Por la particularidad de cada una puede emplearse en ciertas circunstancias para mostrar
información, pedir información, enlistar miembros, desplegar imágenes o crear la ocasión para
realizar cálculos, entre otras.

Como ya dijimos, los controles están ubicados en el Cuadro de Herramientas


(generalmente en la parte izquierda de la pantalla). Ya hemos interactuado un poco con los
controles, pero en esta sección se explicarán cada uno de ellos por separado, utilizando en los
programas algunas de sus propiedades, métodos y eventos.

Los controles que aparecen siempre por defecto son:

• Control Label: Etiqueta


• Control TextBox: Cuadro de Texto
• Control PictureBox: Cuadro de Imagen
• Control Frame: Marco
• Control CommandButton: Botón de Comando
• Control CheckBox: Casilla de Chequeo
• Control OptionButton; Botón de Opción
• Control ListBox: Cuadro de Lista
• Control ComboBox: Cuadro Combinado
• Controles HScrollBar y VScrollBar: Barras de desplazamiento.
• Control Timer: Control de tiempo (Reloj)
• Control DriveListBox: Lista de Unidades de Discos
• Control DirListBox: Lista de Directorios
• Control FileListBox:: Lista de Archivos
• Control Shape: Formas
• Control Line: Línea
• Control Image: Imagen
• Control Data: Datos
• Control OLE: Contenedor OLE

Estos controles son llamados controles intrínsecos, ya que aparecen en todas las sesiones
y no se pueden quitar del Cuadro de Herramientas.
Pero además de éstos, existen otros controles que se pueden quitar o agregar y no
aparecen por defecto, aparecen en una lista adicional.
Para acceder a esta lista presione el botón secundario del mouse sobre el Cuadro de
Herramientas, en la lista que se desplega presione clic sobre Componentes; también lo pude hacer
Buscando en el Menú Proyecto – Componentes o simplemente CONTROL+T. De esta lista se dará
una explicación del control CommonDialog.
Ahora, mediante el Examinador de Objetos, se recomienda dedicar un tiempo a estudiar
las diferentes propiedades, los métodos y eventos de éstos distintos controles, aunque ya tenga
algo de experiencia siempre nos podemos encontrar con algún elemento nuevo. Para ello,
introduzca su nombre (Ejemplo: TextBox) y presione Buscar.

ETIQUETAS: (LABEL)
Las etiquetas se utilizan generalmente para dos fines:
• Escribir texto en el formulario, de modo que no esté disponible la opción de copiar
y pegar.
Programación con VB 6.0 Ing. Kelvin Atencio

Con esto, por ejemplo, se pueden identificar nombres de variables para el usuario.
(Ver Programa # 2).
• Mostrar resultados de modo que no se tenga la opción de copiar y pegar. (Ver
Programa # 2).

Programa #2. Sumar:

El siguiente programa agrega un valor a una suma.


Diseñe el formulario con tres etiquetas (Label), un Cuadro de texto (TextBox) y un botón de
comando (CommandButton).
Establezca en las etiquetas las siguientes propiedades:
• La primera (Label1) con Caption: &Valor =
(Indica al usuario que en el Text1, agregará el valor a sumar).
• La segunda con (Label2) con Caption: Resultado =,
(Indica al usuario que el resultado se presenta a su lado) y,
• En la tercera cambie el nombre (Name) a lblResultado y cambie la propiedad
BorderStyle = (1 – Fixed Single), que parece un cuadro de texto con fondo gris.
Luego, cambie el Caption del formulario a SUMA.
En el cuadro de texto genere su propiedad Text a cadena vacía (borre Text1).
En el botón de comando su Caption: &Sumar.
Verifique que la propiedad TabIndex de la etiqueta que dice &Valor = sea un número menor
que la propiedad TabIndex del Cuadro de Texto txtValor.
El símbolo (&) no aparecerá en el Caption y el efecto que produce es que subraya la letra
que le sigue (en este caso la letra S) y crea un acceso directo (al presionar la combinación ALT+S
se llamará al evento clic del comando o al presionar ALT+V tomará el enfoque el control Text1).
Ahora reubique las posiciones de los controles en tiempo de diseño de modo que se
visualicen de la siguiente manera:

A continuación empecemos a codificar, para ello, haga clic en Ver Código en el Explorador
de Proyectos.
Escriba en la pantalla en blanco:
Public Suma As Double
Busque en la lista que dice (General) la palabra cmdSumar y cuando aparezcan las dos
líneas para agregar código agregue las siguientes sentencias, de tal manera que aparezca:

Private Sub Command1_Click()


Dim Valor As Double
If Text1.Text = "" Then
Valor = 0
Else
Valor = CDbl(Text1.Text)
End If
Suma = Suma + Valor
lblResultado.Caption = Suma
Text1.Text = ""
End Sub

Ejecute la aplicación con F5, o en el menú Ejecutar.


Programación con VB 6.0 Ing. Kelvin Atencio

Verifique que el contenido de la suma no se puede copiar y pegar.


También después de introducir un valor en el cuadro de texto, en vez de presionar clic
sobre sumar, presione la combinación de teclas ALT+S, compruebe que se genera el mismo
evento. Para que vuelva a tomar el enfoque Text1, presione la combinación Alt+V. Esto sucede ya
que, como la etiqueta no puede tomar el enfoque pasa el enfoque a su TabIndex superior en uno,
en este caso el cuadro de texto.

La explicación de la codificación se encuentra en la Sección Explicación Detallada de


Programas en los últimos capítulos.

En este ejemplo se trabajaron con las propiedades de las etiquetas, Name (nombre),
Caption (título), BorderStyle (Estilo del Borde) y TabIndex (Índice de Tabulación). Existen otras
propiedades que también son muy utilizadas que son AutoSize (Ajustar horizontalmente al tamaño
del Caption) y WordWrap (Ajustar verticalmente al tamaño del Caption).

Para ver la explicación de otras propiedades, métodos o eventos puede dirigirse al


Examinador de Objetos con la tecla F2.

CUADROS DE TEXTOS: (TEXTBOX)

Los Cuadros de texto son muy utilizados en las aplicaciones con VB, tiene mucha
funcionalidad, pero generalmente son usados para:
• Leer valores o cadenas de texto para trabajar con ellos.
• Mostrar resultados tal como las etiquetas, pero en este caso facilita la posibilidad
de copiar y pegar.
Los Cuadros de texto son generalmente modificables en tiempo de ejecución, pero puede
convertirlo a sólo lectura si establece su propiedad Locked a True (verdadero). En este caso sólo
tendrá la posibilidad de copiar, pero no la de pegar
Como ya se ha trabajado la propiedad Text de los cuadros de Texto, se presenta ahora la
explicación del método SetFocus y dos de los eventos que se pueden generar al trabajar con estos
controles, los mismos son Change (que ocurre cuando cambia el control) y KeyPress (que ocurre
que presiona una tecla cuando este control tiene el enfoque). Si quiere la explicación de otras
propiedades, métodos o eventos diríjase al Examinador de Objetos.

Programa #3. Área de un triángulo:


Con este programa se calcula el área de un triángulo, los datos pedidos son la Base y la
Altura.
Coloque tres etiquetas en un formulario:
• La primera con propiedad Caption: &Base=
• La segunda con propiedad Caption: &Altura=
• La tercera con propiedad Caption: Resultado=
Agregue también tres cuadros de textos:
• El primero con propiedad Name: txtBase
• El segundo con propiedad Name: txtAltura
• El tercero con propiedad Name: txtResultado
Coloque dos botones de comando:
• El primero con propiedad Name: cmdCalcular, Caption: &Calcular y Enabled: False
• El segundo con propiedad Name: cmdBorrar y Caption: B&orrar
Cambie la propiedad Caption del formulario a AREA.

Reubique los controles de tal manera que quede de la siguiente manera:


Programación con VB 6.0 Ing. Kelvin Atencio

TxtBase está ubicado al lado de la etiqueta Base =.


TxtAltura al lado de la Etiqueta Altura = , y
TxtResultado al lado de la Etiqueta Resultado =.

Ahora, se puede empezar a codificar para realizar el programa, copie y pegue el siguiente
código o escriba:

Option Explicit

Private Sub cmdBorrar_Click()


txtBase = ""
txtAltura = ""
txtResultado = ""
cmdCalcular.Enabled = False
txtBase.SetFocus
End Sub

Private Sub cmdCalcular_Click()


Dim Base As Double, Altura As Double, Area As Double
Base = Val(txtBase)
Altura = Val(txtAltura)
If IsNumeric(txtBase) And IsNumeric(txtAltura) Then
Area = Base * Altura / 2
txtResultado = Area
Else
MsgBox "No se acepta texto. Verifique para continuar", vbOKOnly +
vbExclamation, "Error"
End If
End Sub

Private Sub txtBase_Change()


If Len(txtBase) > 0 And Len(txtAltura) > 0 Then
cmdCalcular.Enabled = True
End If
End Sub
Private Sub txtBase_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
txtAltura.SetFocus
End If
End Sub

Private Sub txtAltura_Change()


If Len(txtBase) > 0 And Len(txtAltura) > 0 Then
cmdCalcular.Enabled = True
End If
Programación con VB 6.0 Ing. Kelvin Atencio

End Sub

Private Sub txtAltura_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If cmdCalcular.Enabled = True Then
cmdCalcular.SetFocus
Else
TxtBase.SetFocus
End If
End If
End Sub

Ejecute la aplicación con la tecla F5, y compruebe las nuevas opciones que se han
generado en este programa, por ejemplo el reconocimiento de la tecla Enter (KeyAscii = 13) o
activar el botón de comando cuando ya se han rellenado los cuadros de texto con valores.
Para obtener una explicación detallada del programa puede ir a la Sección Detallada de
Programas y buscar el programa #3.

PICTUREBOX (CUADRO DE IMAGEN)


Los controles PictureBox se pueden utilizar para mostrar imágenes y mediante sus
métodos crear gráficos como líneas, cuadrados, rectángulos, círculos o elipses; aunque con un
poco de creatividad puede combinar varios de estos para realizar dibujos. Puede utilizarse también
como contenedores de otros controles, esto es muy útil por ejemplo para realizar barras de
herramientas o de estado. Otra opción que ofrece es la posibilidad de escribir sobre él mediante el
método Print.
Los formatos compatibles con este control son los archivos imágenes JPEG, formato de
intercambio gráfico (GIF), mapa de bits (BMP), íconos (ICO), cursores (CUR), metarchivo estándar
de Windows (WMF) o mejorados (EMF).

Puede mostrar una imagen en este control en tiempo de diseño mediante la propiedad
Picture, para cambiarla en tiempo de ejecución puede utilizar la siguiente:

Set Objeto.Picture = LoadPicture(Ruta)

Donde Ruta es la ruta y el nombre de la imagen (Ejemplo: “C:\Windows\Aros.bmp”) Si


desea quitar la imagen mostrada en el control se debe dejar en blanco los comandos de Ruta,
quedando de la siguiente manera:

Set Objeto.Picture = LoadPicture

Una desventaja que tiene este control con respecto al control imagen, es que el tamaño de
la imagen no se puede adaptar al tamaño del control, pero si el tamaño del control al tamaño de la
imagen mediante la propiedad AutoSize, si esta propiedad esta establecida como True (verdadera)
el tamaño del control se adapta al tamaño de la imagen, si el tamaño de la imagen es muy grande
debe tener cuidado de no opacar otros controles, si toma el valor False (Falso) no se cambia el
tamaño del control ni de la imagen, si la imagen es más grande que el control ésta se recortará.

Los Métodos Gráficos:


Como se mencionó anteriormente, en el control PictureBox puede dibujar formas como
puntos, líneas, círculos, elipses, arcos, cuadrados o rectángulos, además que permite escribir
sobre él. Estos métodos gráficos también son aplicables a los formularios.

• Puntos: Se realizan mediante el método Pset:

Objeto.Pset (X,Y), [color]


Programación con VB 6.0 Ing. Kelvin Atencio

Donde Objeto es el nombre del Cuadro de Imagen, de un formulario, o si se omite se hará


referencia al formulario actual (activo). X, Y son las coordenadas donde se colocará el punto. Estos
puntos tienen un tamaño de un píxel, siendo pequeños para la vista humana.

• Líneas: Se utiliza el método Line:

Objeto.Line (X1,Y1)-(X2,Y2), [color]

Donde X1 y Y1 son las coordenadas del punto inicial y X2 y Y2 las del punto final, el color
es opcional.

• Círculos: Se realizan mediante el método Circle:

Objeto.Circle (X,Y), radio, [color]

X, Y son las coordenadas del centro del círculo, radio el tamaño del radio y el color es
opcional.

• Elipses: Se realizan mediante el método Circle:

Objeto.Circle (X,Y), radio, [color], [inicio], [fin], aspecto

Donde radio es la distancia más grande de la elipse, inicio y fin se colocan si se desea
realizar sólo un arco, y aspecto es la relación o proporción de la distancia vertical con respecto a la
horizontal, los valores mayores a uno dibujan elipses alargadas verticalmente, mientras que los
valores entre cero y uno dibujan elipses alargadas horizontalmente. No se aceptan valores
negativos.

• Arcos: También se utiliza, por supuesto, el método gráfico Circle:

Objeto.Circle (X.Y), radio, [color], inicio, fin, [aspecto]

Donde inicio y fin son los ángulos de inicio y fin del arco en radianes y aspecto es opcional
y se coloca si desea dibujar el arco de una elipse.

• Cuadrados o Rectángulos: Se realizan mediante el método Line:

Objeto.Line (X,Y)-Step(Ancho,Alto), [color], B

Donde las coordenadas X, Y son las coordenadas de la esquina superior izquierda. Si


desea rellenar el cuadrado, debe cambiar la sentencia B por BF.

• Escribir Texto: Se escribe texto mediante el método Print. Para establecer el lugar
donde se colocará el texto se utilizan las instrucciones Objeto.CurrentX y
Objeto.CurrentY.

Objeto.CurrentX = CoordenadaX
Objeto.CurrentY = CoordenadaY
Objeto.Print "Escriba texto"

Notas Importantes: Es importante resaltar que la coordenada Y se mide de arriba hacia abajo, tal
como los formularios.
Si en algún método gráfico desea omitir el color, inicio o fin deberá dejar el espacio en
blanco entre las dos comas:
Programación con VB 6.0 Ing. Kelvin Atencio

Ejemplo: un cuadrado donde se omite el color:


Objeto.Line (X,Y)-Step(Ancho,Alto), , B
O una elipse completa:
Objeto.Circle (X,Y), radio, color, , , aspecto

Como se puede ver el color es opcional en todos los métodos gráficos y si se omite este
presentará el color de la propiedad ForeColor cuyo valor predeterminado es negro.

Programa #4. Dibujar en un PictureBox:


El siguiente programa dibuja en un control PictureBox mediante los diferentes métodos
gráficos explicados anteriormente:
Para ello, agreguemos 7 botones de comando, y un control PictureBox. Cambie las
propiedades de la siguiente manera:
Todos los botones de comando tienen las propiedades:
Left: 240
Width: 1935.
Height: 375

Control Propiedades
1er Botón de Comando Name: cmdMostrar
Caption: Mostrar &imagen
Top: 120
2do Botón de Comando Name: cmdCuadrado
Caption: Dibujar c&uadrados
Top: 600
3er Botón de Comando Name: cmdLinea
Caption: Dibujar &líneas
Top: 1080
4to Botón de Comando Name: cmdPunto
Caption: Dibujar varios &Puntos
Top: 1560
5to Botón de Comando Name: cmdElipse
Caption: Dibujar &Elipse
Top: 2040
6to Botón de Comando Name: cmdCirculo
Caption: Dibujar &círculos y arcos
Top: 2520
7mo Botón de Comando Name: cmdTexto
Caption: Escribir &texto
Top: 3000
8vo Botón de Comnado Name: cmdBorrar
Caption: &Borrar
Top: 3480
PictureBox Name: Monitor
Height: 3735
Width: 4095
Left: 2280
Top: 120
BackColor: Blanco

Cambie la propiedad Caption del formulario para colocar un nombre al programa.


Ahora, copie y pegue el siguiente código, o escriba:
Programación con VB 6.0 Ing. Kelvin Atencio

Option Explicit
Private Sub cmdMostrar_Click()
Set Monitor.Picture = LoadPicture("C:\Windows\Aros.bmp")
End Sub

Private Sub cmdCuadrado_Click()


Monitor.FillStyle=1
Monitor.Line (200, 400)-Step(700, 300), , B
Monitor.Line (1000, 2000)-Step(1000, 1000), vbYellow, BF
Monitor.Line (1000, 2000)-Step(1000, 1000), vbBlack, B
End Sub

Private Sub cmdLinea_Click()


Monitor.Line (200, 400)-(900, 700), vbBlack
Monitor.Line (2500, 500)-(1000, 2500), vbGreen
End Sub

Private Sub cmdPunto_Click()


Dim X As Integer, Y As Double
Monitor.PSet (200, 400), vbRed
Monitor.PSet (600, 500), vbBlue
Monitor.PSet (700, 800), vbGreen
For X = 1 To Monitor.Width
Y = 3 * X ^ (0.75) + 500
Monitor.PSet (X, Monitor.Height - Y), RGB(50, 200, 211)
Next X
End Sub

Private Sub cmdElipse_Click()


Monitor.FillStyle = 0
Monitor.FillColor = vbRed
Monitor.Circle (1200, 1200), 500, vbBlue, , , 2 / 3
End Sub

Private Sub cmdCirculo_Click()


Const Pi = 3.1415927
Monitor.FillStyle=1
Monitor.Circle (3000, 800), 300, vbRed
Monitor.Circle (2500, 2500), 700, vbBlack, Pi / 2, Pi
End Sub

Private Sub cmdTexto_Click()


Monitor.CurrentX = 2500
Monitor.CurrentY = 3000
Monitor.ForeColor = vbBlue
Monitor.Print "Muestra de texto"
End Sub

Private Sub cmdBorrar_Click()


Set Monitor.Picture = LoadPicture
End Sub

Ejecute e interactúe con el programa. La explicación del programa se encuentra en la


Sección Detallada de Programas.

MARCOS (FRAME):
Programación con VB 6.0 Ing. Kelvin Atencio

Los Marcos actúan como agrupadores y contenedores de otros controles. Por ejemplo se
puede utilizar para agrupar botones de opción para que el usuario elija una de las opciones
presentadas o casillas de verificación para elegir varias opciones.
Puede colocar cualquier control sobre él y al colocarlo el control hará referencia con sus
propiedades top y left al marco y no al formulario.
(La explicación de los botones de opción puede encontrarla más adelante durante la
descripción de los controles)

Programa #5. ¿Dónde estudiar?


En este programa se utilizarán dos controles marcos (Frame) para agrupar botones de
opción. Para ello se deben seguir los siguientes pasos:

• Dibujar una etiqueta en la parte superior del formulario, con las siguientes propiedades
Caption: (Borre su contenido)
Height: 375
Width: 4575
Left: 120
Top: 120
BorderStyle: 1 – Fixed Single
• Dibujar ahora un control Frame (marco) con las siguientes propiedades:
Caption: Carrera
Height: 1575
Width: 2055
Left: 120
Top: 600
• Colocar un botón de opción dentro del marco. Colocando el nombre optCarrera y
Caption igual a Ingeniería.
• Se va a crear una matriz de controles, para ello, se debe copiar el botón de opción y al
pegar se desplegará un mensaje de diálogo que preguntará. ¿Desea crear una matriz
de controles? Responda Si. Se pegará un control cuyo Caption se debe cambiar a
Arquitectura. Después corte este control, seleccione el marco (haga clic sobre él) y
pegue el control. Esto se hace para asegurar que el control quede dentro del marco
seleccionado. Luego, colóquelo debajo del anterior botón de opción. Después, se debe
pegar otro control (botón de opción) como matriz de control cuyo Caption va a cambiar
a Letras.
• Ahora se colocará otro control Frame (marco), se dibujará este control sobre el
formulario asignando las siguientes propiedades:
Caption: Institución
Height: 1575
Width: 2415
Left: 2280
Top: 600
• Se van a colocar también tres botones de opción, el nombre para el primero es (no su
Caption, sino su propiedad Name) es optInstitucion, cree la matriz de controles y
colóquelos dentro de este marco, sus caption respectivos son: Universidad Nacional,
Universidad Estatal y universidad Municipal.
• Se asigna a la propiedad TabIndex del botón de opción que dice Universidad Nacional
el valor cero (0).
• Coloque debajo de los marcos un botón de comando con Caption igual a &Salir.
• Ahora le toca el paso a la codificación:

Copie y pegue el siguiente código o escriba:


Programación con VB 6.0 Ing. Kelvin Atencio

Public strCarrera As String, strInstitucion As String

Private Sub optCarrera_Click(Index As Integer)


strCarrera = optCarrera(Index).Caption
Call Display
End Sub

Private Sub optInstitucion_Click(Index As Integer)


strInstitucion = optInstitucion(Index).Caption
Call Display
End Sub

Private Sub Display()


Label1.Caption = "Ha decidido estudiar " & strCarrera & _
" en la " & strInstitucion
End Sub

Private Sub Command1_Click()


Unload Me
End Sub

BOTONES DE COMANDO (COMMANDBUTTON):


Ya se ha trabajado un poco con ellos, su finalidad es de generar acciones cuando se hace
clic sobre ellos, pueden tomar el enfoque con el método SetFocus y el evento principal es el evento
clic.
Otra propiedad que se puede mencionar es Default. Ésta sólo puede tomar el valor
verdadero o falso y determina qué control CommandButton es el botón de comando
predeterminado en un formulario. Sólo un botón de comando de un formulario puede tener esta
propiedad como verdadera. Así, si cualquier control del formulario tiene el enfoque al presionar la
tecla Enter llama al evento clic del nombre del control.
Por ahora, no realizaremos programas para aplicar esta propiedad.

CASILLAS DE VERIFICACIÓN (CHECKBOX):


Las Casillas de Verificación funcionan también como botones de opción, pero en este caso
se puede seleccionar cualquier número de casillas, se puede seleccionar ninguna, una o más de
una opción.
La propiedad más importante de este control es Value, que puede tomar tres valores:
• Desactivada: En este caso la propiedad Value toma el Valor 0 o también
vbUnchecked.
• Activada: La propiedad Value toma el valor 1 o vbChecked.
• No Disponible: La propiedad Value toma el valor 2 o vbGrayed. Este caso se
utiliza si desea deshabilitar el control.

Si el control está habilitado, éste responde al evento clic cambiando su propiedad value a
activado o desactivado, según sea el caso, si se presiona doble clic el control reconoce cada clic
por separado quedando en el mismo estado.
Puede crear un acceso directo si antepone el signo & a la letra en la propiedad Caption, así
al presionar la combinación Alt+Letra se llevará a cabo el evento clic.
Si no desea que la casilla muestre un texto en su propiedad Caption sino que muestre una
figura, puede utilizar la propiedad Picture y Style para asignar la imagen a el control.

Programa #6. Contrato:


Programación con VB 6.0 Ing. Kelvin Atencio

Este programa tiene la finalidad de utilizar el control CheckBox, se debe crear un proyecto
nuevo y en el formulario colocar tres controles CheckBox, con los siguientes Captions:
1. &Entre 20 y 30 años
2. &Tiene experiencia en el área
3. &Bilingüe
Ahora, para continuar se colocará un botón de comando debajo de las casillas de
verificación, con Caption: &Contratar?.
Para finalizar se agrega debajo del botón de comando una etiqueta con las siguientes
propiedades:
• Caption: (Sin contenido)
• Font: Tamaño:12 – Negrita
• Autosize=True (verdadero)
• Alignment: 2 – center

Si se quiere puede cambiar el caption del formulario a Requisitos


A continuación se debe agregar el siguiente código en la pantalla del formulario:

Private Sub Command1_Click()


If Check1 = vbChecked And Check2 = 1 And Check3 = 1 Then
Label1.Caption = "Si contratar"
Else
Label1.Caption = "No contratar"
End If
End Sub

Al ejecutar el programa se verifica que si el aspirante cumple con los tres requisitos debe
ser contratado y no aquellos que sólo cumplen menos.

BOTONES DE OPCIÓN (OPTIONBUTTON):


Tienen la finalidad de presentar un conjunto de opciones al usuario con el propósito que
sólo pueda elegir una.
Los grupos de botones deben estar agrupados, para ello, deben estar colocado en el
mismo control o formulario, es decir, los botones de opción que se encuentran directamente
encima del formulario se agruparán y sólo se podría elegir una de ellas, aquellas que se
encuentran dentro de un marco (Frame) se separarán de las primeras y de éstas se podría escoger
otra opción, asimismo aquellas que están dentro de un PictureBox.
Si durante una prueba se observa que se pudo escoger más de una opción es porque el
botón de opción no quedó agrupado sino que quedó fuera del área del grupo y por lo tanto debe,
mediante el diseño, reubicarlo. Para asegurar que el control quede dentro del área del grupo se
debe:
• Dibujar el botón de opción en cualquier lugar.
• Corte el botón de opción.
• Seleccionar (mediante un clic) el control o el formulario donde se desea colocar.
• Pegar el botón de opción.
• Ubicarlo en la posición que se desea.

Se puede crear un acceso directo si antepone el signo & a la letra en la propiedad Caption,
así al presionar la combinación Alt+Letra se llevará a cabo el evento clic, es decir, la selección.
El programa que ejemplifica este control es el Programa #5.

CONTROL LISTBOX (CUADRO DE LISTA):


Programación con VB 6.0 Ing. Kelvin Atencio

Los cuadros de lista es un control que tiene la finalidad de presentar una lista de elementos
al usuario de tal manera que éste escoja una o varias opciones, o puede también utilizarse para
enlistar elementos en tiempo de ejecución.
Los elementos pueden colocarse en la lista en tiempo de diseño o en tiempo de ejecución.
Para agregarlos en tiempo de diseño, se debe rellenar la propiedad List (en la ventana
Propiedades) con los elementos que se deseen, en este caso, cada vez que se coloque un
elemento se presiona la combinación de teclas Control+Enter para pasar a la siguiente línea, al
siguiente elemento.
Para agregarlos en tiempo de ejecución se utiliza la instrucción Additem, de la siguiente
manera:
Lista.Additem "Elemento" [, índice]

Donde Lista es el nombre de la lista, Elemento es una cadena de caracteres de texto o


número que se va a agregar a la lista y el índice es opcional y ofrece la opción de ubicar el
elemento en algún lugar especificado de la lista. La lista enumera los elementos desde el número 0
(primer elemento) hasta el último que tendría como valor de índice el número de elementos menos
uno. Si en la instrucción Additem no se incluye el índice, la lista colocará el elemento al final de la
lista, de manera que si se desea colocar primero se escribirá el siguiente código:

Lista.Additem Elemento, 0

Al colocar el elemento en esta posición, los otros elementos se reindexarán y pasarán a


ocupar una nueva posición, el primero pasa a ser el segundo (1), el segundo pasa a tercero (2) y
así sucesivamente. Si se agregan en una posición inválida que sobrepase la numeración de los
elementos se producirá un error.
Si desea agregar una lista de elementos a la lista de un formulario en tiempo de ejecución,
de tal manera que el usuario escoga una o varias, puede agregarlo mediante el método Additem en
el evento Load del formulario, es decir Private Sub Form_Load(), de manera que los
elementos aparecerán cargados en la lista a la hora de cargar el formulario.
Para eliminar un elemento de la lista en tiempo de ejecución se utiliza la instrucción
RemoveItem, de la siguiente manera:
Lista.RemoveItem índice

Sólo se pueden eliminar elementos mediante su número de índice, para obtener el número
de índice de un elemento seleccionado se utiliza la propiedad Lista.ListIndex, de tal manera que
para eliminar un elemento seleccionado se debe escribir:
If Lista.ListIndex>=0 Then
Lista.RemoveItem Lista.ListIndex
End if

Si no existe un elemento seleccionado la propiedad ListIndex toma el valor –1, por lo tanto
se le antecede la sentencia IF asegurando que haya seleccionado un elemento. Si no se coloca
esta sentencia y no hay elementos seleccionados en la lista el programa genera un error.

La instrucción para obtener el número de elementos de una lista es ListCount, de forma


que el índice del último elemento es ListCount – 1.
Otra propiedad que se utiliza con este control es List. Esta propiedad, guarda cada
elemento de la lista en una matriz, de modo que para obtener un elemento en particular utilice la
codificación:
Lista.List(índice)

Por ejemplo, la secuencia Lista.List(1) devuelve el segundo elemento mostrado en la lista.


La manera para quitar todos los elementos de una lista es el método Clear:
Lista.Clear

Programa #7. Coordenadas:


Programación con VB 6.0 Ing. Kelvin Atencio

Este programa utiliza una lista para ordenar puntos de coordenadas X, Y. Grafica estos
puntos en un PictureBox.
Para este fin, se deben colocar una lista, dos etiquetas, dos cuadros de texto, un cuadro de
imagen y tres botones de comando.
A continuación, se muestran las propiedades Name que deben tener estos controles:

Control Name
Cuadro de texto 1 txtX
Cuadro de texto 2 txtY
Lista 1 lstPuntos
Botón de Comando 1 cmdIngresar
Botón de Comando 2 cmdEliminar
Botón de Comando 3 cmdBorrar
Cuadro de Imagen 1 Monitor

Las propiedades Height y Width del Monitor son 2175 cada una.
Se deben ubicar los controles de tal manera que se observen de la siguiente manera:

Copie y pegue el siguiente código o escriba:

Option Explicit

Private Sub txtX_Change()


cmdIngresar.Enabled = (Len(txtX) > 0 And Len(txtY) > 0)
End Sub

Private Sub txtX_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
txtY.SetFocus
End If
End Sub

Private Sub txtY_Change()


cmdIngresar.Enabled = (Len(txtX) > 0 And Len(txtY) > 0)
End Sub

Private Sub txtY_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
If cmdIngresar.Enabled = True Then
cmdIngresar.SetFocus
Else
Programación con VB 6.0 Ing. Kelvin Atencio

txtX.SetFocus
End If
End If
End Sub

Private Sub cmdIngresar_Click()


Dim X As Integer, Y As Integer
X = CInt(txtX)
Y = CInt(txtY)
Monitor.Circle (X, Y), 30, vbRed
lstPuntos.AddItem "(" & X & "," & Y & ")"
txtX = ""
txtY = ""
txtX.SetFocus
End Sub

Private Sub cmdEliminar_Click()


If lstPuntos.ListIndex >= 0 Then
lstPuntos.RemoveItem lstPuntos.ListIndex
End If
End Sub

Private Sub cmdBorrar_Click()


lstPuntos.Clear
Monitor.Refresh
End Sub

Se puede interactuar un poco con el programa para relacionarse con los comandos y
funciones de cada botón de comando, lista y control PictureBox.
Es importante resaltar que, en este caso, aunque se elimine de la lista las coordenadas de
un punto, no se borra éste del cuadro de imagen. Esto se hace debido a que todavía no se tienen
las herramientas necesarias para generar dichos procedimientos, esto es sólo un ejemplo de cómo
se utiliza el control ListBox y por lo tanto se dejaron a un lado estas posibilidades.
Para obtener más detalles sobre este programa dirigirse a la Sección Detallada de
Programas al final de este tomo.
Puede ver también el ejemplo del control ComboBox para ver otra utilidad de los cuadros
de lista.
Guarde este programa ya que lo utilizará mas adelante cuando se introduzca en el tema
del trabajo con ficheros.

CONTROL COMBOBOX (CUADRO COMBINADO):


Este control combina las posibilidades de una lista con un cuadro de texto, de manera que
presenta la posibilidad de elegir de una lista un elemento de interés, pero además, puede obviar
cualquier opción y escribir sobre el control mediante la propiedad text. Por lo tanto, posee además
de las propiedades, métodos y eventos de la lista, también los de los cuadros de texto.

Programa #8. Número de Mes:


A continuación la elaboración de un programa para observar una de las utilidades del
control ComboBox:
Para ello se debe agregar al formulario:
• Una etiqueta de Caption: Mes Nro:
• A su lado un cuadro de texto de nombre Text1 (no cambiar)
• Un botón de comando de nombre Command1 (no cambiar) y Caption: Escribir Mes
• Un control ComboBox (Cuadro combinado) de nombre Combo1 (no cambiar).
Programación con VB 6.0 Ing. Kelvin Atencio

Se debe agregar al formulario el siguiente código:

Private Sub Form_Load()


Combo1.AddItem "Enero"
Combo1.AddItem "Febrero"
Combo1.AddItem "Marzo"
Combo1.AddItem "Abril"
Combo1.AddItem "Mayo"
Combo1.AddItem "Junio"
Combo1.AddItem "Julio"
Combo1.AddItem "Agosto"
Combo1.AddItem "Septiembre"
Combo1.AddItem "Octubre"
Combo1.AddItem "Noviembre"
Combo1.AddItem "Diciembre"
End Sub

Private Sub Command1_Click()


Dim Mes As Byte
Select Case Combo1.Text
Case "Enero": Mes = 1
Case "Febrero": Mes = 2
Case "Marzo": Mes = 3
Case "Abril": Mes = 4
Case "Mayo": Mes = 5
Case "Junio": Mes = 6
Case "Julio": Mes = 7
Case "Agosto": Mes = 8
Case "Septiembre": Mes = 9
Case "Octubre": Mes = 10
Case "Noviembre": Mes = 11
Case "Diciembre": Mes = 12
Case Else
MsgBox "Error en el mes. Corrija para continuar"
End Select
Text1 = Mes
End Sub

Al ejecutar la aplicación, se debe seleccionar un mes y presionar el botón de comando, se


desplegará en el cuadro de texto en número de mes correspondiente. Para obtener los detalles de
la programación se puede dirigir a la Sección Detallada de Programas.

Es muy importante resaltar que los cuadros de lista y el cuadro combinado tienen funciones
similares, sin embargo pueden tener distintas funciones según el programa.
En el caso del ejemplo del cuadro de lista se utilizó para enlistar un conjunto de puntos que
se iban dibujando en el cuadro de imagen, además los elementos (puntos) se encerraban en
paréntesis y se separaban las variables por comas. En el caso del ejemplo del cuadro combinado
se utilizó para desplegar una lista en el cual el usuario podía elegir una opción; en este ejemplo
también se pudo utilizar un cuadro de lista sin embargo se quiso que ambos ejemplos sirvieran
para ambos casos de manera que el lector pueda asociar las distintas funciones que pueden tener
estos controles a la hora de programar.

CONTROLES HSCROLLBAR Y VSCROLLBAR: BARRAS DE DESPLAZAMIENTO.


Programación con VB 6.0 Ing. Kelvin Atencio

Las barras de desplazamiento se utilizan en las aplicaciones para desplazarse horizontal o


verticalmente cuando halla una cantidad grande de información o cuando los controles toman gran
tamaño.
Estas tienen la misma finalidad de aquellas que aparecen en los cuadros de texto cuando
el contenido de su propiedad text sobrepasa el ancho y/o el alto del mismo o también las que
aparecen en un cuadro de lista o combinado cuando el número de elementos es mayor al tamaño
designado para la muestra de ellos. Esta tiene la finalidad de mostrar elementos también
contenidos en el control que no se pueden ver inmediatamente por el reducido tamaño del mismo.
Aunque tienen la misma finalidad este control no son iguales ya que las primeras aparecen por
defecto y en este caso se promueve mediante los métodos del control.

Programa #9. Mirar el contenido de una etiqueta:


El siguiente programa sugiere mediante la utilización de la barra de desplazamiento ver el
contenido de una etiqueta cuyo interior no se podía observar completamente por el reducido
tamaño de la etiqueta.
Para ello se deben colocar los controles de la izquierda con las propiedades de la derecha:
Control Propiedades
• Cuadro de texto (TextBox) Nombre: Text1 (no cambiar)
Height: 285
Width: 1575
Left: 0
Top: 0
• Cuadro de Imagen (PictureBox) Nombre: Picture1 (no cambiar)
BorderStyle: 1 – Fixed Single
Height: 495
Width: 1575
Left: 0
Top: 360
• Botón de Comando (CommandButton) Nombre: Command1 (no cambiar)
Caption: Asignar
Height: 285
Width: 975
Left: 1680
Top: 0
• Barra de desplazamiento Horizontal Nombre: HScroll1 (no cambiar)
(HScrollBar) Height: 255
Width: 1575
Left: 0
Top: 960
Visible: False
• Etiqueta (Label) Nombre: Label1 (no cambiar)
Nota: la etiqueta estará insertada dentro del AutoSize: True (verdadero)
control cuadro de imagen. Para ello córtela BorderStyle: 0 – None
de donde esté, seleccione el cuadro de Caption: (Borrar contenido)
imagen con un clic y pegue la etiqueta. Height: 195

Ahora, se procederá a colocar el siguiente código dentro la ventana de código del formulario:

Option Explicit
Private Sub Command1_Click()
Form1.ScaleMode = vbCharacters
Picture1.ScaleMode = vbCharacters
Label1.Move 0, 0
Label1.Caption = Text1
HScroll1.Max = Label1.Width - Picture1.Width + 1
HScroll1.Visible = (Picture1.Width < Label1.Width)
Programación con VB 6.0 Ing. Kelvin Atencio

End Sub

Private Sub HScroll1_Change()


Label1.Left = -HScroll1.Value
End Sub

Ejecute el programa y coloque en el cuadro de texto una cadena de números o textos más
grande que el tamaño del cuadro de imagen, luego haga clic en el botón de comando, aparecerá la
barra de desplazamiento horizontal permitiendo desplazarse para ver el contenido completo de la
etiqueta. Si coloca un número de menos caracteres no aparecerá la barra.
Para obtener la explicación del programa detalladamente, se puede dirigir a la Sección
Detallada de Programas.
Puede utilizar la barra de desplazamiento también para observar completamente una
imagen contenida dentro de un control cuadro de imagen. Esto es muy útil ya que el cuadro de
imagen no muestra la imagen completa si su tamaño es menor. Se puede entonces colocar un
Picture2 dentro de un Picture1 y seguir la secuencia semejante a como se hizo con la etiqueta,
colocando además una barra de desplazamiento vertical.

CONTROL TIMER (CONTROL DE TIEMPO – RELOJ)


Este control es muy útil para crear aplicaciones donde necesite llevar un control de tiempo,
ya sea que utilice el reloj del computador como contador o rector de las actividades del computador,
o cree un nuevo contador de segundos, horas y minutos que comience desde cero, como es el caso
del ejemplo que se muestra más delante de esta sección.
El control Timer tiene dos propiedades principales, ellas son Enabled e Interval. La
propiedad Enabled comienza el funcionamiento del control de tiempo y la propiedad Interval que
genera un evento Timer cada vez que se cumple el valor que contiene (en milisegundos), es decir, si
la propiedad Interval tiene el valor 1000 (1000 milisegundos = 1 segundo) se llama al evento Timer
cada segundo.

Programa #10. Cyber:


El siguiente programa da un ejemplo de un contador de un cyber. Muestra la hora del
computador, un contador de tiempo de uso y el precio por el tiempo de uso.
Para la realización de este programa se deben agregar 6 etiquetas. Las tres primeras (de
nombres Label1, Label2 y Label3) se colocan en la parte inferior del formulario y sirven para mostrar
las variables del uso del computador, por ello fue borrado el contenido de la propiedad Caption de
cada una.
Las demás tienen propiedades:
Label4 Caption: Hora
Label5 Caption: Tiempo de uso
Label6 Caption: Precio
Se agregó además, por supuesto, el control Timer. Es muy importante resaltar que este
control no es visible en tiempo de ejecución. Y por ello no tiene propiedades de tamaño, ni opciones
de borde, color de fondo, y otras similares; ya que no son relevantes.
Al control Timer se le asignaron las propiedades Interval=1000 y Enabled = True
Luego se colocaron los controles de la siguiente manera:
La ubicación del control Timer tampoco es relevante.

Luego se procede a agregar a la ventana de código del programa las siguientes


sentencias:
Programación con VB 6.0 Ing. Kelvin Atencio

Option Explicit

Private Sub Timer1_Timer()


Static Segundos As Byte, Minutos As Byte, _
Horas As Integer, Precio As Double, Contador As Long
Contador = Contador + 1
Label1 = Time
If Segundos < 59 Then
Segundos = Segundos + 1
Else
Segundos = 0
If Minutos < 59 Then
Minutos = Minutos + 1
Else
Minutos = 0
Horas = Horas + 1
End If
End If
Label2 = Format(Horas, "##00") + ":" + _
Format(Minutos, "##00") + ":" + Format(Segundos, "##00")
Precio = CDbl(Contador * 1200 / 3600)
If Precio < 100 Then
Precio = 100
End If
Label3 = Format(Precio, "##,##00.00")
End Sub

Puede ejecutar el programa para observar su funcionalidad. Para obtener una explicación
detallada del programa diríjase a la Sección Detallada de Programas.

CONTROLES
• CONTROL DRIVELISTBOX: LISTA DE UNIDADES DE DISCOS

• CONTROL DIRLISTBOX: LISTA DE DIRECTORIOS


• CONTROL FILELISTBOX:: LISTA DE ARCHIVOS

Estos controles se agruparon en uno ya que tienen finalidades semejantes. El caso de las
listas de unidades de disco, muestran un cuadro combinado con las unidades de disco presentes
en su computador. La propiedad más importante de este control es la propiedad Drive que
devuelve o establece la unidad seleccionada en tiempo de ejecución.
Las listas de directorios muestran las distintas carpetas de directorio que están grabadas
dentro del computador. la propiedad más importante de ésta es la propiedad Path que devuelve o
establece la ruta de acceso actual.
La listas de archivos muestran la lista de archivos de un directorio seleccionado. También
tiene la propiedad Path con las misma función que las listas de directorio, a diferencia que éste
muestra la lista de archivos y no la de directorio. También contiene la propiedad Patern que
muestra sólo la extensión de algún tipo de archivo. Es útil por ejemplo, si quiere mostrar sólo
archivos de extensión *.exe, *.doc, u otro.

Programa #11. Directorio:


El siguiente programa combina los tres tipos de cuadros visto anteriormente: DriveListBox,
DirListBox y FileListBox para mostrar los documentos de word (*.doc) de una carpeta.
Para ello, se debe agregar a un formulario una lista de unidades, una de directorio y una de
archivos:
Programación con VB 6.0 Ing. Kelvin Atencio

Luego, se debe copiar y pegar, o escribir:

Private Sub Form_Load()


Dir1_Change
End Sub

Private Sub Drive1_Change()


Dir1.Path = Drive1.Drive
End Sub

Private Sub Dir1_Change()


File1.Pattern = "*.doc"
File1.Path = Dir1.Path
End Sub

Ejecute el programa y ubique las diferentes unidades de disco, directorio y verifique que la
lista de archivos corresponde a los archivos de word (*.doc) de la carpeta, es recomendado buscar
la carpeta Mis Documentos.
La explicación detallada de la codificación la puede encontrar en la Sección Detallada de
Programas.

CONTROL SHAPE: FORMAS


El control Shape permite crear figuras sin necesidad de escribir código, tiene varias
propiedades que se explicarán a continuación:

Propiedad Shape:
Es la más común y permite dibujar distintos tipos de figura sin escribir código, por ejemplo:
agregue un control Shape a un formulario y cambie la propiedad Shape (en la Ventana de
Propiedades del Control) presionando doble clic o eligiendo de la lista, la forma va cambiando
según vaya cambiando su propiedad Shape, se pueden crear las siguientes figuras:

Figura Nro de Estilo Constante


Rectángulo 0 vbShapeRectangle
Cuadrado 1 vbShapeSquare
Elipse 2 vbShapeOval
Círculo 3 vbShapeCircle
Rectángulo redondeado 4 vbShapeRoundedRectangle
Cuadrado redondeado 5 vbShapeRoundedSquare

Las constantes se utilizan para cambiar la forma del control en tiempo de ejecución, o se
puede colocar su forma abreviada mediante su número correspondiente.

Propiedad FillStyle:
Se refiere al estilo del relleno del control. Si se encuentra en la forma Transparente = 1, la
propiedad FillColor queda deshabilitada, de tal manera que no habrá color de relleno. Los distintos
estilo de la propiedades FillStyle pueden obtenerse en el Examinador de Objetos introduciendo la
palabra FillStyleConstants.
Para cambiar el grosor del borde utilice la propiedad BorderWidth, el grosor
predeterminado es uno, de tal manera que los números mayores a uno serán mas gruesos que la
predeterminada. No se aceptan valores menores a uno, ni valores decimales.
Para cambiar el color del borde elija el tipo de borde con la propiedad BorderStyle y cambie
la propiedad BorderColor y DrawMode al de su preferencia.
Los estilos de borde también se pueden obtener en el Examinador de objeto introduciendo
la palabra BorderStyleConstants.
Programación con VB 6.0 Ing. Kelvin Atencio

No se procedió a realizar un programa con este control ya que su funcionalidad y


aplicación es muy fácil verla sólo con la explicación.
CONTROL LINE: LÍNEA
Este control sólo tiene una finalidad decorativa de los formularios o puede agregarlas
dentro de otro control como cuadro de imagen (PictureBox), marcos (Frame) u otros
Puede agregar líneas y cambiar su grosor, estilo, color, puede ubicarla según las
coordenadas y hacerlas visibles o invisibles.
Tampoco se procedió a realizar un programa con este control ya que su funcionalidad y
aplicación es muy fácil verla sólo con la explicación.

CONTROL IMAGE: IMAGEN


Este control también se utiliza para mostrar imágenes, acepta los mismos formatos que los
cuadros de imagen (PictureBox). La diferencia principal radica en que este control puede reducir el
tamaño de la imagen para adaptarlo al tamaño del control, lo que no sucede con el control
PictoreBox. Para ello; ya sea en tiempo de diseño o de ejecución, establezca la propiedad Stretch
a True (verdadero) antes de cargar la imagen. Para cargar la imagen en tiempo de diseño utilice la
propiedad Picture y en tiempo de ejecución utilice la secuencia:
Set Imagen.Picture=LoadPicture(Ruta)

Donde, imagen es el nombre del control y Ruta es una cadena de texto con la ruta a la
imagen que desea mostrar.
Si la imagen es pequeña y la propiedad Stretch es True (verdadera), la imagen pierde
calidad al adaptarse al tamaño del control.
Si la propiedad Stretch esta establecida a False (Falso) el control cambia de tamaño
adaptándose al tamaño de la imagen.

CONTROL DATA: DATOS


Este control se utiliza para visualizar datos que se encuentran dentro de una base de
datos. Ofrece acceso a varios tipos de bases de datos como Excel, Access, FoxPro, dBASE o
incluso Lotus 1-2-3.
Al agregarlo a un formulario puede tener acceso a la base de datos incluso sin escribir
código.
Para utilizar este control mediante un ejemplo se deben seguir los siguientes pasos:

1. Cree un archivo de Excel, rellene las casillas de la siguiente manera, o rellene las
casillas como una base de datos Excel con los datos que prefiera (esto es sólo una
opción):

2. Guarde el Archivo, con un nombre y en una carpeta que pueda recordar.


3. Cree un nuevo proyecto de Visual Basic.
4. Agregue un control Data en la parte inferior del formulario.
5. Active la Ventana de Propiedades del control; para ello, presione un clic sobre el
control Data y luego presione la tecla F4.
6. En la ventana Propiedades, establezca la propiedad Connect a Excel 5.0 si tiene Office
97 o a Excel 8.0 si tiene Office 2000.
7. En esta misma ventana de propiedades, introduzca en la propiedad DatabaseName el
nombre de archivo y la ruta mediante el directorio.
8. En propiedades también, haga referencia en la propiedad RecordSource a Hoja1.
Programación con VB 6.0 Ing. Kelvin Atencio

9. Agregue un cuadro de texto (TextBox) al formulario. Borre el contenido de su propiedad


Text.
10. En la propiedad DataSource del cuadro de texto haga referencia al control Data1.
11. Por último, en la propiedad DataField enlace al campo que desea mostrar en el cuadro
de texto.
12. Puede agregar otros cuadros de texto y repetir los pasos 9 a 11, cambiando la
propiedad DataField en cada uno para mostrar otros datos de la tabla.
13. Ejecute el programa y presione los diferentes botones del control Data1 para
desplazarse en la base de datos.

En el ejemplo anterior sólo se utilizan controles TextBox para mostrar el contenido de la


base de datos. Sin embargo no es el único control que sirve para visualizar una base de datos, de
hecho existen otros controles cuya función principal es mostrar el contenido de una base de datos
en compañía de un control Data de un formulario. Estos controles son DBGrid, DbList y DBCombo.
Estos controles se pueden agregar al cuadro de herramientas, si desplega el cuadro de
Componentes y elige de la lista Microsoft Dat Bound Grid Control 5.0 (para DBGrid) o Miscrosoft
Data Bound List Controls 6.0 (Para DBList y DBCombo).
Nota: La lista de componentes se desplega haciendo clic con el botón secundario del
mouse sobre el cuadro de Herramientas, Ir a la barra de Menú a la opción Proyecto, luego
Componentes, o simplemente presionando la combinación de teclas Control+T.
Cuando se va a utilizar algunos de estos controles, se debe primero colocar el control Data
que hara referecia a la base de datos en sus propiedades en la secuencia: Connect (que define el
tipo de base de datos), DataBaseName (El nombre de la base de datos en el disco duro) y
RecordSource (La tabla de la base de datos).
Se puede rellenar una lista (Controles DBList o DBCombo) con todos los elementos de una
columna de una base de datos, por ejemplo todos los nombres de los clientes de una base de
datos, todos sus ID o cualquier otra columna. Para enlistarlos se deben rellenar las propiedades de
estos controles (DBList y DBCombo) RowSource y ListField, en ese orden.
Con el control DBGrid puede visualizar todo el contenido de una tabla de una base de
datos si conecta mediante la propiedad DataSource. Para agregar elementos en una base de datos
mediante este control en tiempo de ejecución establezca la propiedad AllowAddNew a True
(Verdadero), se agregará una fila al final de la tabla donde puede escribir. Si desea eliminar
registros establezca la propiedad AllowDelete a True (Verdadero). Puede ver otras propiedades,
métodos y eventos de este control si escribe DBGrid en el Examinador de objetos.

CONTROL OLE: CONTENEDOR OLE


El control contenedor OLE, se utiliza para insertar aplicaciones de documentos. Cuando
inserta un control OLE al formulario se desplega la siguiente pantalla:
Programación con VB 6.0 Ing. Kelvin Atencio

De tal manera que se puede crear y agregar un archivo nuevo eligiendo de esta lista el tipo
de archivo con la opción “Crear nuevo” o puede insertar un archivo ya creado mediante la opción
“Crear desde un archivo”. Inserte algunos tipos de archivos nuevos y ya creados desde el
contenedor OLE e interactúe, es muy fácil obtener resultados con este control directamente.

CONTROL MICROSOFT COMMON DIALOG 6.0:

Este control no aparece por defecto en el cuadro de Herramientas, es decir no es un


control intrínseco y debe agregarse mediante la Opción Componentes... que aparece en la Barra
de menú Proyecto – Componentes..., al hacer clic con el botón secundario del mouse sobre el
cuadro de herramientas o simplemente presionando la combinación de teclas (Control + T).
Este control, mediante sus propiedades y métodos, permite mostrar los cuadros de
diálogos comunes que se utilizan en las aplicaciones de Windows. Algunos de estos cuadros de
diálogo son: Abrir, Guardar como, imprimir y otros que se explicarán más detalladamente adelante
en esta sección.
Los métodos de este control son:

Método Cuadro de diálogo que muestra


• Sho Cuadro de diálogo para cambiar Colores
wColor
• Sho Cuadro de diálogo para cambiar Fuente
wFont
• Sho Cuadro de diálogo de Ayuda, mediante el sistema de ayuda de Windows
wHelp
• Sho Cuadro de diálogo para Abrir un Archivo
wOpen
• Sho Cuadro de diálogo para Imprimir
wPrinter
• Sho Cuadro de diálogo para Guardar archivo.
wSave

Estos métodos deben combinarse con algunas de sus propiedades para poder almacenar
datos, abrir documentos o realizar completamente la acción que se desea. Es decir, no basta
mostrar el cuadro de diálogo abrir para abrir un archivo, hace falta algunas propiedades que nos
distingan.
Este control en tiempo de ejecución no es visible, solo puede ver su aplicación en la
aparición de los cuadros de diálogos, en tiempo de diseño este control tiene un tamaño que no se
puede variar.
Las propiedades de este control se encuentran “divididas” según el método, por ejemplo, la
propiedad Filter (que devuelve o establece los filtros que se mostrarán en el cuadro de lista
Archivos de tipo de un cuadro de diálogo) sólo pueden ser utilizados por los métodos Abrir
(ShowOpen) y Guardar (ShowSave) ya que son los únicos cuadros de diálogos que necesitan
especificar un tipo de archivo. De esta manera, se muestran a continuación las diferentes
propiedades del control CommonDialog según los métodos mostrados anteriormente:

Propiedades de los métodos del Control Cuadros de Diálogos Comunes:


Métodos ShowOpen y ShowSave:
Propiedad Filter:
Cuando se muestra el cuadro de diálogo abrir o guardar, en la parte inferior del cuadro de
diálogo aparece una etiqueta que escribe: (Archivos de tipo:). Al su lado aparece un cuadro
combinado que muestra una cierta cantidad de tipos de archivos, si no aparece ningún tipo es
porque todavía no ha establecido la propiedad Filter.
Programación con VB 6.0 Ing. Kelvin Atencio

La propiedad Filter es la propiedad que establece el o los tipos de archivos que se pueden
abrir, o el tipo de archivos que se va a guardar.
Para cambiar la propiedad Filter de un control cuadro de diálogo se utiliza la siguiente
sentencia:

NombreCDialog.Filter="DecripciónTipo1|tipo1|DescripciónTipo2|tipo2"

Hasta completar todos los tipos de archivo posibles que pueden ser usados por la
aplicación. Por ejemplo:
En un formulario agregue un botón de comando (Command1) y un Control Common
Dialog, siguiendo los siguientes pasos:
• Diríjase a Proyecto, haga clic sobre Componentes...
• Espere un momento hasta que aparezca la lista de componentes.
• Busque en la lista Microsoft Common Dialog Control 6.0, active su casilla de verificación.
• Haga clic en Aplicar para agregar al cuadro de herramientas y luego en Cerrar para salir de
la lista.
• Seleccione el control Common Dialog que ahora debe aparecer en el cuadro de
herramientas.
• Dibújelo en el formulario.

Ahora agregue el siguiente código, puede copiar y pegar:

Private Sub Command1_Click()


CommonDialog1.Filter = "Mapa de bits (*.bmp)|*.bmp|Archivos JPG
*.jpg|*.jpg|Archivos Animados (*.gif)|*.gif"
CommonDialog1.FilterIndex=2
CommonDialog1.ShowOpen
End Sub

Ejecute la aplicación, presione un clic sobre el botón de comando, se mostrará el cuadro


de diálogo abrir, el mismo en su parte inferior tiene tres tipos de archivos: mapa de bits, Imagen
JPG y archivos animados GIF. La propiedad FilterIndex se utiliza para presentar el tipo de archivo
predeterminado cuando se muestre el cuadro de diálogo; en este caso el número dos (Archivos de
imagen JPG).

Propiedad FileName:
La propiedad FileName devuelve el nombre del archivo que se ha seleccionado cuando se
utiliza el cuadro de diálogo Abrir. Puede utilizarse también para el cuadro de diálogo guardar.
Para ver un ejemplo de esta propiedad puede ver los programas #27 y 28, donde se
encuentra la aplicación de esta propiedad. Se utiliza de la siguiente manera:
Archivo = NombreCDialog.FileName
Donde Archivo es una variable que almacenará una cadena de texto con la ruta y el
nombre del archivo seleccionado, la parte derecha de la igualdad corresponde al archivo
seleccionado del cuadro de diálogo.

Propiedad FileTitle:
Devuelve o establece el nombre (sin la ruta de acceso) del archivo que se va a abrir o
guardar en tiempo de ejecución.

Método ShowPrinter:
Propiedades:
• Copies: Devuelve o establece un valor que determina el número de copias que se van a
imprimir.
• FromPage: Devuelve o establece el valor que indica la primera página que se va a
imprimir.
Programación con VB 6.0 Ing. Kelvin Atencio

• ToPage: Devuelve o establece el valor que indica la primera página que se va a imprimir.
• Orientation: Devuelve o establece la orientación del papel de la impresora.
• Min: Establece el intervalo de impresión.
• PrinterDefault: Determina si las selecciones de un usuario en cuadro de diálogo Imprimir
se usan para cambiar la configuración predeterminada de la impresora.

Método ShowColor:
Sólo tiene la propiedad Color que devuelve o establece el color seleccionado en el cuadro
de diálogo, por ejemplo:

Private Sub ColorDelCirculo_Click()


Dim ColorCirculo As Variant
CommonDialog1.ShowColor
ColorCirculo = CommonDialog2.Color
Picture1.Circle (X,Y), Radio, ColorCirculo
End Sub

Este código dibuja un círculo en las coordenadas x, y de cualquier radio con el color
seleccionado en el cuadro de diálogo.

Método ShowFont:
Las propiedades del método ShowFont se refieren al tipo de fuente, son las siguientes:

• FontBold: Es un dato tipo boolean que es verdadero si la fuente es negrita,


o falso si no lo es.
• FontItalic: También es un dato tipo boolean que es verdadero para
producir fuentes cursivas.
• FontUnderLine: Es tipo boolean al que se asigna verdadero para producir
fuentes subrayadas.
• FontName: Es una cadena de texto que contiene el nombre del tipo de
fuente a utilizar. Ejemplo: Arial, Times New Roman u otras.
• FontSize: Es un dato tipo Single que asigna un valor de tamaño (en
puntos) a la fuente.
• FontStrikeThru: También es un dato tipo boolean que es verdadero para
producir fuentes tachadas.

Método ShowHelp:
• HelpCommand: Devuelve o establece el tipo de Ayuda en pantalla
solicitada.
• HelpContext: Devuelve o establece el Id de contexto para el tema de
Ayuda solicitado.
• HelpFile: Devuelve o establece el nombre del archivo de Ayuda asociado
con el proyecto.
• HelpKey: Devuelve o establece la palabra clave que identifica el tema de
Ayuda solicitado.
Programación con VB 6.0 Ing. Kelvin Atencio

5. VARIABLES, TIPOS DE DATOS Y CONSTANTES:


• Variables:
Durante la creación de una aplicación en VB 6.0, puede que necesite almacenar
temporalmente valores numéricos, cadenas de texto u otro tipo de dato y luego poder cambiarlos
operando con ellos, hacer cálculos o mostrar resultados; para este fin se utilizan las variables.
Las variables utilizan un nombre para identificarse en el código, este nombre almacena un
tipo de dato mediante la utilización de un operador de asignación (signo igual =) y se puede
cambiar operando con ellos ya sea sumando o multiplicando valores (cualquier función
matemática) o agregando caracteres a una cadena de texto (para el caso de cadenas de texto).

Ejemplo:
Variable1 = 45
Variable2 = "Cadena de Texto"

Aquí, Variable1 es el nombre de la variable, luego se presenta el signo igual de asignación


y luego 45 que es el dato que desea almacenarse. El ejemplo de la Variable2 almacena una
cadena de texto, se identifica por estar encerrada entre comillas. Un ejemplo de operaciones con
variables sería:

Variable1 = 45
Variable2 = 30
Variable1 = Variable1 + Variable2

En este caso es muy importante resaltar que, la tercera línea de instrucción el signo igual
no representa una ecuación de igualdad sino una asignación. La primera línea asigna el valor 45 a
Variable1, en la segunda línea se asigna 30 a la Variable2. En la tercera línea se realiza una
operación de suma (Variable1+ Variable2 = 45+30 ) que se asigna a Variable1, por ello el valor de
Variable1 cambia de 45 a 75. En este caso se pudo utilizar una Variable3 que guardara el valor de
la suma, pero de la forma como se desarrolló permitió la economía de memoria ya que utilizó una
variable menos.

• Declarar variables:
Para declarar variables se utiliza la Sentencia:

Dim Variable [As Tipo]

Donde, Dim le dice al programa que cree una nueva variable con el nombre Variable, y [As
Tipo] es opcional y declara el tipo de dato que se desea almacenar, sino se coloca el programa
crea una variable tipo Variant (ver más delante de que se trata). Por ejemplo: Dim MiCadena As
String, prepara una variable de nombre MiCadena para almacenar cadenas de texto.

Las variables una vez declaradas no distingue entre mayúsculas y minúsculas, es decir si
se declaró la variable con nombre MiCadena, cuando se escriba micadena, Micadena, miCadena u
otro nombre con otras mayúsculas y minúsculas, el programa cambiará el nombre colocando
MiCadena, que es el nombre original, es decir, aunque cambie mayúsculas y minúsculas será la
misma variable.

Nombres de variables permitidos:


Como ya se dijo, las variables deben tener un nombre. Se debe elegir un nombre que siga
las siguientes reglas:
• No puede empezar por un número, mas bien, debe empezar por una letra
(mayúscula o minúscula)
• No puede tener más de 255 caracteres.
Programación con VB 6.0 Ing. Kelvin Atencio

• No puede ser igual a una palabra clave de Visual Basic. No puede ser por ejemplo
Dim, If, Then, For, String, etc.
• No puede incluir caracteres especiales como asterisco, punto, signo de admiración
o interrogación, u otros.
• Pueden tener el mismo nombre siempre y cuando estén en procedimientos
diferentes.

Si declara una variable dentro de un procedimiento, una vez terminada la secuencia del
procedimiento, se perderá el valor de la misma, para evitar esto se deberá declarar la variables de
forma:
Static Variable [As Tipo]

Esto permitirá que se preserve el valor de la variable cuando se termine el procedimiento, y


cuando se vuelva a llamar al procedimiento la variable tendrá el último valor asignado a ella.

Hay variables que se necesitan que puedan modificarse desde diferentes procedimientos
para esto, se debe declarar las variables en la sección de declaraciones del formulario (líneas
superiores del código del formulario) de la siguiente forma:

Public Variable [As Tipo] , o también


Dim Variable [As Tipo]

Dos variables de procedimientos separados pueden tener un mismo nombre y no serán la


misma variable.

Programa #12. Contadores de Variables:


El siguiente programa tiene por finalidad relacionarse con distintos tipos de variables. Para
ello, se deben agregar dos botones de comando y cuatro etiquetas a un formulario. Luego, se debe
escribir el siguiente código o copie y pegue:

Option Explicit
Public Variable As Integer

Private Sub Command1_Click()


Dim Variable1 As Integer
Static Variable2 As Integer
Variable1 = Variable1 + 1
Variable2 = Variable2 + 1
Variable = Variable + 1
Label1 = Variable1
Label2 = Variable2
Label4 = Variable
End Sub

Private Sub Command2_Click()


Static Variable2 As Integer
Variable2 = Variable2 + 1
Variable = Variable + 1
Label3 = Variable2
Label4 = Variable
End Sub

Ejecute el programa e interactúe con el haciendo clic sobre los botones. Verifique como
varían los valores de las variables cada vez que presiona uno de ellos.
Para obtener una información detallada sobre la codificación del programa diríjase a la
Sección Detallada de Programas.
Programación con VB 6.0 Ing. Kelvin Atencio

Pero si existe una variable declarada en la sección pública y una variable en un


procedimiento privado, VB 6.0 hará referencia a la variable mas inmediata, es decir, a la variable
del procedimiento mas interno.

Tipos de Datos:
Una buena selección de la variable dentro de un programa promueve un ahorro de
memoria, por lo que se recomienda que se seleccione el tipo adecuado para almacenar los datos
que se desean. Los tipos de datos son los siguientes:
• Boolean: Almacena un valor que puede tomar dos opciones: verdadero (True) o
Falso (False). Un ejemplo de este tipo de dato es la propiedad visible de algunos
controles. Ocupa un espacio en la memoria de 2 bytes.
• Byte: Puede almacenar un número natural que puede estar entre 0 y 255. No
acepta valores negativos. Puede ser utilizado por ejemplo para almacenar edades,
los números de meses del año o los días del mes, etc. Si se realiza una suma o
restan dos números Bytes, el resultado debe ser Byte, debe estar entre 0 y 255, si
no, el programa genera un error de desbordamiento. Ocupa un espacio de 1 byte.
• Integer: Puede almacenar valores enteros desde –32.768 hasta 32.767. Ocupa en
la memoria 2 bytes.
• Long: También puede almacenar valores enteros, pero en este caso tiene una
extensión más grande ya que almacena números entre –2.147.483.648 hasta
2.147.483.647. Ocupa en la memoria 4 bytes.
• Single: Puede almacenar valores numéricos con decimales, tanto negativos como
positivos, es de precisión simple, su rango está entre –1,401298x10-45 hasta
+1,401298x1045. Ocupa en la memoria 4 bytes.
• Double: También puede almacenar valores numéricos con decimales, negativos y
positivos, pero por tener más memoria asignada puede tener valores de precisión
doble, van desde –4,94065645841247x10-324 hasta 1,79769313486232x10308.
ocupa en la memoria 8 bytes.
• Currency: Este tipo de dato se utiliza para almacenar valores numéricos
monetarios, su rango va desde –922.337.203.685.477,5808 hasta el
922.337.203.685.477,5807.
• String: Se utiliza para almacenar cadenas de texto. Puede tener una longitud fija si
se declara: Dim Variable As String * Longitud, donde longitud es un
número entero que indica el número de caracteres que va a tener la variable. Si
cuando se introduce una cadena, ésta tiene la longitud menor a la cantidad dada
por Longitud, entonces el programa los rellena con espacios en blanco, si la
cantidad de caracteres es mayor entonces se recortará. Ocupa en la memoria de
acuerdo al número de caracteres que contenga (1 byte por carácter).
• Date: Este tipo de dato puede almacenar valores de fechas y horas. Su rango va
para las fechas desde 1/1/100 hasta el 31/12/9999 y para las horas desde 0:00:00
hasta 23:59:59.
• Variant: Este tipo de dato es el que mas memoria consume (16 bytes), pero tiene
una ventaja sobre los otros y es que puede almacenar cualquiera de los tipos de
datos descritos anteriormente, incluso puede cambiar de una cadena a un número,
después guardar una fecha o cualquier otro tipo de dato. Las variables tipo variant
no son declaradas necesariamente puede escribir Dim Variable y VB
reconocerá como si hubiese escrito Dim Variable As Variant.
• Estructuras: Se utiliza para crear un solo tipo de dato (personalizados)
combinando los distintos tipos básicos vistos anteriormente. Estas se explicarán
más adelante en esta misma sección. Su espacio en la memoria es variable de
acuerdo al tipo de datos que combine.
Programación con VB 6.0 Ing. Kelvin Atencio

Para declarar una variable a un tipo de dato se declara:

Public/Private/Dim/Static Variable [As Tipo]

Ejemplos de algunos serían:


Dim MiNumero As Double
Crea una variable de tipo precisión doble con nombre MiNumero

Public Cadena As String * 8


Crea una variable de tipo cadena de 8 caracteres de nombre Cadena

Static Valor As Integer


Crea una variable de tipo entero de nombre Valor que preservará su valor

Dim Variable
Crea una variable tipo variante de nombre Variable

Existen funciones que convierten un tipo de dato a otro: las funciones de conversión son:

Función Convierte a:
Cbool(expresión) Boolean
Cbyte(expresión) Byte
Ccur(expresión) Currency
Cdate(expresión) Date
CDbl(expresión) Double
Cint(expresión) Integer
CLng(expresión) Long
CSng(expresión) Single
CStr(expresión) Strng
Cvar(expresión) Variant

Por ejemplo la sentencia CStr(45125) almacena 45125 como una cadena de texto y no
como un valor numérico.

Programa #13. Conversión de datos:


Agregue un botón de comando (Command1) y un cuadro de texto (Text1) a un formulario.
Agregue el siguiente código o copie y pegue:

Private Sub Command1_Click()


Dim Mi As Integer
Text1 = CInt(Text1)
Text1 = Text1
End Sub

Private Sub Form_Activate()


Text1.SetFocus
End Sub

Private Sub Form_Load()


Form1.Caption = "Introduzca un valor"
Text1 = ""
Command1.Caption = "Convertir"
End Sub
Programación con VB 6.0 Ing. Kelvin Atencio

Ejecute el programa en Iniciar y en el cuadro de texto agregue un valor con decimales, el


programa lo convertirá a entero.
Como ya los comandos e instrucciones que se encuentran en este programa ya han sido
explicados este programa no se detalla en la Sección Detallada de Programas.
Estructuras:
Las estructuras se utilizan para crear un solo tipo combinando los tipos básicos, se
denotan:
Type Nombre
SubVariable1 As Tipo
SubVariable2 As Tipo
...
End Type

Donde Nombre es el nombre de la estructura que grabará un conjunto de datos.


SubVariable1, SubVariable2 son sub-variables que componen la estructura.

Para crear una variable de este tipo de dato se procede del mismo tipo como si estuviera
creando una variable de tipo Nombre:
Public Variable As Nombre

Ahora, para acceder o asignar cada sub-variable del conjunto se escribe:

Variable.SubVariable1 = Valor1
Variable.SubVariable2 = Valor2

Así por ejemplo la siguiente secuencia:

Type Alumnos
Nombre As String
Edad As Byte
Grado As Byte
End Type

Crea un tipo de dato que graba el nombre, edad y grado de un alumno, luego se colocará:

Public Alumno As Alumnos


Alumno.Nombre = "Carlos Bravo"
Alumno.Edad = 16
Alumno.Grado = 8
Text1.text = Alumno.Edad

Constantes:
Una constante es un valor que por si sólo puede ser difícil de recordar y por lo tanto se le
asigna un nombre para trabajar con el nombre y no con el valor. Existen constantes que están
intrínsecas en el lenguaje de programación como por ejemplo FillStyleConstants, que contienen
un diverso conjunto de constantes que pueden ser utilizadas para cambiar el estilo del, relleno a un
objeto.
Pero, en VB 6.0, puede crear sus propias constantes anteponiendo la palabra Const al
nombre de la constante que desea crear, agregar el símbolo igual (=) y luego el valor, de tal
manera quedaría:

Const Nombre = Valor


Como ejemplo, podría ser el aplicado en el programa del control de cuadro de imagen
(PictureBox):
Const Pi = 3.1415927
Programación con VB 6.0 Ing. Kelvin Atencio

O también:
Const LineasCruzadas = vbCross

Luego, puede llamar a la constante de igual manera que se llamaría a una variable, pero
en este caso no se puede cambiar el valor asignado, si se intentara cambiar el programa mostraría
un error de compilación.

Por ejemplo, agregue en un formulario un botón de comando (Command1) y un cuadro de


imagen (Picture1), escriba el siguiente código o copie y pegue:

Private Sub Command1_Click()


Const LineasCruzadas = vbCross
Picture1.FillStyle = LineasCruzadas
Picture1.Circle (1000, 1000), 400
End Sub

Así, si se escribe LineasCruzadas en la propiedad FillStyle, ésta llama a su contenido que


es la constante intrínseca vbCross que pertenece a las constantes de estilos de relleno, se
rellenará en el circulo del cuadro de imagen con líneas cruzadas.

Ahora si por ejemplo, agrega un botón de comando (Command1) a un formulario y escribe


el siguiente código:

Private Sub Command1_Click()


Const e = 2.71828
Command1.Caption = e
End Sub

Se escribirá en el botón de comando la constante e.


Programación con VB 6.0 Ing. Kelvin Atencio

6. MATRICES:
Las matrices permiten crear variables con un mismo nombre diferenciándose sólo por un
número de índice. Los elementos de las matrices están entre un índice inicial y un índice final, los
índices de los elementos de la matriz deben estar dentro de estos índices.
Las matrices almacenan todos sus elementos en un mismo tipo de dato, este tipo de dato
fue declarado al mismo tiempo que fue declarado la matriz. Las matrices pueden ser de tamaño fijo
o dinámicas (que pueden cambiar de tamaño).

Para declarar una matriz de tamaño fijo se utiliza la siguiente secuencia:

Dim/Public/Static/Private NombreMatriz(NúmerodeElementos) As Tipo

Los índices de las matrices comienzan a enumerarse desde cero por lo tanto el número al
lado de la matriz sumado en uno es el número de elementos que contiene la matriz. Por lo tanto:

Dim MiMatriz(10) As String

Crea una matriz de nombre MiMatriz de 11 elementos de tipo cadena de texto. Con
números de índice entre 0 y 10. Si se desea que sólo contenga 10 elementos tendrá que
declararse:

Dim MiMatriz(1 To 10) As String

En este caso los índices van desde 1 hasta 10.


El número de elementos no puede exceder de la capacidad de un dato Long
(2.147.483.647 elementos)

También puede declarar matrices con números de índices entre dos valores diferentes por
ejemplo:

Public k(10 To 19) As Integer

De esta manera puede variar los números de índice entre dos valores Tipo Long diferentes.

Para almacenar un valor en un elemento de la matriz de procede de la siguiente manera:

Matriz(Índice) = Valor

De la misma manera que se asigna un valor a una variable, pero esta vez contiene dentro
del paréntesis el número de índice correspondiente.

De manera que:

Dim i As Integer
Dim K(9) As Integer
For i = 0 To 9
K(i)=i
Next
Almacena el número de índice en su variable correspondiente.
También se pueden crear matrices multidimensionales si separa con una coma los valores
de índices de la siguiente manera:

Static OtraMatriz(4, 4) As Double


Programación con VB 6.0 Ing. Kelvin Atencio

Esta sentencia creará una matriz de 25 elementos, de 0 a 4 (cinco elementos) en el primer


índice e igual número de elementos para el segundo índice.

Al igual que las matrices unidimensionales puede cambiar la numeración de sus índices
como valores de tipo Long. Ejemplo:

Dim MatrizDimensional(1 To 5, 10 To 13) As Single

De esta manera se creará una matriz de dos dimensiones de 20 elementos. (De uno hasta
cinco en el primer índice y de diez hasta trece en el segundo índice)

Puede agregar más dimensiones y crear matrices de tres dimensiones, cuatro o mas
dimensiones.

Se puede cambiar mediante una instrucción, que debe colocarse en la sección de


declaraciones del formulario, para que todas las matrices comiencen a enumerarse desde el
número 1 o desde el número cero, esta es:

Option Base 1
Para que se comience a enumerar desde uno o,

Option Base 0
Para enumerarse desde el número cero.

Matrices Dinámicas:
Las matrices vistas anteriormente son estáticas, ya que el número de elementos no puede
variar, esto puede ocasionar que el número de elementos no sea suficiente para algunas acciones
o por el contrario que esté sobredimensionado.
Para este caso se crearon la matrices dinámicas, estas se declaran de la misma forma que
las matrices dinámicas pero sin nada en los paréntesis, de la siguiente manera:

Dim/Public/Static/Private NombreMatrizDinámica() As Tipo

Luego, en tiempo de ejecución, cuando ya se esté seguro del número de elementos que
necesite, se puede redimensionar, con la siguiente sentencia:

Redim [Preserve] NombrematrizDinámica(NúmerodeElementos)

Cada vez que redimensione la matriz se borrarán todos los elementos que estaban
almacenados en la matriz, esto es muy útil si desea utilizar la matriz para almacenar valores
nuevos, pero sino, esto se puede evitar si se coloca la palabra Preserve. Esta sentencia preservará
los valores almacenados en la matriz hasta ese momento.
Redim sólo se puede usar una vez por función o por procedimiento.
Aunque se puede redimensionar el número de elementos que tiene una matriz no se puede
cambiar el número de dimensiones.
Para ampliar la matriz en un elemento preservando los valores de los elementos que ella
contiene se puede utilizar la palabra UBound de la siguiente manera:

Redim Preserve NombreMatriz(UBound(NombreMatriz)+1)

Sólo se puede cambiar la última dimensión de una matriz, si se intenta cambiar otra
dimensión se producirá un error en tiempo de ejecución.
Programación con VB 6.0 Ing. Kelvin Atencio

7. OPERADORES LÓGICOS, OPERADORES MATEMÁTICOS


Y FUNCIONES MATEMÁTICAS:

Los operadores lógicos son símbolos (algunos matemáticos) que se utilizan para crear
condiciones y bucles. El computador toma decisiones (mediante las sentencias de control que se
verán mas adelante) según estas condiciones devuelvan verdadero o falso. Los operadores lógicos
son:

Operador Símbolo
Igual =
Diferente <>
Igual (en texto) Like
Menor que <
Mayor que >
Menor o igual que <=
Mayor o igual que >=
Negación Not

Así por ejemplo:

Condición Devuelve:
30 = 12 Falso
12 <> 30 Verdadero
30 < 12 Falso
Not 12 > 30 Verdadero

También existen conexiones de condiciones y devuelven verdadero o falso según la


combinación de dos condiciones, estas son:

• Or: Devuelve Verdadero si alguna de las condiciones es verdadera.


• And: Devuelve Verdadero si las condiciones comparadas son verdaderas.
• XOr: Devuelve Verdadero si una devuelve Verdadero y la otra Falso.
• Eqv: Devuelve verdadero si las condiciones comparadas son equivalentes, es
decir, si son ambas verdaderas o falsas.
• Imp: Devuelve verdadero en todos los casos, excepto cuando la primera sea
verdadera y la segunda falsa.

Así por ejemplo:


Si X = 3 y
V=2
Condición Devuelve:
X = 2 Or V = 2 Verdadero
X = 3 And V < 1 Falso
X <= 3 Xor V = 1 Verdadero
X = 2 Eqv V > 3 Verdadero
X = 3 Eqv V = 4 Falso
X = 3 Imp V = 2 Falso

Se pueden colocar mas de una combinación y así anidar condiciones que también
devolverán verdadero o falso:
Condición Devuelve:
Programación con VB 6.0 Ing. Kelvin Atencio

X = 2 Or X = 3 And V = 1 Or V = 2 Verdadero
X = 2 And V = 3 Or X = 1 And V = 2 Falso
Operadores Matemáticos y Funciones Matemáticas:
VB 6.0 contiene un conjunto de operadores matemáticos que se utilizan para hacer
cálculos numéricos, algunos de ellos son:

Operadores Matemáticos Operación


+ Suma de números: Ejemplo (2 + 4) devuelve 6.
- Sustracción de números o número negativo.
Ejemplo: (30 – 15) devuelve 15.
* Multiplicación de números. Ejemplo (2 * 5)
devuelve 10.
/ División de números. Ejemplo (10 / 3) devuelve
3.3333.
\ División entera de números: Ejemplo 10\3
devuelve 3.
^ Potencia de números. Ejemplo 11^2 devuelve
121.
Mod Residuo de una división. Ejemplo (100 Mod 9)
devuelve 1.
Funciones Matemáticas Operación
Abs(Numero) Valor absoluto de un número. Ejemplo
Abs(-45) devuelve 45.
Atn(Numero) Arcotangente de un número. Ejemplo Atn(1)
devuelve 0.7854.
Cos(Numero) Coseno de un número radian: Ejemplo
Cos(3.14159265) devuelve –1.
Exp(Numero) E elevada a un número. Ejemplo Exp(1)
devuelve 2.71828.
Fix(Numero) Parte entera de un número. Ejemplo Fix(4.5)
devuelve 4.
Log(Numero) Logaritmo natural de un número: Ejemplo
Log(2.71828) devuelve 1.
Log(Numero)/Log(Base#) Logaritmo con base distinta de e. Ejemplo
Log(100)/Log(10#) devuelve 2, o Log(8)/log(2#)
devuelve 3.
Ramdomize([Numero]) Inicia generador de números aleatorios.
Rnd([Numero]) Número aleatorio igual o menor a Numero.
Round(Numero, Decimales) Numero redondeado a decimales. Ejemplo
Round(2.54512, 2) devuelve 2.55.
Sgn(Numero) -1, 0, 1 según número sea menor, igual o mayor
que cero. Ejemplo Sgn(-45) devuelve –1.
Sin(Numero) Seno de un número radian. Ejemplo
Sin(1.570796) devuelve 1.
Sqr(Numero) Raíz cuadrada de un número. Ejemplo Sqr(16)
devuelve 4.
Tan(Numero) Tangente de un número radian. Ejemplo:
Tan(0) devuelve cero.
Programación con VB 6.0 Ing. Kelvin Atencio

8. PROCEDIMIENTOS Y FUNCIONES:
Procedimientos:
Los procedimientos contienen conjunto de acciones o secuencias de código que ejecuta la
aplicación. Estos procedimientos pueden ser llamados desde cualquier lugar de un formulario o sin
son públicos desde cualquier lugar de la aplicación.
Los procedimientos pueden simplificar la codificación cuando existe una secuencia de
código que se debe repetir. Con el nombre del procedimiento puede llamar a este conjunto de
secuencias.
Supongamos que se tienen dos procedimientos: el principal de nombre Procedimiento1 y el
secundario de nombre Procedimiento2. Si en algún lugar de Procedimiento1 se llama a
Procedimiento2, desde este lugar, el programa comienza a ejecutar el conjunto de secuencias de
Procedimiento2, luego terminado este procedimiento el programa continua ejecutando las
secuencias de Procedimiento1 hasta completar la secuencia.
Las variables privadas de un procedimiento no se conservan cuando se ejecute el otro
procedimiento, si las variables son públicas (declaradas en la sección superior del código del
formulario bajo la sentencia Public) si conservan su valor.

Programa #14. Variables de procedimientos:


Se va a crear un programa que calcula el área de un círculo dado su radio. Para ello se
debe agregar, de arriba hacia abajo, una etiqueta con Caption: “Radio= “ al lado de un cuadro de
texto (Text1), debajo de estos controles agregue un botón de comando (Command1), luego debajo
de éste dos etiquetas Label2 y Label3.
Agregue el siguiente código (puede copiar y pegar):

Option Explicit
Public Area As Double

Private Sub Form_Load()


Me.Caption = "Area de un Círculo"
Text1 = ""
Command1.Caption = "Calcular Area"
Label2 = ""
Label3 = ""
Label2.BorderStyle = 1
Label3.BorderStyle = 1
End Sub

Private Sub Command1_Click()


Dim Radio As Double, Area As Double
If Text1 <> "" And IsNumeric(Text1) Then
Radio = CDbl(Text1)
Area = 3.16159265 * Radio ^ 2
Label2 = "Area= " & Area
Display
Else
MsgBox "Introduzca un valor"
Text1.SetFocus
End If
End Sub

Private Sub Display()


Label3 = "Area= " & Area
End Sub
Programación con VB 6.0 Ing. Kelvin Atencio

Ejecute el programa introduzca un valor u otro contenido en el cuadro de texto y verifique


la respuesta. El procedimiento Display (al final) desplega resultado cero ya que hace referencia a la
variable Area pública (que no tiene ningún valor asignado) y no la variable Area privada que se
encuentra en el procedimiento de evento Command1_click.
Para obtener detalles sobre la codificación de este programa se puede dirigir a la Sección
Detallada de Programas al final de este trabajo de investigación.
Para ver otro ejemplo de llamadas a procedimientos puede ver el Programa #5. ¿Dónde
estudiar?, donde se presentan dos variables públicas que conservan su valor fuera de los
procedimientos. También puede dirigirse a sus Detalles en la Sección Detallada de Programas.

En VB 6.0 existen tres tipos de procedimientos:


• Sub
• Function
• Property

Los primeros sólo ejecutan una serie de sentencias y comandos y no devuelven un valor.
Los segundos contienen una función dentro de sí que devuelven un valor al llamarlos.
Los terceros pueden devolver o asignar valores.

Para crear un nuevo procedimiento, se puede ir en la Barra de Menús de VB a


Herramientas, luego hacer clic en Agregar procedimiento tal como lo muestra la figura:

Se desplegará la siguiente pantalla:

En esta se deberá colocar el nombre del procedimiento, el Tipo (Sub = Procedimiento;


Function = Función ; Property = Propiedad o un Evento) y el alcance en caso del procedimiento
(Público o Privado) si es una función después deberá colocar el tipo de dato que devolverá la
función, si no lo coloca este tomará Variant por defecto.

Como se han visto ejemplos de procedimientos Sub, se procede a ejemplificar el


procedimiento Function.
Programación con VB 6.0 Ing. Kelvin Atencio

Programa#15. Procedimiento Function:


Este programa tiene como finalidad mostrar la aplicación de los procedimientos Function.
Para ello, agregue dos cuadros de texto (Text1 y Text2) al formulario, agregue además un botón de
comando (Command1) y una etiqueta (Label1), Después agregue el siguiente código (puede copiar
y pegar):

Option Explicit
Private Sub Form_Load()
Text1 = ""
Text2 = ""
Command1.Caption = "Calcular Residuo"
Label1 = ""
End Sub

Private Sub Command1_Click()


If IsNumeric(Text1) And IsNumeric(Text2) Then
Label1 = Residuo(Text1, Text2)
Else
MsgBox "Introduzca valores numéricos"
Text1.SetFocus
End If
End Sub

Private Function Residuo(Dividendo As Integer, Divisor As Integer) _


As Integer
Residuo = Dividendo Mod Divisor
End Function

Se puede notar que la función disminuyó considerablemente las instrucciones que debían
colocarse en la secuencia de Command1. De hecho, no fue necesario declarar variables. Los
detalles de la programación aparecen en la Sección Detallada de Programas.
Programación con VB 6.0 Ing. Kelvin Atencio

9. SENTENCIAS DE CONTROL
Las sentencias de control se utilizan en VB 6.0 para que el programa lleve un curso lógico
y tome decisiones en base a condiciones que se puedan presentar mientras éste se ejecuta.
Como ya se ha visto anteriormente, las condiciones pueden devolver dos posibilidades en
una decisión, puede devolver verdadero (True) o Falso (False); así puede llevar el programa a
ejecutar una serie de instrucciones de acuerdo a una respuesta, para ello se utilizan las estructuras
de decisión.

LAS ESTRUCTURAS DE DECISIÓN SON:


• If ... Then ...
• Select Case ...

Estructura de decisión If ... Then ...


Este tipo de estructura (que ya ha sido utilizado en varios programas anteriores) ejecuta
una serie de instrucciones, en base a una respuesta a una condición. Tiene la siguiente forma:

If condición Then
Instrucciones si condición es verdadera
[Else]
Instrucciones si condición es falsa
End If

Donde la condición reúne las especificaciones descritas en la sección anterior que


devuelve verdadero o falso, entre la palabra Then y Else (si se coloca Else) se escriben una serie
de instrucciones que se ejecutan si la condición devuelve verdadero. Entre Else y End If, se
colocan las instrucciones en caso de que la instrucción devuelve Falso.
La palabra Else no es obligatoria, si no se coloca en caso de que la condición sea falsa no
hay ejecución de instrucciones. Quedando de la siguiente forma:

If condición Then
Instrucciones si condición es verdadera
End If

También es posible que se encuentre el caso de que haya mas de una condición que se
desea comparar, así por ejemplo, si se cumple una condición se ejecutan una serie de
instrucciones, en caso de que sea falso talvez se desee comparar otra condición y verificar si es
verdadera, así sucesivamente hasta encontrar la condición que se cumple, para esto se utiliza la
siguiente secuencia:

If condición1 Then
Instrucciones si condición1 es verdadera
[ElseIf condición2 Then]
[Instrucciones si condición2 es verdadera]
[ElseIf condición3 Then]
[Instrucciones si condición3 es verdadera]
...
[Else]
[Instrucciones si todas las condiciones son falsas]
End If

Puede agregar cualquier cantidad de ElseIf tantas veces como quiera hasta lograr el
objetivo de alcanzar la secuencia que se quiere ejecutar según la condición. Cuando ya una
condición se cumple se ejecutan las instrucciones que están dentro de esta condición y al terminar
la secuencia se va hasta el final
Programación con VB 6.0 Ing. Kelvin Atencio

Esta secuencia es muy valiosa si las condiciones no incluyen la misma variable o incluyen
más de una variable. Ya que si desea comparar una variable es más fácil utilizar la secuencia
Select Case.

Programa #16. Instrucción If:


El siguiente programa tiene la finalidad de utilizar la instrucción If en todos la mayoría de
los casos que se pueda presentar durante la codificación de un programa.
Agregue a un formulario un cuadro de texto (Text1) y un botón de comando (Command1) y
escriba el siguiente código, puede copiar y pegar:

Private Sub Form_Load()


Text1 = ""
Command1.Caption = "Comparar"
End Sub

Private Sub Command1_Click()


Dim Valor As Double, Respuesta As String
If Text1 = "" Then
Valor = 0
Else
Valor = CDbl(Text1)
End If
If Valor < 0 Then
Respuesta = "El Valor es negativo"
ElseIf Valor = 0 Then
Respuesta = "El Valor es cero"
Else
Respuesta = "El Valor es positivo"
End If
Text1 = Respuesta
End Sub

Ejecute la aplicación e introduzca un valor numérico en el cuadro de texto. Luego haga clic
en el botón de comando y espere la respuesta.
Si tiene alguna duda sobre la codificación de este programa puede repasar la explicación
de la estructura de decisión If, y verificar los detalles sobre la función de dicha estructura.

Estructura de decisión Select Case...


La estructura Select Case se utiliza si desea comparar una sola variable a un conjunto de
condiciones y ejecutar la secuencia según el caso que se cumpla. El caso del programa anterior
pudo utilizar esta estructura. Select Case tiene la siguiente forma:

Select Case Variable


Case Valor1: instrucciones si Variable es igual a Valor1
Case Valor2, Valor3: instrucciones si Variable es Valor2 o Valor3.
Case Is < Valor4: instrucciones si Variable es menor a valor4.
Case Valor5 To Valor6: instrucciones si Variable está entre Valor5
y Valor6
End Select

Esta explicación se encuentran las cuatro combinaciones posibles de casos que se pueden
presentar. En la sección que muestra Case Is, se puede colocar menor o igual (<=) , menor (<),
mayor (>) o mayor o igual (>=) y hacer la comparación de la variable respecto a un valor.

El programa #16 podría colocarse entonces como código:


Programación con VB 6.0 Ing. Kelvin Atencio

Private Sub Form_Load()


Text1 = ""
Command1.Caption = "Comparar"
End Sub

Private Sub Command1_Click()


Dim Valor As Double, Respuesta As String
If Text1 = "" Then
Valor = 0
Else
Valor = CDbl(Text1)
End If
Select Case Valor
Case Is<0: Respuesta="El valor es negativo"
Case 0: Respuesta="El valor es cero"
Case Else: "El valor es positivo"
End Select
Text1=Respuesta
End Sub
Reduciendo el número de líneas y las complicaciones de la codificación.
Existe otro tipo de estructuras llamadas estructuras de bucles, ejecutan las instrucciones
repetidamente, mientras o hasta que se cumpla una condición.

LAS ESTRUCTURAS DE BUCLES SON:


• Do ... Loop
• For ... Next
• For Each ... Next

El bucle Do ... Loop:


Este bucle utiliza dos formas básicas (aunque se pueden colocar de distinta manera) para
ejecutar un conjunto de instrucciones mientras o hasta se cumpla una condición.

La siguiente instrucción:

Do While condicion
Sentencias
[Exit Do]
Loop

Se utiliza para realizar el conjunto de instrucciones mientras se cumpla una condición, así,
si la condición devuelve verdadero (True) o distinto de cero, se ejecutan el conjunto de
instrucciones, luego se regresa al inicio y se vuelve a verificar la condición, si es verdadera de
nuevo o distinta de cero, se vuelve a ejecutar la secuencia hasta que la condición devuelva Falso o
cero.
Este bucle se puede escribir mas rápidamente de la siguiente manera:

While condidion
Sentencias
Wend

Este caso no tiene la opción de salir del bucle si se deseara.


Si la condición devuelve Falso o cero en la primera evaluación no se ejecutará ninguna
vez, a menos que se coloque de la siguiente forma:

Do
Programación con VB 6.0 Ing. Kelvin Atencio

Sentencias
[Exit Do]
Loop While condicion

De esta forma se ejecuta primero el conjunto de instrucciones y luego se evalúa la


condición. Se repetirá la ejecución de acuerdo a la respuesta obtenida en la condición de acuerdo
a lo señalado anteriormente.

También se puede cambiar la estructura Do ... Loop de tal manera que se ejecute el
conjunto de instrucciones cuando la condición devuelva Falso o cero, para ello se debe cambiar la
palabra While de la instrucción por la palabra Until. De tal manera quedaría:

Do Until condicion O bien: Do


Sentencias Sentencias
[Exit Do] [Exit Do]
Loop Loop Until condicion

Programa #17. Suma hasta cien:


El siguiente programa desplega (cuando se hace clic en el botón de comando) una caja de
entrada para obtener un valor que se sumará. Cuando la suma tome el valor 100 o mayor el
proceso se detendrá:

Agregue un botón de comando (Command1) y una etiqueta (Label1) a un formulario,


escriba el siguiente código, puede copiar y pegar:

Private Sub Command1_Click()


Static Suma As Double
Do While Suma < 100
Num = InputBox("Escriba un número", "Mensaje", "0")
Suma = Suma + Num
Label1 = Suma
Loop
End Sub

Ejecute la aplicación e interactúe colocando valores hasta llegar hasta 100, verifique que
se detiene el proceso.
Este programa no se colocó en la Sección detallada de Programas ya que es de fácil
comprensión y muchos de los procesos utilizados ya han sido ampliamente explicados.

El bucle For ... Next:


El bucle For ... Next se utiliza para ejecutar un número determinado de veces el conjunto
de instrucciones que contiene. Tiene la siguiente forma:

For Variable = ValorInicial To ValorFinal [Step ValorIncremento]


Sentencias
[Exit For]
Next [Variable]

Donde variable es una variable que va a cambiar desde un valor inicial a un valor final, con
un incremento dado por Step (opcional). Exit For se puede utilizar en alguna parte del interior de
las sentencias si se desea dar fin al bucle.
El valor incremento puede ser positivo, para ir incrementando la variable o negativo para ir
disminuyendo, lógicamente si es positivo el valor inicial debe ser menor al valor final o si es
negativo el valor inicial debe ser mayor al valor final. Si no se coloca el incremento (Step) este
asumirá uno a menos que la variable cambie dentro de las sentencias.
Programación con VB 6.0 Ing. Kelvin Atencio

Programa #18. Utilización de For:


En un formulario agregue un botón de comando (Command1) y un control cuadro de
imagen (Picture1) de 2700 o más de Ancho (Width) y 1000 de alto (Height). Escriba el siguiente
código:

Private Sub Command1_Click()


Dim X As Long
For X = 250 To Picture1.Width Step 1000
Picture1.CurrentX = X
Picture1.CurrentY = Picture1.Height - 300
Picture1.Print "Aqui"
Next
End Sub

Ejecute el programa, presione clic sobre el botón de comando, se escribirá en el cuadro de


imagen la palabra “Aquí” varias veces según el ancho del cuadro de imagen. También se puede
eliminar la sección (Step 1000) y colocar en las sentencias después de la línea Picture1.Print:
X = X + 1000
Es la forma de incrementar la variable directamente en las sentencias de instrucciones.

Bucle For Each ... Next:


Es una modalidad del bucle For ... Next, pero éste permite recorrer una matriz o una
colección de datos (Ver Objeto Collection) cuando no se sabe el número de elementos de
contienen. Tiene la siguiente forma:

For Each Elemento In Collection/Matriz


Sentencias
[Exit For]
Next

Donde Elemento es una variable de tipo Variant si es una Matriz o un Objeto si es una
colección de objetos. También te la opción Exit For para salir del bucle en el momento que se
desea.

OTRAS SENTENCIAS:

Sentencia Goto:
La sentencia Goto permite dirigir la secuencia de instrucciones a otro lugar mas inferior en
vez de seguir la secuencia de líneas como generalmente se ejecuta un programa.
Cuando esta sentencia se coloca, se debe colocar a su lado el nombre de un
subprocedimiento, este nombre debe colocarse más abajo (en el lugar donde se desea que se
dirija el programa) seguido de dos puntos y luego las sentencias o instrucciones que se desea que
se ejecute, por ejemplo:
Es muy importante resaltar que las líneas de secuencia de las instrucciones por realizarse
de arriba hacia abajo no excluye al subprocedimiento, por lo tanto para finalizar la ejecución de
instrucciones antes del subprocedimiento debe agregarse la palabra Exit Sub/Function que
corresponda para no ejecutar las líneas contenidas en el procedimiento.
Esta sentencia también se utilizan en el caso que se produzca un error en la ejecución de
un procedimiento, en este caso se escribiría en la primera línea del procedimiento:

On Error Goto NombreSubprocedimiento

Y debajo en la parte inferior del procedimiento colocar las líneas correspondientes a las
acciones que se deben tomar en caso de producirse un error. Esto se ve ejemplificado en el
siguiente programa:
Programación con VB 6.0 Ing. Kelvin Atencio

Programa #19. Sentencia Goto:


Este programa tiene por objetivo verificar si un número introducido es divisible entre los
valores 2, 3 y 4 simultáneamente.
Para ello, agregue un botón de comando (Command1), además agregue dos cuadros de
texto (Text1) y (Text2), el segundo identificado con una etiqueta que muestre “¿Divisible entre 2, 3
y 4?”, luego agregue el siguiente código:

Private Sub Command1_Click()


On Error GoTo ErrorValor
Text2 = DivisibleEntre2_3_4(Text1)
Exit Sub
ErrorValor:
If Err.Number = 13 Then
MsgBox "Error en el valor introducido", , "Introduzca un valor"
Text1 = ""
Text1.SetFocus
End If
End Sub

Private Function DivisibleEntre2_3_4(Numero As Integer) As Boolean


If Numero Mod 2 <> 0 Then
GoTo NoEsDivisible
End If
If Numero Mod 3 <> 0 Then
GoTo NoEsDivisible
End If
If Numero Mod 4 <> 0 Then
GoTo NoEsDivisible
End If
DivisibleEntre2_3_4 = True
Exit Function
NoEsDivisible:
DivisibleEntre2_3_4 = False
End Function

Ejecute la aplicación, introduzca un valor entero en el primer cuadro de texto y presione clic
sobre el botón de comando, Text2 mostrará Verdadero si el valor es divisible entre 2, 3 y 4 o falso
si no lo es. Pruebe con distintos números.
Los detalles sobre la codificación de este programa están en la Sección Detallada de
programas.

Sentencia With:
A esta sentencia también se le llama Bloque With, ya que agrupa un conjunto de
instrucciones con respecto a un objeto, control o estructura. La sentencia With se utiliza cuando se
desea ejecutar un conjunto de instrucciones con referencia a un objeto, control o estructura para no
hacer referencia en cada paso a esta sino una sola vez. Por ejemplo la secuencia:

With Label1
.BorderStyle=1
.Caption="Nombre:"
.Enabled=True
.Width=1815
End With

Cambia las propiedades estilo de borde, caption, ensamblado y ancho de la etiqueta uno, con
necesidad de escribir Label1 sólo una vez.
Programación con VB 6.0 Ing. Kelvin Atencio

10. CUADROS DE DIÁLOGO:

Los cuadros de diálogo se utilizan para presentar un mensaje al usuario con la finalidad
que éste tome decisiones y el programa reaccione a ellas.
Por ejemplo si el usuario introdujo realizó una acción inválida, usted puede mostrar
mediante un mensaje informando que la acción que se ha realizado fue inválida y por lo tanto debe
corregir para continuar. También se pueden presentar cuadros de diálogo para mostrar
información. Hay otros cuadros de diálogo como el cuadro de diálogo de Abrir, Guardar como,
Imprimir, que esperan acciones del usuario para continuar.,
Los cuadros de diálogos pueden ser modales o no modales. Modales significa que se debe
cerrar el cuadro de diálogo (puede ser hacer clic sobre el botón Aceptar, Cancelar, Cerrar u otro)
para continuar utilizando la aplicación. Si no se cierra no se podrá continuar utilizando la aplicación.
Los cuadros de diálogo Guardar como, Imprimir, Abrir y el que se han utilizado hasta ahora
en la programación: MsgBox, son de tipo modal, esperan la reacción del usuario, mientras que el
cuadro de diálogo Buscar es de tipo no modal, es decir, puede seguir cambiando o utilizando la
aplicación mientras el cuadro de diálogo no modal está abierto o en funcionamiento.

El siguiente programa convierte un formulario en tipo modal:

Programa #20. Formulario Modal:


Se va a crear un programa de dos formularios (Form1 y Form2). Para ello en el primer
formulario cambie su propiedad WindowState a 2 – Maximized, después agregue un botón de
comando (Command1). Luego, se debe agregar el otro formulario, para ello busque en la Barra de
Herramientas Proyecto, busque Agregar Formulario y después haga clic sobre Formulario, se
creará un formulario con nombre Form2.
En Form2, agregue un botón de comando (Command1) y agregue el siguiente código:

Private Sub Command1_Click()


Unload Me
End Sub

Haga clic sobre Form1 en el Explorador de Proyectos, luego clic sobre Ver objeto, en el
botón de comando presione doble clic para empezar a escribir código, escriba de tal manera que
quede:

Private Sub Command1_Clic()


Form2.Show vbModal
End Sub

Ejecute el programa y verifique que cuando hace clic sobre el botón de comando
Command1 de Form1 se desplega el Form2 de tipo modal, si elimina la sentencia vbModal,
entonces Form2 no será de tipo modal. El botón de comando de Form2 hace que se cierre el
formulario mediante la sentencia Unload Me.
Por ser de fácil comprensión este programa no se encuentra detallado en la Sección
Detallada de Programas.

Cuadros de Mensajes (MsgBox):


Los cuadros de mensaje MsgBox se utilizan para mostrar una información al usuario, son
utilizados muy a menudo en el tratamiento de errores para presentar al usuario una falla que se
haya cometido, un error causado. Pero también se utiliza para informar al usuario sobre un
acontecimiento que se ha generado que no sea un error sino que por ejemplo se ha llegado al final
de un procedimiento.
Los cuadros de mensaje tienen la siguiente forma

MsgBox Prompt, [Estilo], [Título]


Programación con VB 6.0 Ing. Kelvin Atencio

Donde Prompt es una variable o una cadena de texto que representará el mensaje escrito
que desea que el usuario lea, Estilo es opcional y son un conjunto de características que puede
tener el cuadro de mensaje ya sea que tenga botón de Aceptar, Cancelar, Ayuda o que tenga un
icono a su lado como el signo de exclamación o un icono crítico, si se omite el estilo
predeterminado no se mostrarán iconos y será vbOkOnly que significa que sólo se presentará el
botón Aceptar. Los estilos de cuadros de mensaje se pueden observar si coloca la palabra
vbMsgBoxStyle en el Examinador de objetos.
El titulo también es una variable o una cadena de texto que aparecerá en el título del
cuadro de mensaje, por ejemplo el siguiente código presenta el siguiente mensaje:

Programa #21. Mensaje:


En este programa se utiliza un cuadro de mensaje para Advertir al usuario si quiere salir de
la aplicación:
Agregue a un formulario un botón de comando (Command1) y escriba el siguiente código:

Private Sub Command1_Click()


Dim Respuesta
Respuesta = MsgBox("¿Desea salir de la aplicación?", vbCritical _
+ vbYesNo, "Cerrar")
If Respuesta = vbYes Then
Unload Me
End If
End Sub

Ejecute la aplicación y haga clic sobre el botón de comando, se mostrará un mensaje como
el siguiente:

Presenta dos opciones Si o No, si presiona clic sobre Si, se sale del programa y si presiona
el otro botón cierra el mensaje y continúa la aplicación. Por ser de muy fácil comprensión este
programa no se incluye en la Sección Detallada de Programas.

Cajas de Entrada (InputBox):


Las cajas de entrada InputBox, se utilizan también para dar mensajes, pero en este caso
se introduce un dato que se guardará en una variable. Estos cuadros de diálogo tienen la siguiente
forma:

Variable = InputBox (Prompt, [Titulo], [PorDefecto])

Donde variable es el nombre de una variable a la que se le asignará el valor o cadena


introducida en la caja de entrada, Prompt es el valor o cadena que presentará el mensaje al
usuario, Título es opcional y presenta el título de la caja de entrada, y PorDefecto también es
opcional y es el valor o cadena que aparecerá por defecto en la caja de entrada, si se omite no
aparecerá nada por defecto.
En este caso el valor o cadena introducido en el InputBox se asignará a Variable y luego
puede trabajar con este valor.
Programación con VB 6.0 Ing. Kelvin Atencio

Programa #22. InputBox:


Agregue a un formulario un botón de comando (Command1), también agregue una
etiqueta, escriba el siguiente código (puede copiar y pegar):

Option Explicit
Private Sub Command1_Click()
Dim Respuesta As String, Suma As Integer
Respuesta = InputBox("Introduzca un número", "Suma", 10)
Suma = Respuesta + 25
Label1 = Suma
End Sub

En este caso cuando se presiona un clic sobre el botón de comando se desplega una caja
de entrada como la siguiente:

El valor que introduzca en la caja de entrada el programa sumará 25, sino agrega un valor
y coloca una cadena de texto el programa generará un error.
Este programa no se detalla en la Sección Detallada de Programas ya que es de fácil
comprensión.
Programación con VB 6.0 Ing. Kelvin Atencio

11. LOS MENÚS:


La Barras de Menú que aparecen en la mayoría de las aplicaciones son herramientas que
nos permiten acceder a los comandos principales de la aplicación, estas barras de herramientas
contienen los nombres de los comandos esquematizados y organizados de tal manera que se
puede acceder a ellos de una manera muy rápida.
VB 6.0, contiene un Editor de Menús que permite crear este tipo de barras y también
puede crear menús contextuales que son los que aparecen, por ejemplo, al hacer clic con el botón
secundario del mouse sobre un elemento.
El Editor de Menús aparece de la siguiente forma:

El Editor de Menús se compone del Caption, que es la palabra que se va a mostrar al


usuario, debajo de ella aparece la propiedad Name, que es el nombre con el cual se va a acceder o
a llamar desde el código del programa.
Otras propiedades que aparecen son:
• Index (Matrices de menús)
• Shorcut (Método abreviado)
• Checked (Sómbolo de chequeo)
• Enabled (Habilitar – desabilitar)
• Visible (Mostrar u ocultar)
• WindowList
• NegotiatePosition

El Editor de Menús posee una lista inferior que esquematiza todos los elementos creados
en él.
Las flechas que se encuentran inmediatamente arriba de la lista tienen distintas funciones
cada una, las flechas hacia la izquierda y la derecha sirven para disminuir y aumentar las sangrías
de los menús, respectivamente. Las flechas hacia arriba y hacia abajo sirve para mover un menú
desde una posición inicial a una final (cambiar de posición).
Las sangrías de los menús se utilizan para crear submenús, así, aquellos que aparecen sin
sangría son los menús principales que se muestran al usuario directamente en la Barra de
Herramientas, los submenús primarios (una sangría) son aquellos que se muestran directamente al
hacer clic sobre el menú principal, si desea crear otros submenús se deberá colocar doble, triple u
otras sangrías al submenú, dependiendo de cuantos submenús desea crear. La máxima cantidad
de submenús que puede crear es cinco niveles. Las sangrías se identifican por tener cuatro
puntos(....).
La propiedad Index se utiliza para crear matrices de controles de menús, esto se hace con
el objetivo de simplificar el código cuando los elementos de las matrices deben de utilizar el mismo
Programación con VB 6.0 Ing. Kelvin Atencio

código sólo variando por su número de índice. También se pueden utilizar para crear un menú en
tiempo de ejecución, aumentando la propiedad Index en uno.

Programa #23. Matriz de Menús:


El siguiente programa utiliza la propiedad index de los menús para crear una matriz de
controles de menús. Para ello, vaya al Editor de Menús y siga los siguientes pasos:

1. Seleccione el formulario al que va a Editar el Menú con un clic.


2. En la Barra de Menú de VB 6.0, diríjase a Herramientas – Editor de Menús,
o directamente presione la combinación de teclas Ctrl+E.
3. Escriba en el primer Caption la palabra &Archivo, en la propiedad Name
escriba mnuArchivo, presione Enter para pasar al siguiente menú o haga clic sobre la
el botón Siguiente.
4. Presione la flecha hacia la derecha para crear una sangría.
5. Escriba en el Caption nuevo la palabra &Abrir, coloque como Name
mnuSubArchivo, establezca la propiedad Index a cero. Coloque como Shortcut
(Ctrl+O). Pase al siguiente submenú presionando la tecla Enter o haciendo clic en
siguiente.
6. Escriba en el Caption actual la palabra &Guardar como..., el la propiedad
Name escriba mnuSubArchivo y en la propiedad Index escriba uno (1). Establezca la
propiedad Shortcut (Ctrl+G). Pase al siguiente submenú.
7. Escriba en el nuevo Caption la palabra &Imprimir, propiedad Name
mnuSubArchivo y la propiedad Index sea igual a dos (2). Cambie la propiedad Shorcut
a (Ctrl+P). Haga clic en Aceptar
8. Diríjase en la Barra de Menú de Visual Basic diríjase a Proyecto –
Componentes, o directamente presione la combinación de teclas Ctrl+T
9. De la lista de elementos que se muestran seleccione la casilla de
verificación de Microsoft Common Dialog Control 6.0. Haga clic en aplicar y luego en
aceptar.
10. Agregue este control sobre el formulario de la misma manera que se
agrega un control no se preocupe por el tamaño, este al igual que el control Timer tiene
un tamaño predeterminado y no es visible en tiempo de ejecución.
11. Ahora diríjase a la Ventana Ver Código y escriba las siguientes
instrucciones:

Private Sub mnuSubArchivo_Click(Index As Integer)


Select Case Index
Case 0: CommonDialog1.ShowOpen
Case 1: CommonDialog1.ShowSave
Case 2: CommonDialog1.ShowPrinter
End Select
End Sub

Ejecute la aplicación e interactúa con el programa, diríjase a cualquier submenú de Archivo


y compruebe como se muestra cada Cuadro de diálogo de acuerdo con su nombre. Ejemplo Abrir
desplega el cuadro de diálogo Abrir, Guardar como, desplega el cuadro de diálogo guardar e
igualmente con imprimir.
No borre todavía el programa ya que se seguirá utilizando para las explicaciones de las
otras propiedades.
Este programa no se detalla en la Sección Detallada de Programas ya que es de fácil
comprensión.

La Propiedad Shortcut se utiliza si quiere agregar un acceso directo, por ejemplo si elige la
combinación Ctrl+O para un submenú (que es el caso del submenú Abrir), si se encuentra en
cualquier lugar de la aplicación al presionar esta combinación de teclas se llama a las instrucciones
que se encuentran dentro del evento clic del nombre de menú, de manera que no tendrá que
Programación con VB 6.0 Ing. Kelvin Atencio

dirigirse siempre a la Barra de Menú sino que conociendo la combinación de teclas se abrevia el
tiempo de ejecución. Si se presiona Ctrl+O o Ctrl+G o Ctrl+P se llama al procedimiento de Abrir,
Guardar, o imprimir respectivamente que son los nombres de los submenús.

Si antepone el símbolo & a la palabra caption de un menú principal, al presionar la


combinación de teclas Alt+(Carácter subrayado), se genera el evento clic sobre el nombre del
menú, si antepone este mismo símbolo a un submenú, luego que se hace clic sobre el menú
principal con presionar la tecla subrayada se genera el evento clic del submenú.

Para el ejemplo del Programa #19, si se encuentra en el formulario, puede presionar la


combinación de teclas Alt+A, se llama al Menú Archivo de la Barra de Menú, luego si se presiona la
tecla A, G o I, se llamarán a los eventos clic de Abrir, Guardar o Imprimir, respectivamente.

La Propiedad Checked que no fue utilizada en el programa pasado sirve para colocar un
símbolo de chequeo al lado del caption del submenú, tiene la siguiente forma:

De tal manera que se muestre que hay un elemento activo y uno inactivo, en el caso del
ejemplo se supone que se pueden crear dos tipos de gráficos (logarítmico y semilogarítmico) y
según se muestra actualmente se está utilizando el gráfico de tipo logarítmico.

La propiedad Enabled se utiliza para habilitar o deshabilitar un menú o submenú, por


ejemplo si un tipo de menú no aplica para las opciones que se pueden crear durante una aplicación
se puede deshabilitar y de este modo no estaría disponible. Por ejemplo en Word cuando no se ha
copiado nada al portapapeles la selección Pegar está deshabilitada ya que no se puede pegar
hasta ese momento ningún elemento. Cuando se copia una selección al portapapeles se habilita de
nuevo el submenú pegar para que esta opción pueda ser utilizada.

La propiedad Visible – Menús emergentes:


Los menús emergentes son muy utilizados en las aplicaciones de Windows. Para ello se
utiliza la propiedad Visible de los menús y la instrucción PopupMenu. Los menús emergentes
aparecen usualmente cuando se hace clic con el botón secundario sobre algún elemento de la
aplicación. VB 6.0 contiene estas herramientas que pueden desplegar un menú flotante
independiente de la barra de menús que presenta también opciones de ejecución.

Programa #24. Menú Emergente:


Este programa tiene la finalidad de presentar un menú emergente cuando se hace clic con
el botón secundario del mouse sobre un control cuadro de imagen (PictureBox).
Para ello, seleccione un formulario y diríjase al Editor de Menús. Llene el editor con los
siguientes datos y propiedades:

Menú Principal Caption: Dibujar


Name: mnuDibujar
Visible: Falso
(desactive la casilla de verificación)
Primer Submenú (con una sangría) Caption: Dibujar Círculo
Name: mnuCirculo
Visible: Verdadero
Segundo Submenú (con una sangría) Caption: Dibujar Línea
Name: mnuLinea
Visible: Verdadero
Programación con VB 6.0 Ing. Kelvin Atencio

Luego vaya al formulario y agregue un PictureBox (de nombre Picture1), después escriba
el siguiente código:

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, _


X As Single, Y As Single)
If Button = 2 Then
PopupMenu mnuDibujar
End If
End Sub

Private Sub mnuCirculo_Click()


Picture1.Circle (1000, 1000), 500, vbRed
End Sub

Private Sub mnuLinea_Click()


Picture1.Line (1500, 1500)-(2000, 2000), vbBlue
End Sub

Ejecute la aplicación, presione el botón secundario del mouse sobre el control Picture1 y
verifique que se desplega un menú emergente con las opciones Dibujar Circulo y Dibujar Línea, si
hace clic en alguno de ellos se llamarán a las instrucciones correspondientes.
Este programa aparece en la Sección Detallada de programas explicando algunas de sus
instrucciones principales.
Programación con VB 6.0 Ing. Kelvin Atencio

12. COLORES EN VISUAL BASIC:

Los colores en VB 6.0 pueden ser trabajados o asignados de distintas formas:


La principal es asignar un color de los valores predeterminados de VB, estos se pueden
visualizar en el Examinador de Objetos mediante la palabra ColorConstants, estos son:

• vbBlack (Negro)
• vbBlue (Azul)
• vbCyan (Aguamarina)
• vbGreen (Verde)
• vbMagenta (Fucsia)
• vbRed (Rojo)
• vbWhite (Blanco)
• vbYellow (Amarillo)

Pero si sólo se trabajara con estos colores se estaría muy limitado, por ello el lenguaje
cuenta con una manera de colores personalizados, cuenta con la instrucción RGB.
Esta función combina tres colores principales R (Rojo) G (Verde) y B (Azul) – por sus
siglas en inglés (Red, Green Blue) – para crear colores personalizados, el valor de cada
componente principal puede variarse desde el cero hasta el 255 generando mas de 16 millones de
posibilidades de colores.
La instrucción RGB tiene la siguiente forma:

Variable = RGB(Red, Green, Blue)

Donde variable es el nombre de una variable que almacena un valor tipo Long (Numérico
Entero de gran extensión) que devuelve la función RGB, red es el tinte del color rojo, green el tinte
de color verde y Blue el tinte de color azul, como ya se ha dicho estos valores pueden estar entre 0
y 255.
De esta manera la combinación RGB( 0, 0, 0) devuelve el color negro mientras que la
combinación RGB (255, 255, 255) devuelve el color blanco.

Programa #25. Colores mediante RGB:


El siguiente programa combina tres barras de desplazamiento horizontal para generar
cambios en los colores de la función RGB.

Coloque tres barras de desplazamiento horizontal con las siguientes propiedades:

Primera Barra Name: HScrollRed


Min=0
Max=255
Segunda Barra Name: HScrollGreen
Min=0
Max=255
Tercera Barra Name: HScrollBlue
Min=0
Max=255

Coloque cuatro Figuras (Shape) de la siguiente manera:


• La primera de nombre ShpRed, arriba de la barra de desplazamiento HScrollRed.
• La segunda de nombre ShpGreen, arriba de la barra de desplazamiento HScrollGreen.
• La tercera de nombre ShpBlue, arriba de la barra de desplazamiento HscrollBlue.
• La cuarta de tamaño un poco mas grande de nombre ShpGenerado, sola en la parte
derecha del formulario.
Programación con VB 6.0 Ing. Kelvin Atencio

Cambie todas las propiedades de FillStyle de estos rectángulos a 0 – Sólido (0 – Solid)

El formulario debe tener la siguiente apariencia:

Ahora, se va agregar el siguiente código al formulario:

Private Sub HScrollRed_Change()


ShpRed.FillColor = RGB(HScrollRed.Value, 0, 0)
ShpGenerado.FillColor = RGB(HScrollRed.Value, _
HScrollGreen.Value, HScrollBlue.Value)
End Sub

Private Sub HScrollGreen_Change()


ShpGreen.FillColor = RGB(0, HScrollGreen.Value, 0)
ShpGenerado.FillColor = RGB(HScrollRed.Value, _
HScrollGreen.Value, HScrollBlue.Value)
End Sub

Private Sub HScrollBlue_Change()


ShpBlue.FillColor = RGB(0, 0, HScrollBlue.Value)
ShpGenerado.FillColor = RGB(HScrollRed.Value, _
HScrollGreen.Value, HScrollBlue.Value)
End Sub

Ejecute el programa. Puede ver las variaciones de los colores mientras cambia las
posiciones de las barras de desplazamiento, tanto individualmente como el color generado por la
combinación de los tres colores.
Programación con VB 6.0 Ing. Kelvin Atencio

13. EL OBJETO COLLECTION:


Este objeto se utiliza para agrupar datos como si fuera una lista pero en este caso cada
elemento queda grabado en la memoria como una variable tipo Variant, por lo que cada elemento
tiene una longitud de 16 bytes, sea cual sea el contenido que éste tenga.
Por almacenar este tipo de datos, puede grabar entonces cualquier tipo de dato que puede
almacenar una variable Variant, como lo son todos los objetos, matrices estándar y los tipos de
datos excluyendo las estructuras.
Para crear una nueva colección se usa la siguiente expresión:

Dim/Private/Public NombreColección As New Collection

El objeto Collection tiene los siguientes métodos y propiedades:

Propiedad o Método Función


Método Add Agrega un elemento a la colección
Propiedad Count Devuelve el número de elementos de la colección
Método item Devuelve un elemento de la colección
Método Remove Elimina un elemento de la colección

Para almacenar, recuperar o eliminar elementos de una colección se puede hacer


mediante los índices y las claves. Si se utiliza el número de índice se hace del mismo modo que
una lista pero a diferencia que los elementos de las colecciones comienzan enumeradas por uno y
no por cero como es el caso de las listas y los cuadros combinados. Para el caso de las claves,
éstos son datos tipo String (cadenas de texto) que se colocan como referencia para almacenar un
elemento, de tal manera que si no conoce el número de índice se recurre a la clave que debe ser
diferente para cada elemento.

Para agregar un elemento a la colección se utiliza la siguiente expresión.

NombreColección.Add Elemento[, Clave, Before, After]

Donde NombreColección es el nombre de la colección, Elemento es el dato que se quiere


grabar en la colección ya sea un valor, objeto o cadena de texto. La clave es un dato tipo String
que sirve como guía para encontrar el dato, y Before y After se utilizan para agregar el dato en una
posición determinada, por ejemplo:

MiColeccion.Add "Pedro Fernández", "Pedro", before:=2

Agrega a la colección MiColeccion el elemento “Pedro Fernández” con clave “Pedro” en la


posición número dos.

Para eliminar un elemento de la colección se utiliza el método Remove de la siguiente


forma:

NombreColección.Remove índice

O bien

NombreColección.Remove "Clave"

De modo que para borrar el elemento “Pedro Fernández” de la colección se usaría:

MiColección.Remove 1

En el caso que este elemento esté en la primera posición o más directamente con su clave:
Programación con VB 6.0 Ing. Kelvin Atencio

MiColección.Remove "Pedro"

Para obtener un elemento de una colección se utiliza el método item, que tal como Remove
puede colocarse tanto su índice como su clave. Tiene la siguiente forma:

[Set] Variable = NombreColección.Item(indice)

o también

[Set] Variable = NombreCColección.Item("Clave")

Si se utilizaron números como claves, éstos deben ser convertidos mediante la instrucción
CStr para ser usados en el método item o Remove, ya que si es un número entero la colección lo
admite como un índice.
Como item es el método predeterminado del objeto Collection, en la codificación no es
necesario hacer referencia a él, se puede simplificar de la siguiente manera:
[Set] Variable = NombreColección(índice)

o también,

[Set Variable = NombreColección(“Clave”)


Programación con VB 6.0 Ing. Kelvin Atencio

14. PROGRAMAS DE MÚLTIPLES DOCUMENTOS


(FORMULARIOS MDI)
MDI es la abreviación de Interfaz de Múltiples Documentos por su siglas en inglés (Multiple
Document Interface). Los programas con este tipo de interfaz permiten visualizar y trabajar con
más de un documento (Formulario) al mismo tiempo, estos formularios se encuentran dentro de un
formulario principal contenedor.
Los programas Microsoft Word, Microsoft Excel son ejemplos de programas con interfaz de
Múltiples documentos. Se pueden identificar por tener en la Barra de Menú la opción Ventana que
permite desplazarse entre los distintos documentos abiertos hasta ese momento.
Lo contrario de MDI es SDI (Single Document Interface) que son aplicaciones donde
pueden existir varios formularios también, pero cada uno es individual y separado y no posee un
formulario principal contenedor.
Todos los formularios poseen una propiedad llamada MDIChild que es Falsa por defecto.
Para el caso de las aplicaciones MDI, este valor debe ser cambiado a Verdadero (True). Pero
antes, debe colocarse un formulario principal contenedor como un formulario MDI, de la siguiente
manera:

• Se debe dirigir a la Barra de Menú – Proyectos.


• Agregar Formulario MDI
• Agregar un menú hijo, cambiando la propiedad MDIChild de un formulario a
Verdadero (True).

Si no existe un Formulario MDI en la aplicación y algún formulario tiene la propiedad


MDIChild establecida a Verdadero, al llamar al formulario se producirá un error.
Al formulario principal contenedor que desde ahora llamaremos Formulario MDI, no se le
pueden agregar todos los controles directamente, se puede el control PictureBox, que servirá para
agregar controles sobre éste y permitir insertar botones de comandos y todos los demás controles.
También puede agregar el control Timer y el control Data.
El tamaño de los controles cuadro de imagen se adaptan automáticamente a la parte
superior del formulario MDI, tomando todo el ancho del formulario, esto se hace con la intención
de que funcione como una Barra de Herramientas.
Cuando se establecen formularios MDI y secundarios (MDIChild) estos tienen
características muy particulares que pueden distinguirse.
• Los formulario MDI en tiempo de diseño presenta una coloración mas oscura que
los formularios estándar. Además en el Explorador de proyectos tienen una imagen
que los distinguen, al igual que los formularios secundarios y estándar, como se
puede observar en la figura siguiente:

Formulario Estándar

Formulario Secundario

Formulario MDI

• Los formularios secundarios cuando se abren, su área de trabajo siempre estará


regido por el área de trabajo del formulario MDI, al maximizar el formulario
secundario este tomará el total del formulario MDI, y su título se combinará con el
título del formulario MDI, además las barras de menús que tenga el formulario
secundario se combinará con la barra de Menú del formulario MDI.
Programación con VB 6.0 Ing. Kelvin Atencio

• Al minimizar los formularios secundarios, éstos no se colocarán directamente en la


barra de Tareas, más bien, se colocarán en la parte inferior del formulario MDI.

Programa #26. Programa MDI:


Para la creación de un programa con múltiples documentos siga los siguientes pasos:
1. Cree un proyecto Nuevo, en el formulario principal (Form1) establezca su
propiedad MDIChild a Verdadero, cambie el Caption a Documento 1.
2. Agregue un formulario MDI, en el menú Proyecto – Agregar Formulario MDI.
3. Agregue un control cuadro de imagen (PictureBox) con propiedad Height = 375.
4. Agregue un botón de comando (Command1) al control cuadro de imagen
insertado en el paso anterior, de tamaño cuyo alto se adapte al tamaño del control
cuadro de imagen y el ancho sea de 375. Borre el contenido de la propiedad
Caption. Luego, cambie su propiedad Picture, buscando la imagen en la carpeta:
“C:\Archivos de Programas\Microsoft Visual Studio\Common\Graphics\Bitmaps\TlBr_W95\New.bmp”
Establezca la propiedad Style del botón de comando a 1 – Graphical. Se mostrará
la imagen del comando Nuevo, en el botón de comando. Si no se encuentra la
imagen y la carpeta puede grabarlos en el computador desde la instalación de
Visual Basic o Visual Studio 6.0.
5. Agregue dos botones de comando comando (Command2 y Command3) del mismo
tamaño que Command1, puede colocar como sugerencia en Caption C2 y C3. O
deje tal cual está.
6. Diríjase al formulario Form1, y agregue un control cuadro de imagen (Picture1).
Cambie la propiedad BackColor a Blanco. Y además establezca las propiedades
Left y Top a cero.
En este formulario agregue el siguiente código:

Private Sub Form_Resize()


Picture1.Height = ScaleHeight
Picture1.Width = ScaleWidth
End Sub

7. En el Formulario MDI agregue el siguiente código:


Option Explicit
Dim Contador As Integer

Private Sub MDIForm_Activate()


Contador = 1
End Sub

Private Sub Command1_Click()


Dim Formulario As New Form1
Contador = Contador + 1
Formulario.Show
Formulario.Caption = "Documento " & Contador
End Sub

Private Sub Command2_Click()


ActiveForm.Picture1.Circle (500, 500), 300, , , , 2 / 3
End Sub

Private Sub Command3_Click()


ActiveForm.Picture1.Refresh
End Sub

Para probar este programa ejecútelo, maximice la ventana MDI, es decir la ventana
superior, presione el botón Command1 (el que tiene la imagen Nuevo) se creará un nuevo
Programación con VB 6.0 Ing. Kelvin Atencio

Documento (Documento 2), coloque los dos de tal manera que sean totalmente visibles ambos,
que no se superponga uno del otro, presione el segundo botón de comando se dibujará una elipse
en el formulario activo, esto sucede debido a la sentencia ActiveForm que detecta el formulario
activo y trabaja sobre el de acuerdo a la instrucción. Igualmente sucede con el tercer botón de
comando, pero en este caso borra el contenido de la imagen.
Otros detalles del programa pueden verse en la Sección Detallada de Programas.
Programación con VB 6.0 Ing. Kelvin Atencio

15. TRABAJO CON FICHEROS:


Muchas veces necesitamos guardar la información de aplicaciones en un dispositivo, ya
sea disco duro, disquete u otro dispositivo de almacenamiento, para cargarlo posteriormente y
continuar introduciendo datos sobre estos archivos ya establecidos.
Para esto Visual Basic posee una herramienta de trabajo que permite almacenas en
ficheros la información que el programador especifique.

En Windows y en Visual Basic 6.0 existen dos tipos de ficheros:


• Ficheros Ascii
• Ficheros Binarios.

Los primeros almacenan la información de acuerdo al código ASCII que pueden ser leídos
por programas como el Bloc de Notas (NotePad). Generalmente tienen extensión *.txt (archivos de
texto) o *.bat. Existen otros archivos que también guardan la información como archivos ASCII,
como son *.c (archivos de lenguaje de programación C), *.cpp (Archivos de lenguajes de
programación C++), *.java (archivos de lenguaje de programación JAVA) o *.m (Archivos de
programas de Matlab).
Los ficheros binarios son ficheros que devuelven la información tal como se encuentran en
la memoria. Éstos no son legibles por el bloc de notas y tampoco directamente por el usuario.
Ocupan menos espacios de memoria y pueden ser fácilmente cambiados a formato ASCII al
escribirlos y al leerlos.

El Acceso de un fichero puede ser de alguno de estos tres tipos:

• Acceso Secuencial: Leen y escriben los datos secuencialmente, es decir, uno tras
otro y no hay posibilidad de volver atrás, el acceso secuencia sólo aplica a ficheros Ascii y por lo
tanto pueden ser leídos por el bloc de notas (NotePad). Este tipo de acceso tiene tres formas de
apertura, una para sólo lectura (Input), y dos para escritura (Output y Append).

• Acceso Aleatorio: Estos ficheros están formados por registros del mismo tamaño
en bytes, por lo tanto permiten acceder a alguno de ellos sin necesidad de para por todos los
anteriores. Es muy importante resaltar que cada registro debe tener el mismo tamaño en bytes,
para que así se pueda acceder a un registro específico por su ubicación en la memoria. La única
forma de apertura es Random que sirve tanto para lectura como para escritura de datos. Este tipo
de acceso almacena la información tal como se encuentra en la memoria.

• Acceso binario: Son semejantes al acceso aleatorio pero en caso el acceso no


esta basada en registros sino en cada byte.

Para trabajar con ficheros deben respetarse los siguientes pasos mediante el código:
• Apertura del fichero
• Leer o escribir datos
• Cerrar el fichero

Apertura de un fichero.
Para abrir un fichero se utiliza la sentencia Open. Ella debe especificar el tipo de acceso
que se desea.
La instrucción general para abrir un fichero es la siguiente:

Open Archivo For tAcceso As #Número [Len = Tamaño]

Donde Open da la orden de apertura, Archivo es una cadena de texto que devuelve la ruta
y el nombre del fichero o archivo que se va a abrir, tAcceso es el tipo de acceso de acuerdo a los
Programación con VB 6.0 Ing. Kelvin Atencio

tres tipos de acceso que se explicaron anteriormente (Input, Output, Append, Random o Binary),
Número es un número entero positivo (o variable que devuelve un número entero positivo) que
definirá el número del fichero. La sentencia [Len = Tamaño] aplica sólo a ficheros de Acceso
aleatorio, donde tamaño define el tamaño en bytes de cada registro.

La apertura de un fichero nos permite escribir o leer datos en el mismo.


No puede haber ficheros distintos abiertos con el mismo número. Para ello VB 6.0 dispone
de una función llamada FreeFile que devuelve un número entero que no ha sido utilizado por
ningún fichero.

Ficheros de Acceso Secuencial:


Si en un fichero de acceso secuencial se utiliza Input para abrir un fichero que no existe,
el programa producirá un error. Si se utiliza el tipo de acceso Output a un fichero que no existe, se
creará uno nuevo, si ya existía borra su contenido para empezar desde el comienzo, si desea
conservar el contenido del fichero utilice el tipo de acceso Append.

• Leer o escribir datos en un fichero secuencial:


PARA LECTURA:
Sentencia Input:
Para leer y guardar el conjunto de caracteres escritos en una línea de un archivo de texto
se puede utilizar la sentencia Input de la siguiente manera:

Input #Número, Variable1, Variable2, Variable3 ...

Donde Número, hace referencia al número con el cual el fichero fue abierto y las variables
1, 2, 3, ... son los nombres de las variables que almacenarán las distintas líneas de escritura del
archivo o fichero abierto.

Programa #27. Sentencia Input:


Así por ejemplo si tenemos un programa con un botón de comando (Command1), una
etiqueta (Label1) que tenga un ancho (Propiedad Width) de mediana longitud y un control de
cuadros de diálogos comunes (CommonDialog1) y además tenemos el siguiente código:

Option Explicit

Private Sub Command1_Click()


On Error GoTo Mensaje
Dim Archivo As String, Linea1 As String
Dim Linea2 As String, Linea3 As String
CommonDialog1.ShowOpen
Archivo = CommonDialog1.FileName
Open Archivo For Input As #1
Input #1, Linea1, Linea2, Linea3
Label1.Caption = Linea1 & Chr(13) & Linea2 & Chr(13) & Linea3
Exit Sub
Mensaje:
Select Case Err
Case 62: MsgBox "El archivo no tiene tres líneas" & Chr(13) &
"Elija un Archivo con tres o más líneas", vbExclamation, "Error"
Case 75: Exit Sub
Case Else: MsgBox "Error " & Err.Number & " " & Err.Description
End Select
End Sub

Cuando presiona el botón de comando, puede elegir un archivo de texto (*.txt) que tenga
tres o más de líneas (si lo elige de menos líneas se mostrará un mensaje de error). La variable
Programación con VB 6.0 Ing. Kelvin Atencio

Linea1 almacenará los caracteres de la primera línea y así sucesivamente llegar hasta la tercera
línea, estas variables serán mostradas en la etiqueta 1.
Como ya la mayoría de los comandos han sido explicados en la Sección Detallada de
Programas en otros programas, este programa no aparece en dicha sección.

Puede introducir valores numéricos en el archivo de texto y luego mediante la instrucción


de conversión a numérico (sea CDbl, CSgl u otra) puede operar matemáticamente con ellos. Por
ejemplo, si se introduce en la primera línea el valor numérico 100, en la segunda 100 y en la
tercera 120 y además se cambia la línea de comando del programa:
Label1.Caption = Linea1 & Chr(13) & Linea2 & Chr(13) & Linea3
Por la siguiente línea
Label1.Caption = CDbl(Linea1)+CDbl(Linea2)+CDbl(Linea3)

Al presionar el botón de comando y abrir el archivo con los valores guardados


anteriormente la etiqueta devolverá 320, que es el valor de la suma de los tres valores.

Sentencia Line Input:


La forma general de la función Line Input es:
Line Input #Número, Variable1
Line Input #Número, Variable2
...
Donde Variable1 almacena los caracteres existentes en la primera línea del fichero,
Variable2 la segunda línea y así sucesivamente tantas veces como tantas líneas crea necesario.
La función Line Input también lee una línea completa hasta llegar al retorno de carro o un
retorno de carro mas avance de línea – Chr(13) y Chr(10) respectivamente -. Hasta ahora no he
podido distinguir la diferencia entre esta función y la anterior Input , la única diferencia que mi
experiencia me ha dado es que para Line Input necesito escribir más código para asignar cada
línea a cada variable.

Función Input:
La función Input tiene la siguiente forma general:
Variable = Input(nCaracteres, #Número)

Donde Variable es una variable que almacena los caracteres indicados por nCaracteres,
por ejemplo la siguiente sentencia:
Variable = Input(10, #1)

Almacena en Variable los primeros 10 caracteres del fichero abierto mediante la asignación
número 1.
Si se desea que la variable almacene todos los caracteres de un fichero o archivo se puede
utilizar la siguiente instrucción:
Variable = Input(LOF(Número), #Número)

Ya que LOF devuelve el número total de bytes o caracteres que contiene un fichero.

PARA ESCRITURA:

Las sentencias de escritura sólo se pueden utilizar en ficheros secuenciales que fueron
abiertos mediante el tipo de acceso Output o Append.

Sentencia Print:
La sentencia Print tiene la siguiente forma:
Print #Número, [Spc(n)];[Tab(n)];Variable1; Variable2; Variable3;...

Donde Número es el valor numérico del fichero abierto donde se desea escribir, Variable1,
2, 3..., son las variables que se van a agregar al fichero o archivo abierto. Las sentencias
Programación con VB 6.0 Ing. Kelvin Atencio

opcionales son Spc(n) que indica si desea dejar un número de espacios (indicados por n) al
comenzar a escribir, o un número de tabulaciones (indicados por n) al comenzar de escribir en la
línea.

Por ejemplo las siguientes líneas de comando:

Option Explicit
Private Sub Command1_Click()
Dim Variable1 As String, Variable2 As String
Open "C:\Fichero.txt" For Output As #1
Variable1 = "Primera Cadena"
Variable2 = "Segunda Cadena"
Print #1, Spc(5); “Variables = ”Variable1;”, ”; Variable2
End Sub

Cuando ejecuta el programa y hace clic en Command1 aparentemente no pasa nada, pero
se ha creado un nuevo archivo (llamado Fichero) en la unidad C: (Disco Duro) donde se escribe,
primero dejando cinco espacios en blanco:
Variables = Primera Cadena, Segunda Cadena

Salga del programa, busque el archivo fichero en C: con el Explorador de Windows y


verifique.
Como ya se explicó anteriormente, el archivo fue abierto mediante el tipo de acceso
Output, esto hace que se cree el archivo si no existe y además si existe borra el contenido del
fichero, para conservar el contenido del archivo de texto y escribir al final debe sustituirse la
palabra Output por Append en el programa.

Sentencia Write:
La sentencia Write tiene la siguiente forma general:
Write #Número, Variable1; Variable2; Variable3...

Una diferencia relevante que tiene esta sentencia con respecto a la sentencia Print, es que
ésta separa las variables en el fichero por comas, además encierra entre comillas las cadenas de
texto, entre numerales (#) los valores de fechas y boolean , y agrega al final de la línea un retorno
de carro + avance de línea, constantes de VB 6.0 Chr(13) y Chr(10) respectivamente.

Por lo tanto, si escribe otra sentencia Write debajo, se escribirá en la siguiente línea del
fichero.

Por ejemplo:

Private Sub Command1_Click()


Open "C:\Fichero.txt" For Output As #1
Write #1, "Saludos"
Write #1, "Hoy es"; Date
Write #1, "La Hora es"; Hour(Time) & ":" & Minute(Time)
End Sub

Al abrir el archivo Fichero en la unidad C: este mostrará un archivo como el siguiente:


Programación con VB 6.0 Ing. Kelvin Atencio

Escribiendo al lado de “Hoy es” la fecha actual y al lado de “La hora es” la hora actual.

Fichero de Acceso Aleatorio:


Los ficheros de acceso aleatorio son una modalidad de ficheros binarios, es decir, poseen
la información tal como se encuentra en la memoria, se caracteriza por tener registros que deben
tener el mismo tamaño en bytes, aunque parezca una desventaja, se hace con la finalidad de
encontrar un registro de los almacenados de acuerdo al número de bytes de los registros, por
ejemplo, si cada registro del fichero tiene un tamaño fijo de 12 bytes, para encontrar el primer
registro el programa se traslada al byte número 1, para el segundo registro al byte número 13 y así
sucesivamente, hasta llegar al registro deseado.
El tipo de Acceso es Random, que sirve tanto para lectura como para escritura, además al
final de la sentencia Open debe agregarse el tamaño de registro Len = especificando el tamaño de
cada registro en bytes, de la siguiente manera:
Open Archivo For Random As #Número Len = Bytes

Donde Archivo es una cadena de texto que debe tener la ruta y el nombre del archivo o
fichero que se va a abrir, Número es el valor numérico entero que se asigna al fichero y Bytes es el
tamaño de cada registro en bytes.
Los ficheros de acceso aleatorios pueden grabar información de tal manera que puede
crear una base de datos que puede ser almacenada en un dispositivo de memoria (disco duro,
disquete, etc) para operar con los registros posteriormente. La desventaja que hasta ahora
presenta VB 6.0 es que no posee sentencias para eliminar registros de este tipo de fichero.
Esperemos que las versiones posteriores posean dichas funciones.

PARA LECTURA:
Sentencia Get:
La sentencia Get se utiliza para leer u obtener registros almacenados en el fichero, tiene la
siguiente forma general:
Get #Número, Registro, Variable

Donde Número es el número que se asignó al fichero de donde se quiere obtener


información, Registro es un número natural que indica el número de registro y Variable es la
variable que almacena el valor que se encuentra grabado en la memoria. Variable puede ser un
tipo de dato, un objeto (Object) o una estructura (Type).

PARA ESCRITURA:
Sentencia Put:
La sentencia Put tiene una forma similar a la sentencia Get, se generaliza como:
Put #Número, Registro, Variable

Donde Número es el número de fichero donde quiere escribirse, Registro es un número


natural que contiene el número de registro y Variable es la variable que contiene el valor, cadena,
objeto o estructura que se escribirá. Si se da un valor de registro que ya estaba en lista, se
rescribirá su valor, se borrará el registro anterior. Por lo tanto esta sentencia sirve tanto para
escribir como para reemplazar.

Eliminar registros de un fichero con Acceso Aleatorio:


Programación con VB 6.0 Ing. Kelvin Atencio

Aunque no existe un método para eliminar registros, se puede seguir un conjunto de pasos
que permiten eliminarlos, estos son:

1. Abrir un archivo o fichero de acceso aleatorio provisional. El Archivo original queda


hasta ahora intacto.
2. Pasar los registros que no serán borrados al fichero provisional.
3. Cerrar el fichero de original mediante la sentencia Close #Número.
4. Borrar de la memoria el archivo original mediante la instrucción Kill(Archivo).
5. Abrir de nuevo el archivo original con tipo de acceso aleatorio.
6. Devolver los registros.
7. Cerrar el archivo provisional.
8. Borrar de la memoria el archivo provisional con la instrucción Kill(Provisional). Este
atento a que el archivo provisional no tome el nombre de un archivo existente, de ser
así el archivo será borrado.

En el siguiente programa se utiliza el siguiente procedimiento para eliminar registros.

Programa #28. Extensión del Programa #7 - Coordenadas:


El siguiente programa es una extensión del programa #7 que se planteaba usar el control
ListBox (Cuadro de lista) para agregar valores de coordenadas X e Y.
Ahora con el trabajo de los ficheros nos ofrecen la posibilidad de guardar estos valores en
archivos que puedo utilizar posteriormente, agregando o eliminando valores.
Agregue un control Common Dialog Control 6.0 (cuadros de diálogos comunes encontrado
en la sección de Componentes del menú Proyecto o presione la combinación Ctrl+T), el nombre de
este control será el que viene por defecto (CommonDialog1)
Además, agregue tres botones adicionales a los que contiene el formulario con los
nombres cmdNuevo, cmdAbrir, cmdCerrar.
Agregue el siguiente código, ademas del que ya aparece:

Private Sub cmdNuevo_Click()


Dim Nuevo As String
Nuevo = InputBox("Introduzca un nombre de Archivo", "Nuevo")
Archivo = CStr("C:\" + Nuevo + ".dat")
Open Archivo For Random As #1 Len = 4
If LOF(1) > 0 Then
For Registro = 1 To LOF(1) / 4
Get #1, Registro, Punto
lstPuntos.AddItem "(" & Punto.X & "," & Punto.Y & ")"
Monitor.Circle (Punto.X, Punto.Y), 30, vbRed
Next Registro
End If
txtX.SetFocus
End Sub

Private Sub cmdAbrir_Click()


CommonDialog1.Filter = "Archivos *.Dat|*.dat"
CommonDialog1.ShowOpen
Archivo = CommonDialog1.FileName
Open Archivo For Random As #1 Len = 4
For Registro = 1 To LOF(1) / 4
Get #1, Registro, Punto
lstPuntos.AddItem "(" & Punto.X & "," & Punto.Y & ")"
Monitor.Circle (Punto.X, Punto.Y), 30, vbRed
Next Registro
txtX.SetFocus
End Sub
Programación con VB 6.0 Ing. Kelvin Atencio

Private Sub cmdCerrar_Click()


Close #1
lstPuntos.Clear
Monitor.Refresh
End Sub

‘Ojo: AHORA, CAMBIE EL CONTENIDO DE LOS SIGUIENTES EVENTOS:

Private Sub cmdIngresar_Click()


Punto.X = CInt(txtX)
Punto.Y = CInt(txtY)
Monitor.Circle (Punto.X, Punto.Y), 30, vbRed
lstPuntos.AddItem "(" & Punto.X & "," & Punto.Y & ")"
Registro = LOF(1) / 4 + 1
Put #1, Registro, Punto
txtX = ""
txtY = ""
txtX.SetFocus
End Sub

Private Sub cmdEliminar_Click()


Dim RegEliminar As Integer
RegEliminar = lstPuntos.ListIndex + 1
Open "C:\Provisional123.dat" For Random As #2 Len = 4
For Registro = 1 To LOF(1) / 4 - 1
If Registro >= RegEliminar Then
Get #1, Registro + 1, Punto
Put #2, Registro, Punto
Else
Get #1, Registro, Punto
Put #2, Registro, Punto
End If
Next Registro
Close #1
Kill (Archivo)
lstPuntos.Clear
Monitor.Refresh
Open Archivo For Random As #1 Len = 4
For Registro = 1 To LOF(2) / 4
Get #2, Registro, Punto
Put #1, Registro, Punto
lstPuntos.AddItem "(" & Punto.X & "," & Punto.Y & ")"
Monitor.Circle (Punto.X, Punto.Y), 30, vbRed
Next Registro
Close #2
Kill ("C:\Provisional123.dat")
End Sub

Además agregue un módulo estándar (El módulo estándar se agregar mediante la barra de Menú
en Proyecto – Agregar Módulo) y en él agregue el siguiente código:

Public Type Puntos


X As Integer
Y As Integer
End Type
Programación con VB 6.0 Ing. Kelvin Atencio

En la sección de declaraciones del formulario donde aparece Option Explicit agregue


debajo:

Dim Punto As Puntos, Registro As Integer, Archivo As String

Ejecute el formulario, haga clic sobre el botón cmdNuevo y establezca un nombre para el
archivo nuevo, agregue valores de coordenadas y estos se irán grabando en el disco duro en un
archivo cuyo nombre usted estableció.
Para cerrar el fichero presione el botón con el nombre cmdCerrar, si intenta abrir un archivo
o crear un archivo nuevo y está abierto otro fichero el programa generará un error.
Puede borrar puntos de coordenadas mediante el botón cmdEliminar, en este caso (a
diferencia del programa #7 que borraba sólo el dato de la lista) el programa nuevo borra el punto
de la lista y del cuadro de imagen.
Si desea tener una explicación detallada sobre la codificación de este pasado programa
puede dirigirse a Sección Detallada de Programas al final de este trabajo de investigación.

Fichero de Acceso Binario:


Como ya se ha dicho este tipo de fichero es muy parecido al fichero de acceso aleatorio
devuelve la información tal como se encuentra en la memoria, por lo tanto no pueden ser leídos por
el bloc de notas, la diferencia radica en que estos no almacenan la información a través de
registros sino por cada byte.
La forma general para abrir un fichero con acceso binario es:
Open Archivo For Binary As #Número

Donde Archivo es una cadena de texto que indica el nombre y la ruta del fichero y Número
es el número que se asigna al fichero.
Por ejemplo:

Dim ByteDiez As String


Archivo = "C:\Fichero.dat"
Open Archivo For Binary As #1
Get #1, 10, ByteDiez
ByteDiez=R
Put #1, 10, ByteDiez
Close #1

En este caso se abre un fichero, se lee el décimo byte y se le asigna a la variable ByteDiez,
luego se cambia la variable a r y se escribe en esa misma posición la variable.

Cierre de Fichero:
Tanto los ficheros de acceso secuencial, los de acceso aleatorio y binarios se cierran de la
misma manera, se utiliza la siguiente sintaxis:
Close #Número

Donde Número es el número de fichero que se desea cerrar, si se omite se cierran todos
los ficheros, también se puede utilizar el método Reset para cerrar todos los ficheros.

Otras funciones de Ficheros:


Para ubicar otras funciones de ficheros puede dirigirse al Examinador de Objetos y escribir
(en buscar) la palabra FileSystem.
Programación con VB 6.0 Ing. Kelvin Atencio

16. IMPRIMIR TEXTO E IMÁGENES:


Para imprimir texto e imágenes se utiliza el objeto Printer, que como todos los objetos
posee propiedades y métodos.
El objeto printer posee una colección que contiene todas las impresoras instaladas en el
computador, para acceder a ella se pueden utilizar las siguientes líneas de comando:
Agregue un cuadro combinado (ComboBox) de nombre Combo1a un formulario y escriba
el siguiente código:

Private Sub Form_Load()


Dim Impresora As Printer
For Each Impresora In Printers
Combo1.AddItem Impresora.DeviceName
Next
End Sub

Al ejecutar el programa el cuadro combinado contiene todas las impresoras instaladas en


su computador.
Para colocar una impresora como impresora predeterminada se utiliza la instrucción:

Set Printer = Printers(índice)

Donde índice indica el número de la lista de la impresora. Las impresoras están


enumeradas desde cero hasta Printer.Count – 1. Para conocer el número de índice utilice la
siguiente sintaxis:

Private Sub Form_Load()


Dim Indice As Integer
For Indice = 0 To Printers.Count - 1
Combo1.AddItem Indice & " - " & Printer.DeviceName
Next
End Sub

En este caso al cargar el formulario, el cuadro combinado contendrá el índice de la


impresora al lado de su nombre de identificación.

Para imprimir texto mediante el objeto Printer se utiliza el método Print de la siguiente
manera:
Printer.Print Texto

Donde texto contiene la cadena de caracteres que se desea imprimir, se puede llamar al
contenido de una caja de texto (TextBox) si se coloca su nombre, de la siguiente manera:
Printer.Print Text1.Text

Para imprimir imágenes de debe llamar mediante la sentencia:


Printer.PaintPicture LoadPicture (Ruta), DistanciaX, DistanciaY

Donde Ruta es una cadena de texto que contiene la ruta y el nombre de la imagen que se
desea imprimir, DistanciaX es la distancia en puntos que existe entre el margen izquierdo del papel
y la ubicación donde se desea imprimir la imagen y DistanciaY la distancia entre el margen superior
y la ubicación donde se desea imprimir la imagen.

Además de poder imprimir texto e imágenes, el objeto printer soporta los métodos gráficos
explicados en el control PictureBox (Circle, Line, CurrentX, CurrentY), puede imprimir, círculos,
arcos, elipses, cuadrados, rectángulos, etc. Pero en este caso hay que resaltar que la impresora
generalmente tiene más resolución que el monitor y por lo tanto al utilizar un método gráfico con el
Programación con VB 6.0 Ing. Kelvin Atencio

objeto Printer debe tomar en cuenta que los puntos por pulgadas de la impresora son mucho mayor
a los puntos por pulgada del monitor. Al momento de imprimir se observan éstos más pequeños.

Programa #29. Objeto Printer:


Para la realización de este programa sólo es necesario agregar un botón de comando
(Commnad1) y un cuadro de texto (Text1) a un formulario, agregue después el siguiente código:

Private Sub Command1_Click()


If Text1.Text <> "" Then
Printer.CurrentX = 15
Printer.CurrentY = 20
Printer.FontName = "Times New Roman"
Printer.FontSize = 13
Printer.Print Text1.Text
Printer.PaintPicture LoadPicture _
("C:\Windows\Aros.bmp"), Printer.ScaleWidth / 2, 20
Printer.Circle (2000, 2000), 1000, vbRed
Printer.Line (0, 1500)-(800, 500), vbBlack
Printer.CurrentX = Printer.ScaleWidth / 2 - 300
Printer.CurrentY = Printer.ScaleHeight - 500
Printer.Print "Página " & Printer.Page
Printer.EndDoc
Else
MsgBox "No hay texto para imprimir", vbExclamation, "Texto
vacío"
End If
End Sub
Ejecute el programa, escriba sobre el cuadro de texto y luego presione el botón de
comando para enviar a imprimir.

En el programa anterior se utiliza el método EndDoc del objeto Printer para enviar el
documento a la impresora, este método da fin a la inclusión de elementos y da comienzo a la
impresión.
Existen otros métodos muy útiles, uno de ellos es NewPage, que continúa el trabajo de
impresión en una nueva página y el método KillDoc que cancela el trabajo de impresión.

Existe una enumeración en VB 6.0 llamada PrinterObjectConstants que puede verse desde
el examinador de objetos, ella contiene las distintas constantes que pueden establecerse a las
propiedades en un trabajo de impresión. Definen el tipo de papel a usar, orientación del mismo,
color y calidad de la impresión y otras propiedades.
Programación con VB 6.0 Ing. Kelvin Atencio

17. EL PORTAPAPELES:
El portapapeles de Windows puede llamarse mediante la palabra Clipboard. Permite unas
de las acciones mas comunes usadas bajo ambiente Windows: copiar, cortar y pegar.
Este objeto no posee propiedades ni eventos, sólo contiene seis métodos que sirven para
colocar, obtener, verificar el formato o borrar el contenido de él. Existen dos métodos que sirven
para trabajar con texto: SetText y GetText; que coloca información o obtiene cadenas de texto del
portapapeles respectivamente. Otros dos métodos que funcionan de la misma manera pero para
gráficos, son: SetData y GetData. El método GetFormat devuelve un valor booleano que indica si
un elemento del portapapeles se ajusta a un formato determinado y el método Clear se utiliza para
eliminar o vaciar la información del portapapeles, tanto para texto como para gráficos.
El portapapeles puede contener dos elementos siempre y cuando no tengan el mismo
formato, es decir, si pega una imagen al portapapeles y luego un texto, permanecen los dos
elementos contenidos en el mismo. Pero si coloca un texto, y posteriormente otro texto se elimina
el primero para colocar el segundo.

Detalles de los métodos:


Método SetText:
Como ya se ha mencionado el método SetText del objeto Clipboard se utiliza para colocar
una cadena de texto en el portapapeles, lo que corresponde a la acción de Windows Copiar, se
utiliza la siguiente sintaxis:
Clipboard.SetText Texto [, Formato]
Donde Texto es la cadena de texto que se va a colocar en el portapapeles. Puede ser
alguna variable o un objeto que contenga una cadena de texto (por ejemplo el contenido de la
propiedad caption de una etiqueta).
Formato es opcional y se refiere a algunos de los formatos que pueden ser reconocidos,
para cadenas de texto los formatos pueden ser:

Formato Valor Numérico Descripción


vbCFText 1 (Predeterminado) Texto
vbCFLink -16640 Información de conversación DDE
vbCFRTF -16639 Formato de texto enriquecido

También puede copiar un fragmento de un cuadro de texto en el portapapeles si utiliza la


propiedad SelText de los mismos. Por ejemplo si utiliza la instrucción:
Clipboard.SetText Text1.SelText

Copia en el portapapeles la cadena de texto seleccionada en el cuadro de Texto (Text1).

Método GetText:
Este método se utiliza para devolver el contenido grabado en el portapapeles, lo que
corresponde a la acción de Windows Pegar, se utiliza la siguiente sintaxis:
Clipboard.GetText([Formato])

Donde Formato también es opcional y se refiere a los formatos de textos descritos en la


parte anterior.
Si el formato escrito en el método GetText no coincide con el que está grabado en el
portapapeles, se devuelve una cadena vacía.

Método SetData:
Este método se utiliza para colocar una imagen o gráfico en el portapapeles, también
corresponde a la acción de copiar, pero en este caso como ya fue mencionado es para imágenes y
gráficos, tiene la siguiente forma:
Clipboard.SetData FuenteImagen[, Formato]
Programación con VB 6.0 Ing. Kelvin Atencio

Donde FuenteImagen es la imagen que se desea colocar en el portapapeles, puede ser


una imagen contenida en un cuadro de imagen si utiliza la propiedad Image de los PictureBox (no
la propiedad Picture), o puede colocar alguna imagen contenida en el disco duro si agrega
LoadPicture como se indica a continuación:
Clipboard.SetData LoadPicture(Ruta)[, Formato]

Donde Ruta define la ruta y el nombre de la imagen que desea pegar en el portapapeles,
los formatos aceptados para imágenes son las siguientes:

Formato Valor Numérico Descripción


vbCFBitmap 2 Imagen de Mapa de Bits (BMP)
vbCFMetafile 3 Metarchivo (WMF)
vbCFDIB 8 Imagen de mapa de bits independiente (DIB)
vbCFPalette 9 Paleta de colores

Método GetData:
Se utiliza para pegar imágenes llamadas desde el portapapeles, tiene la siguiente forma:
Clipboard.GetData ([Formato])

Como en todos los casos formato es opcional, puede tomar cualquiera de los valores o
constantes descritos en el punto anterior, de colocarse debe ir entre paréntesis y si se omite, el
portapapeles alige el formato apropiado con el que fue grabado.

Método GetFormat:
Este método se utiliza para verificar el formato del texto o imagen contenida en el
portapapeles. Sólo puede ser verdadero (True) o falso (False), que corresponde al si o no el
contenido del portapapeles cumple con un formato específico tanto para texto como para
imágenes, tiene la siguiente forma:
VariableBool=Clipboard.GetFormat(Formato)

En este caso el formato si es requerido colocarlo, puede tomar cualquiera de los formatos
especificados en SetText y SetData, la VariableBool almacena Verdadero o Falso dependiendo de
la correspondencia del contenido del portapapeles con el formato.
Es muy importante resaltar que algunas imágenes cumplen en algunas ocasiones con más
de un formato de imagen. Es decir, una sola imagen puede cumplir con el formato vbCFBitmap y a
la vez el formato vbCFDIB.

Método Clear:
Borra el contenido del portapapeles, si el portapapeles contiene texto e imágenes se borran
ambos. Es muy utilizado muy a menudo antes de colocar algún contenido al portapapeles, sin
embargo, como se puede colocar simultáneamente texto e imágenes puede omitirse para agregar
alguno de ellos sin borrar el contenido anterior. Pero, si sólo se está trabajando con un formato
(sólo texto o sólo imagen) es recomendable vaciar el contenido del portapapeles antes de colocar
un nuevo elemento.
Este método tiene la siguiente forma:
Clipboard.Clear

Programa #30. Clipboard:


Realice un formulario como se ve a continuación:
Programación con VB 6.0 Ing. Kelvin Atencio

Este formulario cuenta con los siguientes controles:


Picture1: PictureBox que contiene una imagen (cualquiera) desde la propiedad Picture. En
este caso se visualiza la imagen de una computadora (carpeta de imágenes de íconos)
Picture2: PictureBox que tienes las propiedades Height y Width iguales a Picture1 y no
contiene ninguna imagen. Se encuentra debajo de Picture1.
Text1: TextBox donde fue borrado la propiedad Text, se encuentra en l aparte superior
derecha.
Label1: Etiqueta donde se encuentra escrito en la porpiedad Caption: Esta es una cadena
de texto.
Command1: CommandButton con caption: Copiar Texto
Command2: CommandButton con Caption: Copiar Imagen
Command3: CommandButton con Caption: Pegar Texto
Command4: CommandButton con Caption: Pegar Imagen
Command5: CommandButton con Caption: Contenido Portapapeles
Command6: CommandButton con Caption: Limpiar Todo
Label2: Etiqueta ubicada en la parte inferior. Propiedad Caption: Cadena Vacía (“”).

Coloque el siguiente código, puede copiar y pegar:

Option Explicit

Private Sub Command1_Click()


Clipboard.SetText Label1.Caption
End Sub

Private Sub Command2_Click()


Clipboard.SetData Picture1.Image
End Sub

Private Sub Command3_Click()


Text1.Text = Clipboard.GetText()
End Sub

Private Sub Command4_Click()


Picture2.Picture = Clipboard.GetData()
End Sub

Private Sub Command5_Click()


Dim Formato As Byte, Mensaje As String
If Clipboard.GetFormat(vbCFText) Then
Formato = Formato + 1
Programación con VB 6.0 Ing. Kelvin Atencio

End If
If Clipboard.GetFormat(vbCFBitmap) Then
Formato = Formato + 2
End If
Select Case Formato
Case 0: Mensaje = "El Portapapeles está vacío"
Case 1: Mensaje = "El Portapapeles contiene sólo texto"
Case 2: Mensaje = "El Portapapeles contiene sólo una imagen"
Case 3: Mensaje = "El Portapapeles contiene una imagen y un texto"
End Select
Label2.Caption = Mensaje
End Sub

Private Sub Command6_Click()


Clipboard.Clear
Text1.Text = ""
Picture2.Picture = LoadPicture
Command5_Click
End Sub

Ejecute la aplicación e interactúe con la misma, puede copiar texto (Caption de Label1) o
imagen (imagen de Picture1), y colocarlo en otros controles. Puede verificar el contenido del
portapapeles o borrar para comenzar de nuevo.

Verificar el tipo de control activo para colocar un elemento al portapapeles:


Puede que quiera en algunas ocasiones llevar al portapapeles un elemento, pero que el
programa verifique el tipo de control activo, para colocar en el portapapeles una imagen o un texto
de acuerdo al control activo, es decir, si el control activo es un PictureBox aplicar el método
SetData o GetData y si lo es un control con propiedad Text utilizar SetText.
Para ello, se puede combinar La función TypeOf junto a Screen.ActiveControl de la
siguiente manera:
If TypeOf Screen.ActiveControl Is PictureBox Then
Clipboard.SetData Screen.ActiveControl.Image
ElseIf TypeOf Screen.ActiveControl Is TextBox Then
Clipboard.SetText Screen.ActiveControl.SelText
ElseIf TypeOf Screen.ActiveControl Is ListBox Then
Clipboard.SetText Screen.ActiveControl.Text
End If

Aplica para otros controles. Después de colocar un elemento en el portapapeles, se puede


pegar utilizando GetText y GetData también verificando el tipo de control de destino donde se
pegará. De la siguiente manera:

If TypeOf Screen.ActiveControl Is PictureBox Then


Screen.ActiveControl.Picture = Clipboard.GetData()
ElseIf TypeOf Screen.ActiveControl Is TextBox Then
Screen.ActiveControl.SelText = Clipboard.GetText()
ElseIf TypeOf Screen.ActiveControl Is ListBox Then
Screen.ActiveControl.AddItem Clipboard.GetText()
End If
Programación con VB 6.0 Ing. Kelvin Atencio

18. BASE DE DATOS:


Creación de una base de datos mediante código:
Ya se ha visto un poco sobre la conexión con base de datos mediate la utilización del
control Data. Y como se pueden eliminar y agregar registros a una tabla mediante el control no
intrínseco DBGrid.
Ahora este capítulo permite tener acceso a las bases de datos mediante otro
procedimiento, o mejor dicho mediante la utilización de un objeto llamado DAO (por sus siglas Data
Access Object).
Este objeto, no tiene representación gráfica en la aplicación, pero debemos declararla
como a una variable, siguiendo los parámetros para declaración de variable según el alcance que
se quiera que tenga.
Para comenzar a utilizar este objeto, se debe colocar la referencia, para ello se debe ir a la
lista de referencias que se encuentra en la barra de menú Proyecto, y luego buscar Referencias,
para elegir el Objeto DAO, debe encontrar en la lista el objeto Microsoft DAO 3.51 Objet Library
(para Access 97) o Microsoft DAO 3.6 Objet Library (para Access 2000), luego se hace clic en
aceptar. Se ha creado la referencia.
Luego podemos declarar una variable como una base de datos en la sección de
declaraciones de un módulo o del formulario, según el alcance que se desee, de la siguiente
manera:
Dim MiBase As Database
o
Public MiBase As Database

Nota: Si no se hace la referencia no se podrá declarar una variable como Database. Se generará el
siguiente Error de compilación. No se ha definido el tipo definido por el usuario.

El objeto DAO trabaja con colecciones, estas son a su vez objetos de acceso a datos.
Luego de haber declarado la Base de datos, se debe declarar una sesión de trabajo
mediante la utilización del Objeto Workspace. El objeto Workspace define una sesión de trabajo
para algún usuario. En algunos casos necesitará crear más de una sesión de trabajo, pero
normalmente sólo necesitará una sola sesión, para ello Visual Basic genera el primer elemento de
la colección WorkSpaces, esta es Workspaces(0).
Entonces primero declarar y luego, asignarlo. En el siguiente ejemplo se usa el Workspace
creado por defecto en VB -Workspaces(0)-.
Dim UnaSesion As Workspace
Set UnaSesion = Workspaces(0)

Luego pasamos a la creación de la base de datos, se utiliza la fórmula para la creación de


Objetos DAO, se propone como fórmula general:
Set ObjDAOInf = ObjDAOSup.Método (Argumentos)

Donde argumentos varía según el método que se vaya a utilizar y los Objetos DAO Inferior
y Superior mantendrán sus posiciones cualquiera que sea el caso de la creación del objeto DAO.
Para crear la base de datos se utiliza el método CreateDatabase, en este caso el objeto
DAO superior es el Workspaces UnaSesion y el objeto inferior MiBase, los argumentos son: (Ruta,
Idioma, Opciones) Ruta es una cadena de texto que define el archivo de base de datos que se
creará (de no tener extensión se agregará .mdb), Idioma es una constante de VB que define el
idioma (por supuesto), se recomienda para los idiomas español, inglés o francés, la constante
dbLangGeneral (la constante dbLangSpanish no ofrece ninguna ventaja frente a dbLangGeneral) y
opciones se refiere a la versión de Access en la que se creará y puede incluir también si desea
crear una base de datos codificada, si se omite se creará una base de datos no codificada. Por lo
tanto para crear una nueva base de datos se coloca:
Dim Archivo As String
Archivo="C:\CarpetaDatos\MiBase.mdb"
Programación con VB 6.0 Ing. Kelvin Atencio

Set MiBase=UnaSesion.CreateDatabase(Archivo, dbLangGeneral)

Después de creada una base de datos, se procede a crear las tablas, sus campos, y si se
desea también se pueden crear consultas, índices (claves) y relaciones entre tablas.

Para crear una tabla se usa el método CreateTableDef, pero antes de crearla se debe
declarar la variable correspondiente, por ejemplo:
Dim Tabla1 As TableDef
Si se declara de la forma anterior sólo se podrá crear una tabla, por lo tanto se deben
declarar tantas variables de objeto TableDefs como tablas se requieran para la base de datos. De
forma que se puede agregar a la sentencias anterior:
Dim Tabla1 As TableDef, Tabla2 As TableDef, Table3...
Cuando se está creando una tabla no se está agregando a la base de datos, solo se está
creando en forma apartada permaneciendo en la memoria RAM del ordenador, por ello luego debe
agregarse al documento de datos mediante el método Append, este se verá mas adelante.
Ahora si, se puede crear la o las tablas.
Set Tabla1 = MiBase.CreateTableDef("NombreTabla1")
Set Tabla2 = MiBase.CreateTableDef("NombreTabla2")
Set Tabla3 = MiBase.CreateTableDef("NombreTabla3")
...
Se puede observar que se ha usado la fórmula general:
Set ObjDAOInf = ObjDAOSup.Método (Argumentos)
En este caso ObjDAOInf es el objeto TableDef (Tabla#) y el superior es el nombre del
objeto DataBase (MiBase).
Para el caso del ejemplo puede cambiar los nombres de las tablas al que desea que
aparezcan cuando ejecute Access.
Siguiendo la secuencia, ahora le toca el paso a la creación de los campos, se usa el
método CreateField. Tal y como se procedió con los objetos anteriores, estos también deben
declararse, de la siguiente manera:
Dim Campo_1_1 As Field, Campo_1_2 As Field, Campo_2_1 As Field,...
En este ejemplo, se utiliza Campo_1_1 para referirse al campo de la primera tabla, primer
campo, es decir, el primer número se utilizó para identificar la tabla y el segundo para identificar el
número del campo. Ahora se puede crear el campo:
Si utilizamos la ecuación general:
Set ObjDAOInf = ObjDAOSup.Método (Argumentos)
Sería ahora:
Set Campo_1_1=Tabla1.CreateField("Nombre", Tipo, Caracteres)
Donde Nombre es una cadena de texto que definirá el nombre del campo, por ejemplo:
ID_Cliente, NombreCliente, Dirección, etc. Tipo define el tipo de dato que aceptará el campo: la
siguiente tabla enumera algunas de las opciones:
Constante Tipo Descripción
dbBoolean Boolean Verdadero o Falso
dbByte Byte 0 a 255
dbCurrency Currency Dinero o cálculos de signo decimal fijo
dbDate Date/Time Datos de fechas y hora
dbDouble Double Números de precisión doble
dbInteger Integer Números enteros medianos
dbLong Long Números enteros Largos
dbMemo Memo Texto extendido
dbNumeric Numeric Numérico
dbSingle Single Números de precisión simple
dbText Text Cadenas de texto
dbTime Time Hora
Se desea conocer otros tipos de datos puede dirigirse a la ayuda de VB.
En el caso de Caracteres, sólo aplica cuando el tipo de dato es texto, y se refiere al
número máximo de caracteres que puede tener la cadena de texto.
Programación con VB 6.0 Ing. Kelvin Atencio

Una vez creadas todas las tablas y campos de la base de datos se procede a agregarlas,
esto es posible al método Append, se utiliza de la siguente manera:
Primero los campos:
Tabla1.Fields.Append Campo_1_1
Tabla1.Fields.Append Campo_1_2
Tabla2.Fields.Append Campo_2_1

Aquí es muy útil la sentencia With cuando existe un número considerado de campos para
resumir el código:

With Tabla1
.Fields.Append Campo_1_1
.Fields.Append Campo_1_2
.Fields.Append Campo_1_3
.Fields.Append Campo_1_4
End With

Luego las tablas:


MiBase.TableDefs.Append Tabla1
MiBase.TableDefs.Append Tabla2

Para finalizar es recomendable no dejar la base de datos abierta, esta se cierra mediante
el método Close:

MiBase.Close

Programa #31. Crear una base de datos con código en VB:


Para este programa no necesita agregar ningún control al formulario, es necesario crear
una carpeta en el directorio C:\ de nombre CarpetaDatos, luego en el formulario agregue el
siguiente código:

Option Explicit

Private Sub Form_Click()


Dim MiBase As Database
Dim UnaSesion As Workspace
Set UnaSesion = Workspaces(0)
Dim Archivo As String
Archivo = "C:\CarpetaDatos\MiBase.mdb"
Set MiBase = UnaSesion.CreateDatabase(Archivo, dbLangGeneral)
Dim Tabla1 As TableDef, Tabla2 As TableDef
Set Tabla1 = MiBase.CreateTableDef("Productos")
Set Tabla2 = MiBase.CreateTableDef("Clientes")
Dim Campo_1_1 As Field, Campo_1_2 As Field
Dim Campo_1_3 As Field, Campo_2_1 As Field
Dim Campo_2_2 As Field
Set Campo_1_1 = Tabla1.CreateField("CodigoProducto ", dbInteger)
Set Campo_1_2 = Tabla1.CreateField("Producto", dbText, 15)
Set Campo_1_3 = Tabla1.CreateField("Precio", dbCurrency)
Set Campo_2_1 = Tabla2.CreateField("CodigoCliente", dbInteger)
Set Campo_2_2 = Tabla2.CreateField("NombreCliente", dbText, 20)
With Tabla1
.Fields.Append Campo_1_1
.Fields.Append Campo_1_2
.Fields.Append Campo_1_3
Programación con VB 6.0 Ing. Kelvin Atencio

End With

With Tabla2
.Fields.Append Campo_2_1
.Fields.Append Campo_2_2
End With

With MiBase
.TableDefs.Append Tabla1
.TableDefs.Append Tabla2
End With
MiBase.Close
End Sub

Ejecute la aplicación, haga click sobre el formulario parece que el programa no


reaccionara, pero la verdad se ha creado una base de datos en la nueva carpeta CarpetaDatos que
se encuentra en el directorio C:\, puede dirigirse a ella y verificar, si da un clic nuevo se producirá
un error debido a que no se podrá crear una base de datos ya creada, sólo se podrá abrir mediante
el método OpenDatabase.

Faltan ahora dos procesos por aprender, la creación de índices y de relaciones.

Para crear un índice se utiliza el método CreateIndex, y como todos los objetos debe
declararse antes de ser asignado:
Dim Indice As Index
Set Indice = Tabla1.CreateIndex("PrimerIndice")

Una vez creado el índice, éste pasa a crear al campo que se quiere sea índice, fíjese bien
que aunque la sentencia dice crear campo, el campo ya estuvo que estar creado, sólo se utiliza
esta sentencia para asignar el índice al campo deseado:

Set Campo_1_1 = Indice.CreateField("CodigoProducto ", dbInteger)

En este caso el nombre del campo y su tipo de dato debe coincidir con el campo creado.
De hecho si es tipo texto (dbText) debe coincidir también el número de caracteres declarados
cuando se creó el campo. Esto en caso que se quiera que sólo un campo tenga índice, si desea
que otro campo de la misma tabla también sea índice entonces se colocan las dos sentencias:

Set Campo_1_1 = Indice.CreateField("CodigoProducto ", dbInteger)


Set Campo_1_2 = Indice.CreateField CreateField("Producto", dbText, 15)

Una vez que se hayan asignado el o los índices, se debe(n) agregar a la colección Fields,
de la siguiente manera:
Indice.Fields.Append Campo_1_1
Indice.Fields.Append Campo_1_2

Las dos líneas son necesarias si desea que dos campos sean índices, si sólo se desea que
un campo sea el indice sólo es necesario escribir la primera línea.
Después de agregar el o los índices a la colección Fields, se deben agregar a la colección
Indexes del Objeto Tabledef, de la siguiente manera:

Tabla1.Indexes.Append UnIndice

Ahora le toca el turno a la creación de Tablas Relacionales, es decir, las relaciones.


Éstas se crean mediante el método CreateRelation, pero claro, primero hay que declararla:

Dim Relacion As Relation


Programación con VB 6.0 Ing. Kelvin Atencio

Para relacionar un campo con otros, ese campo debe ser clave primaria. A la tabla que
contiene a este campo se le llama Tabla Principal. A la tabla que contiene el campo (o los campos)
relacionados se le llama Tabla Relacionada.
Después de declararse, si observa un poco los pasos de los objetos, le toca el paso a la
creación de la relación, esto se hace de la siguiente manera:

Set Relacion = MiBase.CreateRelation ("NombreRelación")

En este caso NombreRelación pasa a ser el nombre de la relación, aunque este sea poco
utilizado. La relación se ha creado pero falta un detalle importante, que campos se van a
relacionar. Supongamos que se va a relacionar el primer campo de la primera tabla (Campo_1_1
de la Tabla1) y el primer campo de la segunda tabla (Campo_2_1 de la Tabla2), claro está, esto no
es posible porque estos campos no son del mismo tipo ni tienen el mismo nombre, pero como se
dijo anteriormente, esto es sólo una suposición.
Para ello se procede de la siguiente manera:

Relacion.Table = "Tabla1"
Relacion. ForeignTable = "Tabla2"

Podemos utilizar la propiedad Attributes para cambiar los atributos de la relación, por
ejemplo se puede establecer la constante dbRelationUpdateCascade, para que, cuando se realice
algún cambio en el campo de la tabla principal, se refleje en el campo o los campos relacionados
con él.

Establecemos cual es el nombre del campo de la tabla principal que vamos a relacionar,
mediante el método CreateField (aunque el campo ya ha sido creado), también debemos declarar
el nombre del objeto Field que vamos a crear para la relación:

Dim OtroCampo As Field


Set OtroCampo = Relacion.CreateField("Campo_1_1")

Establecemos ahora cual es el nombre del campo en la tabla relacionada:

OtroCampo.ForeignName = "Campo_2_1"

Añadimos el campo creado a la colección Fields del objeto Relation

Relación.Fields.Append OtroCampo

Y ahora añadimos el objeto Relation recién creado a la colección Relations del objeto
Database

MiBase.Relations.Append Relacion

Con esto se da fin al trabajo de investigación, a continuación la Sección Detallada de


Programas.
Programación con VB 6.0 Ing. Kelvin Atencio

Sección:
Explicación Detallada de Programas

Programa #1. Saludar:

Cuando hace clic en el botón Saludar, el programa llama al código de Private Sub
Command1_Click(). Por ello, verifica si la propiedad Caption del botón Command1 es
“Saludar”, si es así, entonces el programa ejecuta las sentencias después de Then y antes de
Else. Por lo tanto, la propiedad Text del control Text1 mostrará: “¡Hola!, ¿Cómo estas?”, luego
cambia la propiedad Caption de Command1 a “Borrar”. Ahora el botón no mostrará la palabra
Saludar, sino Borrar.
Al volver a hacer clic (ahora en Borrar), el programa vuelve a llamar a la sentencia
Private Sub Command1_Click(). Verifica la condición Command1.Caption=”Saludar”,
pero en este caso es falsa ya que es “Borrar”, entonces se ejecutan las sentencias que están
después de Else y antes de End If. Así, la propiedad Text del control Text1 generará una
cadena vacía (“”) y la propiedad Caption del botón Command1 volverá a ser “Saludar”.

Programa #2. Sumar:


La Sentencia (Public Suma As Double) crea una variable pública de nombre Suma
de tipo doble (Numérico de doble precisión) que guardará el resultado de una operación. (ver
Sección nro. 5 Variables y Tipos de Datos)
Cuando hace clic en el comando Sumar, el programa llama a la secuencia de códigos de
Private Sub Command1_Click().
Dim es una expresión que también crea una variable en este caso privada. El nombre de la
variable es Valor y es también de tipo Doble.
La siguiente línea verifica si la propiedad Text de txtValor es una cadena vacía (si no
hay datos), si es así asigna a la variable Valor el número cero, sino es cadena vacía, convierte el
contenido de txtValor a tipo doble y lo asigna a la variable Valor (Si el contenido de txtValor no
es numérico se genera un error).
La siguiente línea realiza la operación: Suma = Suma + Valor, aquí realiza la operación
suma + valor y lo asigna a la variable Suma, Ejemplo, si suma es igual a 10 y quiero sumar 15, VB
toma el valor de Suma = 10 y le suma 15 luego borra de la memoria el valor 10 y asigna 25. La
siguiente línea consigue que se muestre este resultado en la propiedad Caption de
lblResultado.
Luego, se convierte el contenido de txtValor a una cadena vacía, de manera que borra el
contenido que haya en ella.
Es importante resaltar que Suma se declaró como una variable pública para mantener su
valor fuera de el evento clic del botón de comando. Si se declara privada dentro del procedimiento
Private Sub Command1_Click() cada vez que inicie la secuencia, Suma valdrá cero, por lo
que el resultado mostrará el valor de la variable Valor. También podría declararse privada pero
con la sentencia Static (Static Suma as Double) para que mantuviera su valor.

Programa #3. Área de un triángulo:


La primera sección del programa llama al evento clic del botón de comando Borrar y
elimina el contenido de los cuadros de texto, desactiva el botón calcular y ocasiona que el cuadro
de texto donde se debe introducir el valor de la Base del triángulo tome el enfoque.
La segunda sección cita al evento clic del botón calcular (en caso que esté activado), crea
las variables privadas Base, Altura y Area como valores numéricos de doble precisión, luego
asigna a Base el valor de txtBase a Altura el valor de txtAltura. Después verifica si la entrada de
datos de estos cuadros de texto son numéricos, de ser así, calcula el área y lo muestra en un texto,
sino muestra un mensaje de Error.
Programación con VB 6.0 Ing. Kelvin Atencio

Luego viene la siguiente sección, que se llama cada vez que cambie el contenido del
cuadro de texto txtBase, comprueba si la longitud en bytes de los cuadros de texto txtBase y
txtAltura tienen uno o más elementos, de ser así, activa el botón Calcular. Es importante resaltar
que el contenido de txtAltura_Change es igual al contenido de txtBase_Change, ya que estos
verifican si los dos cuadros de textos tienen uno o más elementos.
Luego se llama al evento KeyPress, que se genera cada vez que se presione y libera una
tecla del teclado. En este caso, reconoce si se presiona la tecla Enter (vbKeyReturn o 13), de ser
presionada esta tecla ocasiona que el cuadro de texto txtAltura tome el enfoque.
El último evento en la codificación es KeyPress del Cuadro de texto txtAltura, este provoca
(si se presiona la tecla Enter) que el botón de comando Calcular tome el enfoque.

Programa #4. Dibujar en un PictureBox:


Como la explicación de los métodos fueron explicados uno por uno durante los métodos
gráficos del PictureBox, no se darán mayores explicaciones sobre cada uno. Sólo hay que resaltar
varios puntos:
• Si el comando Mostrar Imagen produce un error, coloque la ruta de una imagen
que esté grabada en su computador.
• En el Comando para crear cuadros se puede ver que se asigna a la propiedad
FillStyle (Estilo de relleno) el valor de uno, que a pesar de ser el predeterminado,
pudo ser cambiado si se presiona antes la tecla para dibujar la elipse. Este estilo
determina un relleno transparente (sin color). Además, en el primer rectángulo se
omite la instrucción para el color, por ello, el programa asigna el color determinado
por la propiedad Monitor.ForeColor. En la línea siguiente el argumento B cambió a
BF, esto se utiliza para rellenar un cuadrado o rectángulo con el color asignado.
Luego se enmarca el cuadrado rellenado con uno negro.
• En el comando para crear puntos, primero se realizan tres puntos que se muestran
cerca de la esquina superior izquierda, luego se crea una secuencia de puntos que
generan una curva con la la Sentencia For X=1 to Monitor.Width. Ésta va
aumentando el valor de X de uno en uno hasta llegar al valor del ancho del control
PictureBox (Monitor.Width), durante esta secuencia de puntos se calcula el valor
de Y (una función) y se dibuja el punto X, Y. La instrucción Next hace que la
sentencia For vaya al próximo valor de X. El color de los puntos utiliza la
instrucción RGB. Ver explicación de esta sentencia en el capitulo 12 de este
trabajo.
• En el comando para crear dibujar la elipse, se coloca la propiedad FillStyle a cero
(Sólido), esto crea un relleno para la elipse y a la propiedad FillColor se asigna el
color rojo, es decir, se rellena de color rojo, una elipse de color azul.
• Luego viene el comando para realizar círculos y arcos, se asigna a la constante Pi
el valor 3.1415927, esta constante se utiliza para trabajar en grados radianes,
luego se coloca de nuevo la propiedad FillStyle a transparente (1) y se dibuja un
círculo y un arco desde el grado pi medio (Pi/2) hasta el grado pi. (90° a 180° si
fueran grados sexagesimales, ya que la conversión dice que un grado Pi es 180°
sexagesimales)
• Para escribir texto se va al punto (X, Y) = (2500, 3000) se cambia la propiedad
ForeColor para escribir en color azul.

Programa #5. ¿Dónde estudiar?:


Este programa tiene la finalidad de mostrar como se pueden agrupar varios controles
mediante el control Frame (marcos) y además dar una respuesta a los eventos clic de un botón de
opción, en este caso mostrando una respuesta en una etiqueta llamada Label1.
La primera sentencia crea las variables de cadenas de texto strCarrera y strInstitucion.
El primer evento que es llamado es el evento optCarrera_Click(Index), que ocurre cuando
hace clic sobre cualquier botón de opción que esté dentro del marco Carrera, si hace clic en el
botón de opción Ingeniería, este corresponde al Index #0 (optCarrera(0)), se asigna a la variable
strcadena el Caption del botón, en este caso Ingeniería, luego llama al evento Display que escribe
Programación con VB 6.0 Ing. Kelvin Atencio

en la etiqueta una cadena que incluye “Ha decidido estudiar” luego la variable strCarrera que
describe la carrera, a continuación escribe “ en la “ y después la variable strInstitucion. No se hizo
referencia el evento de los botones de opción dentro del control Frame de la institución ya que
ocurre un procedimiento semejante al del control Frame que contiene las carreras. El botón de
comando finaliza el programa mediante la descarga del formulario.

Programa #6. Contrato:


En este programa la etiqueta muestra en la etiqueta “Si contratar” si las tres casillas de
verificación están activadas o chequeadas, si alguna falta muestra la etiqueta “No contratar”.

Programa #7. Coordenadas:


Los eventos Change de los dos cuadros de texto habilitan y deshabilitan el botón de
comando cmdIngresar según ambos tengan uno o más elementos. Si ellos tienen uno o más
elementos se habilita y sino se deshabilita.
El evento KeyPress de txtX hace que el cuadro de texto txtY tome el enfoque cuando
se presiona la tecla Enter. El evento KeyPress de txtY hace (si se presiona la tecla Enter) que
tome el enfoque el botón de comando cmdIngresar si está habilitado, y si no lo está, toma el
enfoque txtX.
El evento clic del comando Ingresar, genera dos variables de números enteros (X,Y) asigna
a la primera el valor entero de txtX y a la segunda el valor entero de txtY; luego, dibuja un
pequeño círculo (simulando un punto) en las coordenadas del cuadro de imagen (Monitor).
La siguiente línea agrega un elemento a la lista de puntos, incluye un paréntesis abierto, la
variable X, una coma, la variable Y y un paréntesis cerrado.
El contenido del evento clic del comando Eliminar se puede comprender con la explicación
de cómo se borra un elemento de una lista durante la explicación de este control e igualmente el
método Clear del cuadro de lista. El método Refresh del cuadro de imagen borra el contenido del
PictureBox (Monitor).

Programa #8. Número de Mes:


El primer evento Form_Load ocurre cuando se carga el formulario, dentro de ella están las
instrucciones para agregar cada mes (mediante su nombre) al control Combo1.
Luego se presenta el evento clic del botón de comando Command1. Primero, crea una
variable de nombre Mes de tipo Byte (byte es un número entero que puede estar entre 0 y 255, se
creo de este tipo ya que el valor de Mes va a estar entre 1 y 12). La línea consecutiva verifica cual
es el valor constante o cadena que toma Combo1 (selecciona el caso); en caso que sea Enero
asigna a la variable Mes el valor 1, si es Febrero le asigna dos y así sucesivamente. La sentencia
Case Else ocurre cuando no toma ninguno de los casos particulares, en este caso, si no toma
ningún nombre de mes desplega un mensaje de error. La instrucción End Select finaliza la
secuencia de Select Case y luego se muestra en el cuadro de texto el valor de la variable mes.

Programa #9. Mirar el contenido de una etiqueta:


Dentro del evento Command1_click se asignan a las escala del formulario y a la de la
imagen la constante vbCharacters, para trabajar con escala de tamaño de caracteres de cadena
de texto. Luego, se llama al método mover que coloca la etiqueta al principio del control cuadro de
imagen (esquina superior izquierda). Después, se asigna a la propiedad caption de la etiqueta el
contenido del cuadro de texto, a continuación, se asigna a la propiedad Max de la barra de
desplazamiento la diferencia entre el ancho de la etiqueta y el ancho del cuadro de imagen mas un
carácter, esto se hace para que la barra de desplazamiento se limite a los extremos de la cadena
de texto, es decir, que se puede desplazar sólo por la cantidad de elementos que existen. La barra
de desplazamiento aparece (es visible) si el ancho del cuadro de imagen es menor al ancho del
contenido de la etiqueta.
El evento HScroll1_Change se llama cada vez que cambia la posición de la barra de
desplazamiento, esto se aprovechó para asignarle a la propiedad Left de la etiqueta el valor
negativo de la Barra de desplazamiento, es decir, la propiedad Value va de Min (mínimo) a Max
(máximo), en este caso de cero hasta (Label1.Width - Picture1.Width + 1), si se le
Programación con VB 6.0 Ing. Kelvin Atencio

asigna el valor negativo de Value a la propiedad left de la etiqueta, hace que la etiqueta se
desplace hacia la izquierda mostrando el contenido de ella.

Programa #10. Cyber:


Como la propiedad Enabled del control Timer está Activada (True) y además la propiedad
Interval de este control tiene el valor 1000, el programa llama al evento Timer cada segundo,
por lo tanto, cada segundo se llaman a las variables que preservan su valor debido a la sentencia
(Static), con los siguientes nombres: Segundos (tipo Byte), Minutos (tipo Byte), Horas (tipo
Entero), Precio (tipo Doble) y Contador (tipo Entero Largo).
Luego se aumenta en una unidad la variable Contador, cada vez que transcurre un
segundo se suma una unidad. Este contador nos sirve para calcular el precio del tiempo de uso.
Luego, se muestra en la primera etiqueta la hora del sistema (Label1=Time).
A continuación si el valor de los segundo no ha llegado a 59, se suma un segundo, de lo
contrario, se reinicia el conteo de los segundos y se suma un minuto. Similarmente si el conteo de
minutos no ha llegado a 59, se suma un minuto, de lo contrario se reinicia el conteo de minutos y
se suma una hora.
En la segunda etiqueta se muestra el contador de horas, minutos y segundos con un
formato de dos dígitos cada uno separados por los dos puntos.
Se calcula el valor del precio del tiempo de uso, para ello se contabiliza 1 unidad monetaria
cada tres segundos, si este valor no ha llegado a 100, la etiqueta del precio muestra 100 como
valor mínimo, después de los 5 minutos (tiempo cuando ya el precio ha alcanzado 100) se suma
cada tres segundos una unidad monetaria. El precio se muestra en la tercera etiqueta.

Programa #11. Directorio:


En este programa cuando se carga el formulario se llama a la secuencia de Dir1_Change,
esto se realizó con la intención que se actualice la lista de archivos al directorio seleccionado por
defecto “C:\”. Después, si ocurre el evento Change del DriveListBox (cambio de unidad de disco)
cambia la propiedad Path de la Lista de Directorio a la unidad elegida. Path es una propiedad que
sólo está disponible en tiempo de ejecución y devuelve o establece la ruta de acceso actual, por lo
tanto se actualiza la lista de directorio a la unidad seleccionada. Dentro del evento Change de Dir1,
la propiedad Pattern del File1 (Lista de Archivos) muestra sólo los archivos con la extensión
especificada, en este caso los archivos de extensón *.doc (Archivos de Word), luego la lista de
archivos actual muestra el directorio seleccionado; es decir, se muestran los archivos de Word de
la carpeta.
Se recomienda ir a la carpeta Mis Documentos para enlistar los archivos.
También puede cambiar la extensión de los archivos, si no elige ningún patrón se
mostrarán todos los archivos.

Programa #12. Contadores de Variables:


En este programa se crearon cuatro variables, la variable pública de nombre Variable
de tipo entero aumenta en uno si se presiona cualquiera de los dos botones de comando, como es
una variable pública conserva su valor después de presionar cualquiera de los dos botones.
Para la sección del evento clic del primer botón de comando se crean dos variables mas:
• Variable1, de tipo entero, se declara con la sentencia Dim, por lo tanto cada vez
que termina el evento clic del botón de comando éste toma el valor de cero, y
como mediante el procedimiento se aumenta en uno la primera etiqueta siempre
muestra el valor uno al presionar el primer botón.
• Variable2, también de tipo entero, en este caso se declara con la sentencia
Static, por lo tanto una vez terminado el procedimiento el valor conserva su valor
final, terminado el primer procedimiento su valor será uno, luego dos y así
sucesivamente tantas veces se presione este botón. Este valor se muestra en la
segunda etiqueta.
Para la sección del evento clic del segundo botón de comando se crea otra variable,
llamada Variable2. Como está declarada con la sentencia Static, conserva su valor después de
terminado este procedimiento, por lo tanto se aumenta en uno cada vez que presiona un clic. Es
Programación con VB 6.0 Ing. Kelvin Atencio

muy importante resaltar que a pesar de tener el mismo nombre de una variable de otro
procedimiento, es otra variable, ya que está declarada en otro procedimiento.

Programa #14. Variables de procedimientos:


La secuencia Option Explicit permite llevar el control de las variables, no permite que
se utilice una variable no declarada.
Public Area As Double, crea una variable de nombre Area de tipo numérico de
precisión doble.
La secuencia de Private Sub Form_load() se ejecuta cuando se carga el formulario,
en este caso cambia su propio caption a “Area de un Círculo” y suceden varios cambios de
propiedades de los controles del formulario.
La secuencia del procedimiento de evento Command1_Click se ejecuta cuando se hace
clic en el botón de comando, en este caso declara dos variables: La primera de nombre Radio de
tipo numérico de precisión doble y la segunda de nombre Area de tipo precisión doble.
Luego se colocó una sentencia de control If, en este caso quiere decir: Si el cuadro de
texto Text1 es diferente de vacío (tiene algún elemento) y además es numérico entonces se
procede a realizar el cálculo de área, antes asignando a la variable Radio el valor de text1
convertido a numérico de precisión doble.
Se muestra en la segunda etiqueta el área calculada y después se llama al procedimiento
de nombre Display. Este procedimiento tiene como única secuencia mostrar en la tercera etiqueta
una variable de nombre Area; es muy importante destacar que la tercera etiqueta mostró el valor
cero, ya que la variable Area a la que se hace referencia ya no es la variable Area calculada en el
procedimiento Command1_Click sino la variable publica que no a sufrido ningún cambio desde el
transcurso de todo el programa.

Programa#15. Procedimiento Function:


Como otros detalles de programación han sido explicados en programas anteriores, sólo se
procederá a explicar el procedimiento Function utilizado en este programa.
La “Function” de nombre Resto crea un procedimiento que devuelve un valor cuando es
llamado. Hay que resaltar que Resto fue declarada con dos variables, se puede notar que está
escrito Resto(Dividendo As Integer, Divisor As Integer), de modo que, la Function Resto se puede
llamar al escribir Resto(Valor1, Valor2), donde el Valor1 toma el valor del dividendo y Valor2 toma
el valor del divisor. En este programa cuando se presiona clic sobre el botón de comando el
programa verifica que la entrada de los cuadros de texto sean valores numéricos, de ser así se
asigna al caption de la etiqueta la función Resto con dividendo igual a Text1 y divisor Text2.

Programa #19. Sentencia Goto:


La primera línea del botón de comando On Error Goto NombreSubprocedimiento,
se aplica cuando puede suceder algún error mientras se ejecutan las instrucciones de un
programa, de modo que me guía hasta una sección del programa (subprocedimiento) que ejecuta
una serie de instrucciones cuando se produzca un error, son muy útiles mas que todo para mostrar
un mensaje personalizado de error al usuario, o para realizar acciones específicas ante la
presencia de un error.
En este programa esta sentencia dirige hasta el subprocedimiento ErrorValor que
contiene la siguiente instrucción:
If Err.Number = 13 Then
Esta sentencia verifica el número de error (Err.Number) que se ha producido al ejecutar
este procedimiento, en este caso el tipo de error tiene el número 13 que se refiere al Error (No
coinciden los tipos). El número de error siempre lo muestra VB al momento de producirse un error
en sus mensajes. Por ello, la sentencia On Error Goto puede aplicarse para informar al usuario
mediante un Mensaje (MsgBox) la acción que debe tomar para continuar utilizando la aplicación.
En este programa se utilizó para mostrar un mensaje al usuario diciendo que se produjo un
error en el valor introducido, borra el contenido de text1 y hace que éste tome el enfoque.
Si no hay error en el valor introducido, se llama a la función DivisibleEntre2_3_4 con el
valor introducido en Text1, al llamar a la función ésta verifica si el valor introducido es divisible
entre 2, en caso contrario dirige a la secuencia de la función al subprocedimiento NoEsDivisible,
Programación con VB 6.0 Ing. Kelvin Atencio

igual para el caso de divisible entre 3 y 4, una vez terminada esta secuencia se cambia el valor de
la función Divisible a Verdadero (hay que notar que en caso de que fuera falso el procedimiento ya
anteriormente ha saltado este paso), luego se colocó la sentencia Exit Function para que el
programa finalice la secuencia, el subprocedimiento NoEsDivisible cambia el valor de la función a
Falso.
Programa #24. Menú Emergente:
El primer procedimiento llamada es el evento Picture1_MouseUp que ocurre cuando libera
algún botón del mouse sobre el control Picture1 (Cuadro de imagen). En este la instrucción If
button=2 Then, ocurre cuando persona el botón secundario del mouse, si es así se desplega el
menú emergente mediante la instrucción: PopupMenu mnuDibujar, Popupmenu realiza el
llamado y al lado está el nombre del menú que se quiere desplegar.
Las demás instrucciones ya han sido vistas en la explicación del control cuadro de imagen.

Programa #26. Programa MDI:


Este programa utiliza las instrucciones mas comunes para programas con formulario MDI.
El formulario hijo (Form1) contiene dentro de sí la sentencia ScaleHeight y ScaleWidth para
adaptar el ancho y el alto al tamaño del formulario, se encuentra dentro del procedimiento de
evento Form_Resize, para que cada vez que cambie de tamaño el formulario, el control Picture1
cambie su tamaño también adaptándose al tamaño del formulario.
Dentro del procedimiento de evento Form_Activate se encuentra el iniciador de conteo de
documentos abiertos, Contador toma el valor 1, es importante resaltar que se colocó dentro del
procedimiento de evento Form_Activate ya que no se permite colocar valores a variables dentro del
procedimiento Form_Load.
Cuando se hace clic sobre el primer botón de comando se crea una nueva instancia de
Form1, se agrega una unidad al contador y se muestra el formulario, se cambia el Caption de
acuerdo al número de documento.
Cuando se presiona clic sobre el segundo botón de comando, el sólo ejecuta una línea de
instrucción que es:
ActiveForm.Picture1.Circle (500, 500), 300, , , , 2 / 3

ActiveForm, busca el formulario activo, como todos los formularios abiertos son instancias
de Form1, todos tienen el control Picture1, por ello en él se dibuja una elipse, es decir, en el control
Picture1 del formulario activo.
Con respecto al tercer botón de comando, también utiliza la sentencia ActiveForm, pero en
este caso para borrar el contenido de su cuadro de imagen.

Programa #28. Extensión del Programa #7 – Coordenadas:


El evento clic del botón cmdNuevo, crea un archivo nuevo si no existe, si el archivo existe
se abre graficando sus coordenadas en el cuadro de imagen (Monitor). La variable Nuevo es una
cadena de texto que el usuario introduce para dar un nombre al archivo, mediante la conversión a
cadena de CStr("C:\" + Nuevo + ".dat") se completa el nombre del archivo, es decir, se
agrega la ubicación donde se guardará “C:\”, el nombre del archivo introducido por el usuario y
además la extensón .dat. Luego se abre el fichero con tipo de acceso aleatorio con un tamaño de
registro de 4 bytes (X es Integer y además Y es Integer, por lo tanto como se vio en la sección de
tipos de datos, éstos ocupan sólo dos bytes cada uno por lo tanto el tamaño de cada registro es de
4 bytes). Si el archivo tiene registros grabados (If LOF(1) > 0 Then) el programa procede a
enlistar los puntos en el ListBox y además los grafica en el cuadro de imagen (Monitor), los demás
detalles ya han sido explicados en otros programas.
El evento clic del botón cmdAbrir tiene las siguientes secuencias: Si se produce un error se
dirige a la parte inferior del procedimiento llamado Corregir, sino se declara una variable de cadena
llamada Archivo, se establece la propiedad Filter del CommonDialog1 para leer sólo los archivos de
extensión DAT, se muestra el cuadro de diálogo Abrir para buscar un archivo grabado para luego
asignar a la variable Archivo el archivo elegido (si se presiona la tecla cancelar se produce un
Programación con VB 6.0 Ing. Kelvin Atencio

error) posteriormente se procede a abrir el fichero tipo aleatorio, se leen los datos (Get #1,
Registro, Punto), se enlista y se grafica en el monitor el punto.
El evento clic del botón cerrar, cierra el fichero, borra el contenido de la lista y del cuadro
de imagen, este boton se debe presionar si se desea abrir un fichero nuevo, si abre un fichero
cuando existe otro abierto se produce un error.
Para el caso del cmdIngresar las cuatro primeras líneas se han explicado, luego se asigna
a registro un número mayor en uno del número de registros que existen (Registro = LOF(1)/4+1), el
número de registros que existen viene dado por LOF(1)/4, que es el tamaño del fichero entre el
tamaño de cada registro. Se escribe en el fichero los datos del punto, luego borra el contenido de
los cuadros de texto y hace que tome el enfoque el primer cuadro de texto (txtX).
El comando Eliminar crea una variable nueva que guarda el número del registro que se va
a eliminar (RegEliminar=lstPuntos.ListIndex + 1) ya que las listas comienzan a enumerar
desde cero, abre el archivo provisional que grabará los registros que no serán borrados. Luego se
utiliza el bucle For para pasar los registros desde el fichero original hasta el fichero provisional, es
muy importante notar que para para los registros que se encuentran antes el traslado es directo:
Get #1, Registro, Punto
Put #2, Registro, Punto)
Pero a partir del registro que será borrado se utilizan las siguientes instrucciones
Get #1, Registro + 1, Punto
Put #2, Registro, Punto)
Esto se hace con la intención que grabe el registro superior en uno al registro menor en
uno del fichero provisional, es decir que si se va a eliminar el tercer registro, pase el cuarto del
fichero original al tercero del provisional, así se desplaza el registro eliminado.
La sentencia Close #1 cierra el fichero original, luego Kill(Archivo) borra del disco duro éste
fichero.
Los demás comandos que se encuentran en este procedimiento, ya se han visto.
Programación con VB 6.0 Ing. Kelvin Atencio

Indice:

Contenido: Página
VISUAL BASIC 2
1. EL ENTORNO DE DESARROLLO DE VB 6.0 2

2. PROPIEDADES, MÉTODOS, EVENTOS Y CONSTANTES. 7

3. EL EXAMINADOR DE OBJETOS 9

4. LOS CONTROLES: 10
5. VARIABLES, TIPOS DE DATOS Y CONSTANTES: 34
6. MATRICES: 40
7. OPERADORES LÓGICOS, OPERADORES 42
MATEMÁTICOS Y FUNCIONES MATEMÁTICAS:
8. PROCEDIMIENTOS Y FUNCIONES: 44
9. SENTENCIAS DE CONTROL 47
10. CUADROS DE DIÁLOGO 53
11. LOS MENÚS 56
12. COLORES EN VISUAL BASIC 60
13. EL OBJETO COLLECTION 62
14. PROGRAMAS DE MÚLTIPLES DOCUMENTOS 64
(FORMULARIOS MDI)
15. TRABAJO CON FICHEROS 67
16. IMPRIMIR TEXTO E IMÁGENES 75
17. EL PORTAPAPELES 77
18. BASE DE DATOS 81
19. SECCION DETALLADA DE PROGRAMAS 86

Das könnte Ihnen auch gefallen