0% encontró este documento útil (0 votos)
227 vistas120 páginas

Guia de Visual Basic 5.0

El documento introduce Visual Basic como un lenguaje de programación orientado a ventanas que permite crear aplicaciones gráficas para Windows de forma rápida y sencilla. Explica que Visual Basic fusiona ventanas y controles para diseñar interfaces gráficas sin programar y el lenguaje Basic mejorado para programar bajo Windows. También describe los requisitos mínimos para usar Visual Basic 5.0 y las principales partes del entorno de desarrollo como la barra de menús, barra de herramientas, caja de herramientas y ventanas de proyecto,

Cargado por

Lisandro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
227 vistas120 páginas

Guia de Visual Basic 5.0

El documento introduce Visual Basic como un lenguaje de programación orientado a ventanas que permite crear aplicaciones gráficas para Windows de forma rápida y sencilla. Explica que Visual Basic fusiona ventanas y controles para diseñar interfaces gráficas sin programar y el lenguaje Basic mejorado para programar bajo Windows. También describe los requisitos mínimos para usar Visual Basic 5.0 y las principales partes del entorno de desarrollo como la barra de menús, barra de herramientas, caja de herramientas y ventanas de proyecto,

Cargado por

Lisandro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 120

Visual Basic 5.0.

Curso Bsico 1

Introduccin

En el lanzamiento al mercado mundial de Visual Basic versin 1,0 Bill Gates Presidente de
Microsoft, lo describi como: El entorno perfecto para la programacin Windows de los
aos 90.

Hoy da, al final de nuestra dcada, Visual Basic en sus versiones 2, 3 4 y 5 ha logrado
importantes mejoras, que lo sitan como uno de los lenguajes de alto nivel mas utilizado a
nivel mundial. Windows, producto introducido por Microsoft en 1985, es el entorno ms
popular de interfaz grfica del usuario, Microsoft Visual Basic es un sistema de desarrollo
diseado especialmente para crear aplicaciones con interfaz grfica para Windows de una
forma rpida y sencilla.

Visual Basic fusiona en su entorno de trabajo dos grandes herramientas:


Ventanas y controles, que permiten disear sin programar, una interfaz grfica
(mecanismo de comunicacin entre el usuario y la aplicacin)
El lenguaje de programacin Basic mejorado y adaptado para programacin bajo
Windows.

Este curso es una introduccin al uso de Visual Basic, con lo cual aprenderemos a manejar
la creacin y programacin de ventana y controles principales, as como un repaso de las
instrucciones principales de Basic aplicadas programas sencillos.

Se espera que el curso sea tomado por personas con conocimientos bsicos de
programacin, asi como en el manejo del ambiente Windows.
La versin utilizada ser Visual Basic 5.0, la cual se recomienda utilizar en
microcomputadoras que operen bajo ambiente Windows 95, y con las siguientes
caractersticas mnimas:

Microprocesador Pentium.
32 megabytes de Memoria Principal.
Espacio disponible en disco de 60 megabytes.

Si cuenta con estos requisitos mnimos y esta dispuesto a aprender Visual Basic solo debe
hacer clic sobre el icono de Visual Basic desde el escritorio de Windows.

Bienvenido al entorno de desarrollo de Visual Basic 5.0!


Visual Basic 5.0. Curso Bsico 2

El Entorno de Desarrollo de Visual Basic

Al ingresar a Visual Basic vera una pantalla como la que se muestra en la figura 1.0

Barra de mens

Barra d e H errami en tas


Caja d e H errami en tas

Formu l ari o Pri n ci p al

Ven tan a d el Proyec to

Ven tan a d e Prop i ed ad es

Figura 1.0 Pantalla Inicial de Visual Basic 5.0

De esta pantalla se pueden observar las siguientes partes:

La Barra de Mens
Una de las formas ms tpicas para desencadenar la potencia de una aplicacin en un
programa bajo Windows, es seleccionar elementos de los mens desplegables. En Visual
Basic, la barra de mens cuenta con once grandes mens desplegables los cuales encierran
todo el potencial del entorno de desarrollo.
El men File, contiene las ordenes para trabajar con archivos que forman parte
de nuestras aplicaciones.
El men Edit, contiene las herramientas de edicin que ayudan a escribir el
cdigo del programa que estemos desarrollando.
El men View, proporciona acceso rpido a todas las partes del programa.
El men Proyect, permite adicionar y manejar los diferentes elementos que
constituyen un proyecto en Visual Basic.
El men Format, con importantes comandos para el diseo grfico.
El men Debug, el cual nos ofrece forma de capturar errores de programacin.
Visual Basic 5.0. Curso Bsico 3

El men Run, permite correr o detener la aplicacin.


El men Tools, manejador de accesorios principales para el desarrollo de los
proyectos.
El men Add-ins, manejador de accesorios adicionales para el desarrollo de los
proyectos incluido en Visual Basic.
El men Window, para el manejo de las ventanas del ambiente
El men Help, se utiliza para acceder al detallado sistema de ayuda en lnea

La Barra de Herramientas

Justo debajo de la barra de Mens (ver figura 1.0), ofrece una forma ms rpida de
invocar los comandos mas utilizados del men de Visual Basic. A lo largo del curso
describiremos el uso de muchos de ellos. Es posible agregar mas elementos a la barra de
herramientas desde el comando ToolBars del men View.

La Caja de Herramientas
Situada en el centro de la figura 1.0, la caja de herramientas
contiene parte de los controles que pueden ser utilizados para
el desarrollo de la interfaz de los programas creados en Visual
Basic. Esta caja de herramientas puede ser ampliada, esto es,
se pueden agregar mas controles visuales si estos se adicionan
desde el men Project, en el comando Componets, el cual
mostrara una caja de dialogo en donde se ofrecen todos los
posibles controles a ser adicionados desde las libreras que
vienen con el Visual Basic 5.0.

La Ventana Porject (Proyecto)


Se encuentra en la parte superior derecha
de la figura 1.0.

Cualquier programa que desarrollemos en Visual Basic esta formado por varios
archivos los cuales almacenan las diferentes partes del proyecto, entre los cuales
observamos, formularios, mdulos de cdigos, y controles especiales importados para ser
usados en nuestra aplicacin. Todos estos elementos aparecen y pueden ser manejados
desde la ventana del proyecto a travs de un sencillo rbol de proyecto
Visual Basic 5.0. Curso Bsico 4

La Ventana Properties (Propiedades)


Debajo de la Ventana del Proyecto en la figura 1.0.
Se utiliza para modificar las caractersticas de los
diferentes objetos (formularios o controles) que
forman parte de la interfaz grfica en un programa
bajo Windows

La Ventana Form-Layout (Posicin del Formulario)

Determina la posicin en la que ha de aparecer un formulario o ventana dentro de la


pantalla del computador una vez que el programa arranque.

Formulario Principal
Es donde se construye y personaliza la ventana que vern los usuarios cuando utilicen las
aplicaciones que desarrollamos en Visual Basic, en otras palabras, es nuestra zona de
trabajo. Sobre los formularios distribuimos diferentes tipos de controles los cuales sirven
para crear la interfaz deseada. Muchas aplicaciones requieren mas de una ventana o
formulario para completar su interfaz, por lo que es posible adems del formulario
principal, agregar otros formularios lo cual resulta sencillo desde el men Project.

En general, el Ambiente integrado de Visual Basic, tiene como finalidad ayudar al


programador a realizar las tareas ms comunes a la hora de realizar un programa:
Editar: Comandos que permiten desarrollar tanto los cdigos de los programas,
como toda la interfaz grfica de una manera sumamente sencilla.
Archivar: Todos los comandos necesarios para guardar las aplicaciones que
desarrollemos.
Compilar: El ambiente integrado nos permite crear un ejecutable listo para correr
directamente bajo Windows.
Visual Basic 5.0. Curso Bsico 5

Depurar: Una serie de herramientas que ayudan al programador a descubrir los


errores que causan problemas durante la elaboracin de un programa.
Visual Basic 5.0. Curso Bsico 6

Los Formularios

Caractersticas Generales
Visual Basic permite crear aplicaciones con todos los recursos grficos necesarios a fin de
obtener un programa con un completo interfaz - Windows.

Para logra este fin, Visual Basic ofrece una serie de objetos grficos los cuales pueden ser
manejados por el programador.
Todos los objetos que forman parte de las herramientas presentan tres importantes
caractersticas:
Tienen Propiedades que definen y manejan su uso.
Responden a Eventos generados por los usuarios.
Utilizan diversos Mtodos que sirven para realizar actividades especiales.

De forma muy general podemos clasificar a los objetos en dos grandes grupos:
Los Formularios. Que son las ventanas de nuestro programa, la palabra formulario
viene de Form que es el termino que utiliza Visual Basic para referirse a una ventana
personlizable.
Los Controles. Que constituyen el resto de los recursos grficos, los cuales requieren
ser instalados en el interior de un formulario.

Es claro entonces que el formulario es nuestra zona de trabajo, por lo cual es el primer
objeto grfico que estudiaremos en este curso.

Por ser este, un curso bsico de Visual Basic, no se estudiaran todos los controles, ni
todas las propiedades de los objetos. Durante el curso solo veremos los objetos ms
comunes y sus ms importantes propiedades y eventos.

Iniciaremos este estudio de los formularios, utilizando el formulario inicial o formulario


principal, este es el formulario que Visual Basic coloca en pantalla cuando se inicia la
cesin de trabajo o cuando accionamos el comando New Project del men File.

En la figura 2.0 puede observarse el formulario principal form1. En la figura se indican


todas las partes visuales fundamentales de una ventana de Windows.
Visual Basic 5.0. Curso Bsico 7

Cuadro del Barra de Titulo


men de control Titulo Boton de minimizar

Boton de cerrar
la ventana

Boton de Maximizar
Area de Trabajo

Figura 2.0 Formulario

El cuadro del men de control: proporciona ordenes para: restaurar su tamao, mover,
maximizar y minimizar la ventana as como cerrar la misma.
Barra de titulo: Contiene el nombre de la ventana, esto es, el titulo
Botones de Maximizar y Minimizar la ventana: Como lo indican sus nombres, sirven
para modificar el tamao de la ventana.
Botn para cerrar: Ofrece una forma rpida para cerrar la ventana.
Area de trabajo: Es la parte de la ventana en la que el programador coloca los
controles que forman parte del programa.

Propiedades de un Formulario.
El tamao, la posicin, el color o el titulo del formulario son algunas de las caractersticas
que Visual Basic llama Propiedades. Las propiedades del cualquier objeto grfico de
Visual pueden ser modificadas por medio de la ventana de propiedades. En la figura 3.0 se
muestro la ventana de propiedades haciendo referencia al objeto form1 (formulario).

Figura 3.0 Formulario


Visual Basic 5.0. Curso Bsico 8

Con el foco en el objeto deseado, basta con pulsar la tecla F4, o seleccionar el comando
Properties Windows desde el men Ver de la barra de men para invocar a la ventana de
propiedades. La ventana de propiedades presenta en la parte superior la barra de titulo, en la
cual se lee Properties y el nombre del objeto al que pertenecen las propiedades. En la
figura 3.0 observamos que la ventana Properties hace referencia al nico objeto grfico que
hemos analizado hasta el momento, el formulario Form1. Debajo de esto se encuentran las
propiedades del objeto. Todas las propiedades de un objeto tienen valores por defecto,
incluyendo el nombre del objeto grfico. Para modificar alguna propiedad es suficiente
desplazarnos a lo largo de la ventana hasta la propiedad deseada. Estas pueden mostrarse en
orden alfabetico (Alfabetic), o por categorias (Categorized). Segn sea la propiedad, para
modificarla deberemos introducir una cadena de caracteres, o elegir entre una opcin de
una lista o seleccionar desde una ventana de dialogo.

Veamos un ejemplo sencillo de como cambiar las propiedades de un formulario usando la


ventana de propiedades:

1. Llevemos el foco sobre el formulario form1.


Una vez que Windows es un ambiente constituido por muchas ventanas y objetos grficos, es
necesario saber en un momento dado sobre cual objeto s esta trabajando, a esta seleccin de
un objeto grfico de entre los dems se le llama darle el foco. En el caso de las ventanas
(formularios) la barra de titulo se coloca en color resaltante cuando esta tiene el foco, las
otras ventanas tendr la barra de titulo en un color ms opaco. Solo una ventana es duea del
foco en un momento dado. Despus veremos como diferenciar dentro de una ventana que
control es el que tiene el foco.

2. A continuacin se pulsa la tecla F4 para que aparezca la ventana de propiedades. Otra


forma de llamar a la ventana de propiedades es usando el respectivo botn de la barra
de herramientas:

Ubiquemos en la ventana, la propiedad Caption, esto es l titulo del formulario.


La zona donde dice Caption, de la ventana de propiedades, se ilumina al hacer clic sobre
ella con el ratn, al su lado existe una ventanilla de texto donde podremos escribir Mi
ventana en lugar de form1, que era l titulo anterior.

3. A continuacin probemos nuestro programa a ver si ha recibido los cambios. Aunque


aun no hemos programado mucho, podemos correr nuestro pequeo programa, claro
esta, no esperemos mucho de l por ahora. Para poner a andar nuestro programa
podemos invocar la orden Start desde el men Run, pulsar la tecla F5 o usar el
respectivo botn de la barra de herramientas:
Visual Basic 5.0. Curso Bsico 9

4. Al correr nuestra aplicacin, tendr ante usted una ventana de Windows, la cual puede
mover, cambiar de tamao y otras propiedades bsicas de una ventana-windows, pero
por sobre todo observe que el titulo de la ventana, es ahora el que usted coloc en la
ventana de propiedades. Es importante entender que en este momento estamos en modo
de Ejecucin, con lo cual no podemos actuar obre nuestro programa, para continuar
nuestro estudio debemos regresar a modo de programacin o modo de Diseo, para esto
es suficiente con detener la corrida del programa, use el comando End del men Run o
utilice el botn respectivo de la barra de Herramientas:

Entre las propiedades ms importantes de un formulario encontramos:

Appearance (Apariencia): Establece el estilo de dibujo de los controles de un objeto


Form en tiempo de ejecucin.
Valor Descripcin
0 Liso. Dibuja los controles y los formularios sin efectos visuales.
1 (Predeterminado) 3D. Dibuja los controles con efectos tridimensionales.

BackColor (Color de Fondo): Establece el color de fondo de un objeto.

Resulta sumamente difcil recordar todos los


nmeros (representados en hexadecimal) que
corresponden a todos los colores posibles que
pueden ser usados como color de fondo de un
control, por ejemplo el color gris que comnmente
se utiliza en las ventanas de Windows 95 puede ser
establecido con el nmero &H8000000F&, y el
color blanco es &H00FFFFFF&.

Figura 4.0 Formulario


Para evitar tener que memorizar estos nmeros, la ventana de propiedades muestra en esta
propiedad y en todas las propiedades que manejan colores, una pequea caja de seleccin
del color deseado, tal como se muestra en la figura 4.0, a fin de que usted con un clic del
ratn seleccione el color de su preferencia. Adems de Backcolor existe otra propiedad que
manejan colores en un formulario.

ForeColor (color del primer plano): Establece el color de primer plano utilizado para
mostrar texto y grficos en un objeto.

BorderStyle (Estilo del Borde): Establece el estilo del borde de un objeto.


Los valores de la propiedad BorderStyle son:
Valor Descripcin
0 None (ningn borde ni elemento relacionado con l).
Visual Basic 5.0. Curso Bsico 10

1 Fixed Single. El formulario puede incluir un cuadro del men de control, una
barra de ttulo, un botn Maximizar y un botn Minimizar. Slo puede
cambiar de tamao utilizando los botones Maximizar y minimizar.
2 (Predeterminado) Sizable. Puede cambiar de tamao utilizando cualquiera de
los elementos opcionales de borde indicados en la configuracin 1.
3 Fixed Dialog. Puede incluir un cuadro del men de control y una barra de
ttulo, pero no los botones Maximizar ni Minimizar. No cambia de tamao.
4 Fixed Tool Window.. Muestra el botn Cerrar, y el texto de la barra de ttulo
aparece con un tamao reducido.
5 Sizable ToolWindow. Muestra el botn Cerrar, y el texto de la barra de ttulo
aparece con un tamao de fuente reducido.

Caption (Titulo o leyenda): En un formulario determina el texto que se muestra en la


barra de ttulo del objeto Form. Cuando el formulario est minimizado, este texto se
muestra debajo del icono del formulario.

ControlBox (Cuadro del men de control). Devuelve o establece un valor que indica si
se muestra el cuadro del men de control en un formulario en tiempo de ejecucin. En
cualquier aplicacin Microsoft Windows, el cuadro del men de control se encuentra en
la esquina superior izquierda de la ventana, en la barra de titulo. Al hacer clic sobre este
cuadro se muestra un pequeo men con las tareas ms comunes a realizar sobre una
ventana como son: moverla, minimizarla, maximizarla y cerrarla. Esta propiedad solo
tiene dos posible opciones:
Valor Descripcin
True (Predeterminado) Muestra el cuadro del men de control.
False Suprime el cuadro del men de control.

Enabled (Activado): Establece un valor que determina si un formulario o un control


puede responder a eventos generados por el usuario.
Valor Descripcin
True (Predeterminado) Permite que objeto responda a eventos.
False Impide que objeto responda a eventos.

Icon (Icono): Devuelve el icono que aparece al minimizar un formulario en tiempo de


ejecucin. Para cargar el icono hay que hacerlo desde la ventana de Cargar Iconos, esta
ventana de dilogos, se invoca pulsando el botn con tres puntos que se encuentra a la
derecha del cuadro de parmetros en la propiedad icono de la ventana de propiedades.
Visual Basic 5.0. Curso Bsico 11

Figura 5.0

MousePointer (Puntero del Ratn): Establece un valor que indica el tipo de puntero del
ratn que aparece sobre un rea determinada de un objeto en tiempo de ejecucin.
Valor Descripcin
0 (Predeterminado) Forma que determine el objeto.
1 Flecha.
2 Cruz (puntero en forma de cruz).
3 Forma de I.
4 Icono (pequeo cuadrado dentro de otro cuadrado).
5 Tamao (flecha de cuatro puntas: norte, sur, este y oeste).
6 Tamao NE SO (flecha doble apuntando al nordeste y al sudoeste).
7 Tamao N S (flecha doble apuntando al norte y al sur).
8 Tamao NO SE (flecha doble apuntando al noroeste y al sudeste).
9 Tamao O E (flecha doble apuntando al oeste y al este).
10 Flecha hacia arriba.
11 Reloj de arena (espera).
12 No soltar.
13 Flecha y reloj de arena.
14 Flecha e interrogacin.
99 Se utiliza el icono personal colocado en la propiedad MouseIcon

Name (Nombre): Devuelve el nombre utilizado en cdigo para identificar un


formulario, o un control. El nombre predeterminado de nuevos objetos es el tipo de
objeto ms un entero nico. Por ejemplo, el primer objeto Form nuevo ser Form1.
Nunca debe confundirse la propiedad name con la propiedad caption. Al crear un nuevo
formulario el Caption por defecto es igual al valor del name predeterminado.
Visual Basic 5.0. Curso Bsico 12

Visible: Devuelve o establece un valor que indica si un objeto es visible o est oculto.
Los valores son:
Valor Descripcin
True (Predeterminado) El objeto es visible.
False El objeto est oculto.

WindowState (Estado de la Ventana): Establece un valor que indica el estado visual de


una ventana de formulario en tiempo de ejecucin.
Valor Descripcin
0 (Predeterminado) Normal.
1 Minimizado (minimizado a icono).
2 Maximizado (agrandado al tamao mximo).

Existen otras propiedades del formulario, tal como puede observarlo en la ventana de
propiedades y como puede informarse, si utiliza la ayuda en lnea que ofrece Visual Basic.
Basta con que se ubique sobre cualquier propiedad y presione la tecla F1 y aparecer en u
pantalla una detallada explicacin sobre el tema.

Analicemos a continuacin los eventos a los que puede responder un formulario en tiempo
de ejecucin, a fin de hacer ms interactivas las ventanas de nuestras aplicaciones.

Eventos en un Formulario.
La esencia de un programa en Windows es hacer a los programas interactivos con las
acciones de los usuarios. Los Objetos de Visual Basic pueden reconocer muchos sucesos
diferentes. Por ejemplo, sin un usuario hace un clic en una zona de la pantalla, el
programador podra querer que se presente un mensaje; si el usuario hace clic sobre un
botn de ordenes, querr que se lleve a cabo determinada accin. Para llevar a cabo estas
acciones se escriben los programas en el lenguaje estructurado de Visual Basic, el cual tiene
una enorme similitud con Microsoft Quick Basic, para los conocedores. Si bien los objetos
de Visual Basic pueden reconocer muchos sucesos diferentes, no se tomara ninguna accin
a menos que se escriba un cdigo que les indique lo que han de hacer cuando ocurran tales
sucesos. Por tanto para cada suceso del que se requiera una respuesta por parte de un
objeto, hay que escribir un procedimiento que indique a Visual Basic lo que tiene que hacer,
estos procedimientos no son mas que las lneas de cdigo que ponen en marcha a un
programa Orientado a Eventos como lo son las aplicaciones desarrolladas para correr bajo
Windows. A fin de escribir estos cdigos haga doble clic en cualquier zona dentro del
formulario y aparecer en pantalla la ventana de cdigo de la figura 6.0.
Visual Basic 5.0. Curso Bsico 13

Eventos disponibles para el objeto

Zona para el cdigo

Figura 60 Ventana de Cdigo

Observando la figura 6.0 podemos destacar en la Ventana de Cdigo se encuentran dos


cuadros marcados con:
Objeto: Si se hace clic en la flecha que se encuentra al lado de este cuadro, se despliega el
cuadro de lista de objetos. Hasta los momentos solo se vera el objeto formulario, mas
adelante se aadirn al formulario otros controles grficos como cajas de texto, botones de
comando y otros controles los cuales tambin responden a eventos.
Eventos: Al desplegar el cuadro de lista de procedimientos, ubicado a la derecha, se vera
la lista de todos los sucesos o eventos que puede reconocer el objeto Visual Basic que se
encuentra en el cuadro Objeto. Un formulario, por ejemplo, puede reconocer 24 eventos de
los cuales estudiaremos en este curso los ms importantes.

En la figura 6.0 puede observarse el siguiente cdigo:


Private Sub Form_Load()

End Sub

Lo cual no es mas que un ejemplo de plantilla de procedimiento para un suceso. En la


figura 6.0 se observa la plantilla de procedimiento del evento Load, el cual ocurre cuando
se carga un formulario, esto es, cuando Visual Basic trae a la pantalla un formulario, en
esta plantilla debajo de la lnea de Sub Form_Load y antes del End Sub, se coloca el
cdigo de lo que queremos que se ejecute cada vez que ocurra este evento sobre el
formulario.
A continuacin mencionaremos algunos de los eventos ms comunes a los que responde un
formulario. Como siempre, usted puede obtener mas informacin utilizando la ayuda en
lnea que proporciona Visual Basic.

Click (Clic): Ocurre cuando el usuario presiona y libera el botn del mouse sobre un
objeto. Para un objeto Form, este evento ocurre cuando el usuario hace clic en un rea
en blanco del formulario.
Visual Basic 5.0. Curso Bsico 14

DblClick (Doble Clic): Se produce cuando un usuario presiona y suelta un botn del
mouse (ratn) dos veces sobre un control o rea en blanco de un formulario.
GotFocus (Recibir el foco): Ocurre cuando un objeto recibe el enfoque, bien mediante
una accin de usuario, bien mediante una tabulacin o al hacer clic en el objeto. Un
objeto puede recibir el enfoque slo si sus propiedades Enabled y Visible estn
establecidas a True.
Load (Cargar un Formulario): Ocurre cuando se carga un formulario. Para un
formulario principal, ocurre cuando una aplicacin se inicia.
Unload (Descargar un formulario): Este evento se desencadena debido a que un usuario
cierra el formulario utilizando el cuadro del men de control, o una instruccin Unload.

En la medida que avancemos en el curso, podremos ir estudiando otros eventos, en este


momento lo ms conveniente es que practiquemos con un pequeo programa valindonos
de lo que ya sabemos acerca de las propiedades y eventos de un formulario.

Un pequeo programa de Ejemplo.

1. Para iniciar un nuevo proyecto, arranque Visual Basic desde el escritorio de trabajo de
Windows. Si ya se encontraba dentro de Visual Basic, entonces active el comando New
Project del men File
2. Haga doble clic sobre el formulario de tal forma que aparezca ante usted la ventana de
cdigo (ver figura 6.0).
3. En el interior de la plantilla para el evento Load vamos a agregar cdigo a fin de variar
el titulo de la ventana cuando el programa arranque. El procedimiento para el evento
Load debe quedar as:

Private Sub Form_Load()


Form1.Caption = "Primer Titulo"
End Sub

En este procedimiento podemos observar los siguientes detalles;


Si observamos el nombre del procedimiento: Form_Load(), notaremos que Visual
Basic da este nombre al procedimiento del evento, mezclando el nombre del objeto
con el nombre del tipo de evento.
El cdigo introducido por nosotros: Form1.Caption = "Primer Titulo", nos muestra
de que manera podemos cambiar las propiedades de un objeto en tiempo de
ejecucin. Hasta ahora solo habamos cambiado las propiedades en tiempo de diseo
utilizando la ventana de propiedades, sin embargo tambin es posible hacerlo una
vez que el programa esta en marcha. Para ello solo tenemos que colocar el nombre
del objeto seguido de un punto y la propiedad que queremos cambiar, a continuacin
le asignamos el nuevo valor.
Cuando el valor asignado a la propiedad es no numrico, esto es, es una cadena de
caracteres, la misma debe ir entre comillas como en el caso de "Primer Titulo".
Visual Basic 5.0. Curso Bsico 15

4. Ubiquemos el evento Click y modifiqumoslo:


Private Sub Form_Click()
Form1.MousePointer = 2
End Sub
Cambiamos con esto, la figura del puntero del ratn por la de una cruz.
5. Haremos lo mismo con el evento doble clic (DblClick), pero esta vez restauraremos el
valor del MousePointer a su valor predeterminado, esto es a cero (0).
6. Pulse el botn para correr el programa y realice los eventos clic y doble clic sobre el
formulario.
7. A fin de no perder nuestro primer programa, vamos a proceder a guardarlo en disco,
para esto debe pulsar el comando Save Project de men File, o pulsando el respectivo
botn de la barra de herramientas:

8. En este punto Visual Basic le enva la ventana de Guardar archivo como...

Figura 7.0 Ventana de Dialogo: Guardar archivo como.

Esta ventana sirve para guardar el formulario. Ubicamos el directorio donde queremos
guardar nuestra aplicacin y le damos un nombre al archivo que ha de contener el
formulario. Visual Basic recomienda como nombre de este archivo el mismo nombre
del formulario Form1, sin embargo esto no es obligatorio y podemos dar a este archivo
el nombre que deseemos, la extensin ser frm. En este caso dejaremos el nombre de
form1.frm y pulsaremos el botn Guardar para que almacene el archivo del formulario.
9. Luego de esto, la ventana de guardar archivo aparece una vez mas a fin de solicitar se
da la direccin y el nombre del archivo de proyecto, este es un archivo de gestin
interna de Visual Basic para determinar la ubicacin de los diversos archivos que
forman parte del programa. En nuestro caso, el proyecto esta constituido por un solo
archivo .frm, pues solo tenemos un formulario; en proyectos de mayor tamao pueden
tenerse mas de una ventana o formulario por lo tanto se tendrn varios archivos, todos
los cuales quedaran registrados en el archivo del proyecto. Los archivos registrados
para el proyecto son los mismos que aparecen en la ventana del proyecto de nuestra
aplicacin. Este archivo del proyecto es de extensin . vbp (Visual Basic Proyect), por
defecto aparece en la ventana de guardar archivo en nombre de proyect1.vbp, sin
embargo, es recomendable dar un nombre distinto para guardar nuestro proyecto.
Guarde este ejemplo con el nombre de tarea1.vbp, en su directorio de trabajo.
Visual Basic 5.0. Curso Bsico 16

Los Controles

Como pudo observar en el ejemplo realizado del capitulo anterior, no es posible


desencadenar todo el potencial de una ventana Windows, y todo el poder de una adecuada
interfaz grfica utilizando solamente los formularios. Es necesario agregar a estos los
diferentes controles de Visual Basic.

En este capitulo estudiaremos los controles ms comunes utilizados en los programas que
operan bajo Windows, muchos de estos controles bsicos estn disponibles para ser
llevados a los formularios desde la caja de herramientas.

La Caja de Herramientas.
La caja de herramientas por lo regular esta disponible en la pantalla de Visual Basic. En la
figura 8.0 puede verse una caja de herramientas que contiene los controles ms comunes
usados por Visual Basic. Posiblemente la caja de herramientas que aparece en su aplicacin
contiene mas controles. De todos modos es posible agregar o retirar control de la caja de
herramientas segn sean las necesidades del programador. Para esto, de una vuelta por el
comando Componets del men Project.

Figura 8.0 Caja de Herramientas

Estudiaremos a continuacin tres (3) de los controles ms comunes utilizados por Visual
Basic, y la forma de manejarlos. Estos controles son:
La Etiqueta
La Caja de Texto
El Botn de rdenes
Visual Basic 5.0. Curso Bsico 17

La Etiqueta (Label)
Un control Label es un control grfico que puede utilizar para mostrar texto que el usuario
no podr cambiar directamente.
La etiqueta o Label esta disponible en la barra de herramienta bajo el smbolo siguiente:

Vamos a ver de que manera se agrega un control en un formulario. Para esto utilizaremos
al control Label desde la barra de herramientas.
La mayora de los mtodos que se emplean en la caja de herramienta, son similares a los
empleados en un programa de dibujo como Microsoft Paint ( Paintbrush).

Para agregar una caja de etiqueta en un formulario procederemos de la siguiente forma:

1. Luego de activar el comando New


Project del men File, a fin de
iniciar un nuevo programa;
llevaremos el puntero del ratn
hasta la barra de herramientas, a fin
de seleccionar el botn de la
Etiqueta.

2. A continuacin se lleva el puntero del ratn hasta el formulario. Ntese que el puntero
del ratn ha cambiado de una flecha a una cruz filiar. Estamos listos para dibujar el
control sobre el rea de trabajo del formulario.
3. Se mantiene pulsado el botn del ratn y se arrastra este para crear el objeto tal como se
ve en la figura 10.0
Una de las esquinas del control viene determinada por el punto donde se pulso el ratn,
y la otra, por el punto donde suelte el ratn, tal como se observa en el rectngulo que se
va dibujando en el formulario.
Finalmente al soltar el botn del ratn queda el control dibujado sobre el formulario.
Visual Basic 5.0. Curso Bsico 18

Figura 10.0

Cuando se libera el ratn, el control tiene sobresaliendo a su alrededor ocho puntos


llamados manejadores, estos se emplean para cambiar el tamao del control. Acerque
suavemente el puntero del ratn sobre estos controladores y notara que el puntero cambia
de una flecha a una doble flecha filiar, arrastre entonces estos puntos con lo que estar
alterando el tamao del control. Es tambin posible cambiar de posicin al control a fin de
ubicarlos en el sitio deseado, basta con arrastrarlos, para arrastrar pulse el botn del ratn
estando el puntero dentro del control, mueva el puntero a otra posicin del formulario sin
soltar el botn del ratn, cuando alcance la posicin deseada suelte el botn del ratn, con
lo cual el control se mover a la nueva posicin dentro de la ventana. Intente cambiar el
tamao y posicin de la etiqueta dentro del formulario!.

Observe que dentro de la etiqueta se lee la cadena label1, esta es la leyenda de la etiqueta la
cual puede modificarse a travs de la propiedad caption. La propiedad Caption, es la
propiedad ms importante de una etiqueta, pues esta propiedad porta la leyenda que se
mostrara en la ventana por medio de la etiqueta. Por defecto Visual Basic asigna al caption
el nombre predeterminado del control el cual consiste en el nombre del control ms un
numero consecutivo segn la cantidad de controles del mismo tipo que se carguen a la
ventana (label1, label2, etc...).

Entre las propiedades ms importantes del control Etiqueta encontramos


Alignment (Alineacin): Establece un valor que determina la alineacin del Caption.
Valor Descripcin
0 (Predeterminado) El texto est alineado a la izquierda.
1 El texto est alineado a la derecha.
2 El texto est centrado.

AutoSize (Tamao automtico): Establece un valor que determina si el tamao de un


control se cambia automticamente para presentar su contenido completo.
Valor Descripcin
True El tamao se cambia automticamente para presentar el contenido completo.
Visual Basic 5.0. Curso Bsico 19

False (Predeterminado) Mantiene constante el tamao del control. El contenido se


recorta cuando excede el rea del control.

BorderStyle (Estilo del Borde): Establece el estilo del borde de un objeto.


Valor Descripcin
0 (Predeterminado) Sin lnea en el borde.
1 Una lnea sencilla enmarca a la etiqueta.
Al igual que todos los objetos de Visual Basic, las etiquetas responden a las propiedades
name: para identificar al objeto, enabled: para habilitar o deshabilitar el control, y la
propiedad visible: para mostrar u ocultar el control.

Vamos a un simple ejemplo para practicar con las etiquetas:


1. Cargue un nuevo proyecto en el cual se colocaran tres etiquetas. Un mtodo rpido
para colocar las etiquetas en los formularios es hacer doble clic sobre el botn del
control deseado en la barra de herramienta (en nuestro caso el botn de la etiqueta),
con lo cual el control aparecer automticamente en el centro del formulario.
2. Ubique las etiquetas secuencialmente y separadas, una debajo de las otras.
3. Aceptando los nombres que por defecto Visual Basic da a los controles que hemos
colocado en el formulario. Procederemos a modificar sus propiedades de esta forma:
Label1 :
Alignment: 0-Left Justify (Leyenda Justificada a la Izquierda)
Border Style: 1-Fixed Single (Borde fijo sencillo)
Caption: Primera Etiqueta.
Label2 :
Alignment: 1-Right Justify (Leyenda Justificada a la Derecha)
Border Style: 1-Fixed Single (Borde fijo sencillo)
Caption: Segunda Etiqueta.
Label2 :
Alignment: 2-Center (Leyenda Centrada)
Border Style: 1-Fixed Single (Borde fijo sencillo)
Caption: Tercera Etiqueta.
4. Corra su programa el cual debe mostrarse muy parecido al de la siguiente figura:
Visual Basic 5.0. Curso Bsico 20

La Caja de Texto (TextBox):


Un control TextBox muestra informacin introducida en tiempo de diseo, introducida por
el usuario o asignada al control por cdigo en tiempo de ejecucin. El smbolo de la caja de
Texto o TextBox en la barra de herramienta es el siguiente:

Adems de las propiedades comunes como name, enbled, visible, las ms importantes del
control Caja de Texto son:
La propiedad BackColor, acta en la caja de texto igual que en el formulario y en la
etiqueta: Cambia el color del fondo del control. Por cierto para cambiar el color de las
letras se usa su homologa propiedad ForeColor.
En la caja de texto se usa tambin la propiedad MousePointer, la cual tiene los mismos
valores que los que usa el formulario.
Otra propiedad que funciona en la caja de texto de la misma forma que en la etiqueta es
la propiedad Alignment, que sirve para justificar a la derecha izquierda, o en el centro
el texto que se muestra en el TextBox.
La propiedad BorderStyle (Estilo del Borde): Es idntica a la de la etiqueta.
Text (texto): Es la propiedad ms importante de una caja de texto. Devuelve o establece
el texto contenido en el rea de edicin. Al crear la caja de texto el valor text por
omisin es el valor name por omisin (text1, text2, etc.). Por supuesto este valor puede
ser alterado tanto en tiempo de diseo como en tiempo de corrida o ejecucin. Las cajas
de texto no interpretan nunca que el usuario introduce nmeros; esto significa que para
obtener informacin numrica de un programa, Visual Basic requiere transformar la
cadena de dgitos introducida en el textbox en un numero empleando funciones de
conversin de cadenas a nmeros y viceversa como explicaremos mas adelante.
En un formulario de Visual Basic introduzca una caja de texto y coloque en blanco su
propiedad text. Corra el programa e introduzca informacin en la caja de texto a su
gusto. Vera que es muy sencillo. En la siguiente figura puede verse un ejemplo de esto.
Visual Basic 5.0. Curso Bsico 21

MultiLine (lnea mltiple): Establece un valor que indica si un control TextBox acepta y
muestra mltiples lneas de texto.
Valor Descripcin
True Permite mltiples lneas de texto.
False (Predeterminado) Restringe los datos a una sola lnea.
MaxLength (Longitud Maxima): Establece un valor que indica si existe un nmero
mximo de caracteres a introducir en un control TextBox y, en caso afirmativo,
especifica dicho valor mximo. El valor predeterminado de la propiedad MaxLength es
0, que indica la ausencia de un mximo distinto del que imponga la memoria del
sistema del usuario para los controles TextBox de una lnea, o de aproximadamente 32
KB para los controles TextBox de mltiples lneas. Un valor mayor que 0 indica el
nmero mximo de caracteres.

Los Botones de Ordenes (CommandButton):

Se utiliza un control CommandButton para comenzar, interrumpir o poner fin a un proceso,


recibiendo la pulsacin o la orden directamente del usuario en tiempo de ejecucin. Cuando
se hace clic sobre el botn este cambia de apariencia para mostrar que ha sido pulsado

Son 33 las propiedades de un commandButton. Entre ellas encontramos al igual que en los
anteriores objetos estudiados en esta guia, las propiedades: name, enabled, visible,
Backcolor y MousePointer. Una de sus propiedades mas utilizadas es la propiedad
Caption la cual se utiliza para dar titulo al botn de manera que indique al usuario cual es
su uso dentro de la ventana.
En la figura siguiente puede observarse un CommanButton cuya propiedad Caption se ha
cambiado por la cadena: Primer Botn:

Borrando un Control:
Visual Basic 5.0. Curso Bsico 22

Borrar un control en tiempo de diseo, una vez que lo hemos colocado en un formulario,
resulta algo muy sencillo, simplemente seleccione el control y luego pulse la tecla del o
suprimir, tambin puede hacerlo utilizando el comando Delete del men Editin.

Las Etiquetas, Las Cajas de Texto y Los Botones de Comando, responden igualmente a
eventos como click, dobleClic, Gotfocus, LostFocus y otros. La mejor manera de
entenderlos es programando, as que, acompenos en un programa de ejemplo que usted
mismo construir. En caso de dificultades solicite la ayuda de su profesor o revise el disco
que acompaa a este material donde encontrara este programa en el directorio cvb01.

Programa Ejemplo vb01


1. Inicie un nuevo proyecto. Ajuste el tamao del formulario y coloque sobre l dos
etiquetas, una caja de texto, y dos botones tal como lo muestra la figura siguiente:

2. Cambiemos los valores predefinidos de las propiedades de los controles segn se indica
a continuacin:
Form1:
Caption: Programa Ejemplo cvb01
Label1 :
Alignment: 2-Center
Border Style: 1-Fixed Single
Visual Basic 5.0. Curso Bsico 23

Caption: Introduzca su nombre.


Label2 :
Alignment: 2-Center
Border Style: 1-Fixed Single
Caption: [Dejar en Blanco]
Text1 :
Text: [Dejar en Blanco]
Command1:
Caption: Ver Mensaje
Command2:
Caption: Salir

3. Vamos a programar los eventos de los botones. Para tener acceso a la ventana de cdigo
de un control se procede de igual forma que con los formularios, simplemente se hace
doble clic sobre el control. A continuacin colocaremos el siguiente cdigo:
Command1:
Private Sub Command1_Click()
Label2.Caption = "Bienvenido " + Text1.Text
End Sub

Command2:
Private Sub Command2_Click()
End
End Sub

El cdigo asignado al evento clic del Command1, escribe en la etiqueta label2 el mensaje
Bienvenido, mas el contenido que el usuario introduzca en la caja de texto; contenido que
puede ser siempre obtenido de la propiedad text de la caja de texto. Ntese que el mensaje
se coloca entre comillas dobles, mientras que no es as con la variable text1.text.

Por otro lado, en el evento clic del botn de comando Command2 se coloc la instruccin
End, la cual finaliza el programa. Hasta ahora habamos estado deteniendo los programas
desde el men o la barra de herramientas, sin embargo es hora de que nuestros programas
cuente con una forma clara e independiente de finalizar.

4. El siguiente paso en nuestro ejemplo es, por supuesto, correr la aplicacin y verificar
que funciona adecuadamente. Pues bien, adelante!.
5. No se olvide de guardar la aplicacin realizada si desea conservarla. Esto es
aconsejable hacerlo antes de correr el programa

En la medida que avancemos en el curso ser posible estudiar otros controles, por los
momentos es necesario ahondar en las instrucciones y funciones estndar de Visual Basic
que nos permitirn el desarrollo de un programa mas completo.
Visual Basic 5.0. Curso Bsico 24

Fundamentos de Programacin

El lenguaje Visual Basic es, en muchos aspectos, muy parecido a sus predecesores
QuickBasic, Qbasic y del Basic profesional de Microsoft. Con el poco conocimiento que
pueda usted tener acerca de estos u otros lenguajes de programacin le resultara muy
sencillo involucrarse rpidamente con los fundamentos de programacin del Visual Basic.

Los Comentarios
Son texto que agrega un programador a un programa que explica cmo funciona el cdigo.
En Visual Basic, una lnea de comentarios comienza generalmente con un apstrofe ('), o
bien se puede emplear la palabra reservada Rem seguida de un espacio.

Por ejemplo
MiCad2.caption = "Adis" ' Se asigna "Adis" como mensaje en la etiqueta MiCad2

Los comentarios son instrucciones no ejecutables, por lo que no alteran en lo mnimo el


comportamiento de un programa.

Variables
Una variable es una posicin de almacenamiento con nombre que puede contener datos que
se puedan modificar durante la ejecucin del programa. Cada variable tiene un nombre que
la identifica de manera nica dentro de su nivel de alcance. Los nombres de variable deben
cumplir las siguientes caractersticas:
Deben comenzar con un carcter alfabtico.
Deben ser nicos dentro del mismo alcance.
No deben tener ms de 255 caracteres de longitud.
No deben usarse palabras reservadas de Visual Basic.
En Visual Basic no es necesario declarar una variable antes de usarla. Sin embargo, el uso
de las declaraciones puede resultar conveniente a fin de detectar errores en el cdigo,
evitando as confundir a una nueva variable con una mal escrita. A fin de evitar este tipo de
errores es suficiente dirigirse al men Tools, en donde encontraremos al comando Options,
elija el dialogo Editor y seleccione la opcin Require variable declaratin a continuacin
toda variable a usar debe ser declarada explcitamente.
Visual Basic 5.0. Curso Bsico 25

Declaracin explcita de las variables:

Las variables locales son las variables que son reconocidas en el procedimiento en el que
esta definida, fuera de este procedimiento la variable no es conocida. Para declarar una
variable local en un procedimiento, utilice la sentencia Dim. Dim declara variables y asigna
espacio de almacenamiento.

Esta instruccin tiene la siguiente sintaxis:


Dim nombreVar [As tipo]

La sintaxis de la instruccin Dim tiene las partes siguientes:


nombreVar Nombre de la variable.
tipo Indica el tipo de dato que va a manejar la variable

Por ejemplo, la instruccin siguiente declara una variable como Integer (enteros).

Dim NmeroDeEmpleados As Integer

Cuando se usa la instruccin Dim en un procedimiento, la prctica generalmente aceptada


por los programadores, es poner la instruccin Dim al principio del procedimiento.

Entre los tipos de datos que maneja Visual Basic en sus variables encontramos.
Tipo de datos Tamao Rango
Integer(entero) 2 bytes -32.768 a 32.767.
Long(entero largo) 4 bytes -2.147.483.648 a 2.147.483.647.
Single(real de simple precisin) 4 bytes 1,401298E-45 a 3,402823E38
4,94065645841247E-324 a
Double (real de doble precisin) 8 bytes
1,79769313486232E308
Desde 1 hasta aproximadamente
String(cadena longitud fija) longitud de la cadena
65.400.
Cualquier valor numrico en el rango
Variant 16 bytes
de doble.
Boolean 2 bytes True o False.

La expresin [as tipo] entre corchetes en la sintaxis de Dim, indica que la declaracin del
tipo es opcional. Cuando el tipo no es indicado en una declaracin, la variable es del tipo
Variant por defecto. Lo mismo ocurre cuando se trabaja con variables no declaradas.
Ejemplo:
Dim MiValor variable sin tipo expreso, es automticamente variant.

Por supuesto las variables tipo variant tambien se pueden declara en foma expresa:

Dim MiValor As Variant variable tipo variant.


Visual Basic 5.0. Curso Bsico 26

Operadores
Podemos dividirlos en:
Operadores aritmticos: Utilizados para ejecutar clculos matemticos.
Operadores de comparacin: Utilizados para efectuar comparaciones lgicas.
Operadores lgicos: Usados para efectuar operaciones lgicas.

Los ms importantes de mayor a menor en


Operadores aritmticos:
orden de prioridad:
Ejemplo
Operador Smbolo
Matemtica Visual Basic
Exponenciacin ^ a = bn a= b ^ n
Cambio de signo - a=-b a=-b
c
Multiplicacin y Divisin *, / ab a=b*c/d
d
Suma y Resta +,- a=b+c-d a=b+c-d
Signo de agrupacin () a = d (m + c) a = d * (m + c)
Lo que hemos aprendido hasta ahora es muy importante, conocemos los principales
objetos para crear un sencillo interfaz, manejamos variables y operadores aritmticos. Es el
momento para practicar con ejercicios ms interesantes.

Programa Ejemplo cvb02


Este es un programa simple que solicita tres nmeros para calcular el promedio de las tres
cifras. Este proyecto se encuentra en el disco que viene con este material, puede encontrarlo
en el directorio cvb02. Disee un formulario con los siguientes elementos.
Visual Basic 5.0. Curso Bsico 27

Cambiemos las propiedades caption de las tres primeras etiquetas por Primer Dato,
Segundo Dato y Tercer Dato, respectivamente. Las tres cajas de texto deben quedar
con la propiedad text en blanco y en la ultima etiqueta, esto es en label4, dejamos vaca la
propiedad caption. La propiedad caption del formulario ser: Programa Ejemplo cvb02
(Promedio) .
En los botones podemos realizar los siguientes cambios en las propiedades, tanto en el
caption como en el name, hasta ahora siempre habamos aceptado el nombre (name) por
defecto que daba Visual Basic, intentemos dar esta vez nuestros propios nombres.

Command1:
Caption: Limpiar
name: botonLimpiar

Command2:
Caption: Promedio
name: botonCalcular

Command3:
Caption: Salir
name: botonSalir

Debemos entender, que despus de estos cambios, no solo cambian las etiquetas visuales
(Caption) de los botones, sino que los nombres internos de los botones ya no son
command1, command2 y command3; ahora estos se llaman: botonLimpiar, botonCalcular,
botonSalir.
Tambin incluiremos cdigo en los eventos clic de nuestros botones:

Private Sub botonSalir_Click()


End ' La instruccion End es para terminar el programa
End Sub

Private Sub botonCalcular_Click()


'*******************************************************
'Esta rutina es el corazon del programa, aqui esta el codigo para calcular el promedio
' de los numeros. Vamos a describir con detalle el codigo
'*******************************************************

'1 Primer paso declaramos las variables requeridas


'__________________________________________________
Dim dato1 As Single 'para recoger los datos
Dim dato2 As Single
Dim dato3 As Single
Visual Basic 5.0. Curso Bsico 28

Dim prom As Single 'variable para el promedio

'2 Leemos los datos desde las cajas de texto. Debemos recordar que las cajas de texto no
'ven sus contenidos como numricos sino como textos, por lo cual es necesario
' utilzar una funcion de libreria que transforme datos de cadena (string) a un numero.
'La funcion es Val
'________________________________________________

dato1 = Val(Text1.Text)
dato2 = Val(Text2.Text)
dato3 = Val(Text3.Text)

'3 Como tercer paso calculamos el promedio


'__________________________________________________

prom = (dato1 + dato2 + dato3) / 3 'no olvide los parntesis.

'4 Por ultimo mostramos el resultado en label4


' Por cierto, para mostrar el resultado debemos transformar el contenido de
' de la variable prom, que es un numero, a una cadena, a fin de mostrarlo en label4.
'Para esto usamos la funcin CStr, la cual convierte una expresin numrica a un tipo
'de datos String.
'__________________________________________________

Label4.Caption = " El promedio es = " + CStr(prom)

End Sub

Private Sub botonLimpiar_Click()


'*******************************************************
' Este botn se utiliza para limpiar la pantalla de una
' cesin de trabajo, a fin de iniciar un nuevo calculo
'********************************************************
Text1.Text = "" 'As se limpia el contenido de un textbox
Text2.Text = ""
Text3.Text = ""

'*******************************************************
'Limpiamos tambin la etiqueta label4 que es la etiqueta
'donde se muestra el resultado del calculo
'********************************************************
Label4.Caption = ""
End Sub
Visual Basic 5.0. Curso Bsico 29

Al correr el programa e introducir nmeros, usted debe poder observar algo parecido a la
figura numero 12.0:

Figura 12.0 Corrida ejemplo del programa cvb02.

Al haber declarado a las variables como single, el programa puede manejar nmeros que no
son enteros como los que se ven en la corrida ejemplo que muestra la figura 12.0, en el
segundo dato y en el resultado mostrado en la etiqueta.

Se utilizaron as mismo en el ejemplo funciones de conversin de datos, a continuacin una


lista de las funciones de conversin de datos ms comunes:

Funcion Que hace?


CDbl Convierte una expresin numrica o de cadena vlida al tipo de dato Double
CInt Convierte una expresin numrica o de cadena vlida al tipo de dato Integer
CLng Convierte una expresin numrica o de cadena vlida al tipo de dato Long
CSng Convierte una expresin numrica o de cadena vlida al tipo de dato Single
CStr Convierte una expresin numrica o de cadena vlida al tipo de dato String
CVar Convierte una expresin numrica o de cadena vlida al tipo de dato Variant
Str Devuelve una representacin de cadena de un nmero.
Val Devuelve los nmeros contenidos en una cadena.

El ejemplo cvb02 es un programa sencillo que opera directamente sobre tres datos, existen
operaciones y problemas mas complicados los cuales requieren toma de decisiones,
estructuras cclicas y un mayor potencial en funciones y operadores.

A continuacin estudiaremos las estructuras con las que cuneta Visual Basic para los
cdigos de toma de decisiones
Visual Basic 5.0. Curso Bsico 30

If ...then...else:

La estructura de decisin If ...then...else permite ejecutar condicionalmente un grupo de


instrucciones, dependiendo del valor de una expresin o condicin.
Su sintaxis general presenta la siguiente forma:

If condicin Then

(Conjunto de instrucciones 1)

[Else

(Conjunto de instrucciones 2)]

End If

Cuando se ejecuta un bloque If , se prueba la condicin. Si la condicin es verdadera, se


ejecutan las instrucciones que estn a continuacin de Then. Si la condicin es falsa, se
ejecutan las instrucciones que siguen a Else. Despus de la ejecucin de las instrucciones
que siguen a Then o Else, la ejecucin contina con la instruccin que sigue a End If, con
lo que se termina la bifurcacin. Solo se ejecutaran un grupo de instrucciones, nunca se
ejecutaran ambas en una misma estructura if.

La condicin es una expresin de comparacin lgica en la que intervienen dos elementos


donde por lo menos uno debe ser una variable, esta condicin slo devuelve verdadero o
falso. Para la realizacin de esta comparacin se utilizan los Operadores de comparacin

Operadores de comparacin
Operador Smbolo Ejemplo
Igual = If a = b then
Diferente <> If X <> 5 then
Mayor > If X >Y then
Menor < If prom < 0 then
Mayor o Igual >= If Z >= 10 then
Menor o Igual <= If dato1 <= 7.3 then

Estudiemos el ejemplo cvb03 a fin de poner en practica la estructura if.. then ..else.
Visual Basic 5.0. Curso Bsico 31

Programa Ejemplo cvb03


Supngase un simple programa que solicita un numero para responder si el numero es
negativo o positivo. El numero ingresara por un control textbox y la respuesta saldr por un
control label. Lo que queremos es algo as:

Figura 13.0 Corrida ejemplo del programa cvb03.

Claro esta, para eso tenemos que hacer los siguientes ajustes
Al formulario de nuestro nuevo proyecto le ponemos como caption: Programa
Ejemplo cvb03 - Uso de If . Tal como se ve en la figura 13.0
La primera etiqueta (la que se encuentra arriba de la caja de texto) se le da un mensaje
indicativo como el que se ve en la figura 13: Ingrese un numero, o algo similar.
A la caja de texto debe quedarle la propiedad text en blanco, lo mismo debe ocurrir con
la propiedad caption de la segunda etiqueta.
Para que el programa realice lo que deseamos de l, debemos incluir el respectivo
cdigo, el cual vamos a colocar en el evento Change de la caja de texto. El evento
Change se activa cada vez que el usuario cambia el contenido o texto del control
textbox. El cdigo es el siguiente:

Private Sub Text1_Change()


'******************************************************************
'El evento change se produce cada vez que se cambia el contenido de
' la caja de texto, cuando esto ocurre se evala este cdigo
'******************************************************************

' a continuacin usamos la estructura if..then ..else para evaluar


' si el numero es positivo o negativo. Si es positivo se escribe
' lo que esta debajo del then, si es negativo se escribe lo que esta
' debajo del else en la etiqueta label2
If Val(Text1.Text) >= 0 Then
Label2.Caption = "El numero es positivo" ' Caso positivo
Else
Label2.Caption = "El numero es negativo" ' Caso negativo
End If
Visual Basic 5.0. Curso Bsico 32

'se limpia la etiqueta en caso de estar vaca la caja de texto


' o que el valor no sea un numero
If IsNumeric(Text1.Text) = False Then
Label2.Caption = ""
End If

End Sub

Ntese el uso de la funcin IsNumeric en la ultima parte del cdigo a fin de determinar si lo que
hay en la caja de texto es o no un numero.

IsNumeric
Indica si una expresin puede o no evaluarse como nmero.

Sintaxis
IsNumeric(expresin)

El argumento con nombre expresin puede ser cualquier expresin numrica o expresin de
cadena.

IsNumeric devuelve True si la expresin entera se reconoce como nmero, de lo contrario,


devuelve False.

Con razn si usted introduce una expresin no numrica en la caja de texto no recibe
ninguna respuesta por parte del programa.

Observe en la figura 13.0 que el formulario no tiene botn para maximizar, ni para
minimizar, esto se logra colocando en False ambas propiedades del formulario desde la
ventana de propiedades. Por cierto para cerrar el programa solo se cuenta con el botn de
cerrar la ventana en el formulario.

Estructuras Ciclicas
Ciclo For
Repite un grupo de instrucciones un nmero especificado de veces.
Sintaxis
For contador = principio To fin [Step incremento]
[Instrucciones]
[Exit For]
[Instrucciones]
Next [contador]
Visual Basic 5.0. Curso Bsico 33

La sintaxis de la instruccin For...Next tiene estas partes:

Parte Descripcin
contador Variable numrica que se usa como contador de bucle.
principio Valor inicial del contador.
fin Valor final del contador.
incremento Cantidad en la que cambia el contador cada vez a travs del bucle. Si
no se especifica, el valor predeterminado de incremento es uno.
instrucciones Una o ms instrucciones entre For y Next que se ejecutan un nmero
especificado de veces.

El argumento incremento puede ser positivo o negativo. El valor del argumento incremento
determina la manera en que se procesa el bucle, como se muestra a continuacin:

Valor El bucle se ejecuta


Positivo contador <= fin
Negativo contador >= fin

Una vez que se inicia el bucle y se han ejecutado todas las instrucciones en el bucle,
incremento se suma a contador. En este punto, las instrucciones en el bucle se pueden
ejecutar de nuevo (basados en la misma prueba que caus que el bucle se ejecutara
inicialmente) o se sale del bucle y la ejecucin contina con la instruccin que sigue a la
instruccin
Cambiar el valor de contador mientras se est dentro de un bucle, puede hacer difcil su
lectura y depuracin, adems de generar serios errores .

La instruccin Exit For slo se puede usar dentro de una estructura de control For...Next,
para proporcionar una manera alternativa de salir. Se pueden colocar en el bucle cualquier
nmero de instrucciones Exit For. La instruccin Exit For, el cual se usa a menudo en la
evaluacin de alguna condicin (por ejemplo, If...Then), transfiere el control a la
instruccin que sigue inmediatamente a la instruccin Next, a fin de abandonar el ciclo.
Se pueden anidar bucles For...Next, colocando un bucle For...Next dentro de otro. Para ello,
proporcione a cada bucle un nombre de variable nico como su contador. La siguiente
construccin es correcta:

For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
...
Next K
Next J
Next I

Para entender los ciclos, nada mejor que un ejemplo:


Visual Basic 5.0. Curso Bsico 34

Programa Ejemplo cvb04


Este es un programa para calcular el factorial de un numero entro menor que 100 (1 a 99)

Disee la siguiente ventana

Figura 14.0 Corrida ejemplo del programa cvb04.

Podemos eliminar los botones de minimizar y maximizar del formulario.


Si es de su agrado, en sus aplicaciones puede cambiar el color de fondo tanto de las
etiquetas como de las cajas de texto.
A fin de evitar que el usuario al correr el programa introduzca un numero mayor a 99
cambie el valor la propiedad MaxLength a 2; el usuario no podr introducir mas de dos
dgitos.
Los cdigos a incluir sern los siguientes:

En el botn usado para salir:

Private Sub Command2_Click()


End
End Sub

En el botn usado para ordenar que se calcule el factorial

Private Sub Command1_Click()


'********************************************************************
' En esta rutina vamos a verificar que la informacin que ingresa
'en la caja de texto es numrica, luego calculamos y mostramos el
' factorial en la etiqueta label2
'********************************************************************
Visual Basic 5.0. Curso Bsico 35

' Declaracin de las variables

Dim numero As Integer


Dim Fact As Double 'el factorial puede ser un numero muy grande
Dim cont As Integer ' para ser usada en el ciclo For

' Verificacin y captura del numero

If IsNumeric(Text1.Text) = True Then

numero = Val(Text1.Text) 'se captura el numero desde el textbox

Fact = 1 ' se inicializa el factorial a 1

' Calculo del factorial. Uso del ciclo for

For cont = numero To 1 Step -1


Fact = Fact * cont
Next cont

' se muestra el resultado, ntese que se usa la funcin CStr, la cual


' tiene como labor transformar una expresin numrica a cadena (texto).
Label2.Caption = "Factorial = " + CStr(Fact)

Else ' en este caso la caja de texto tiene un valor no numrico

MsgBox (" Valor no numrico. No tiene factorial") '?? Msgbox


Text1.Text = ""
Label2.Caption = ""

End If

End Sub

En el evento Change de text1

Private Sub Text1_Change()


'***************************************************
' Se limpia la etiqueta que muestra los resultados

Label2.Caption = ""

'****************************************************
End Sub
Visual Basic 5.0. Curso Bsico 36

En las instrucciones que continan al else, es decir cuando la informacin contenida en


la caja de texto no es un numero, se enva un alerta al usuario con la funcin MsgBox.

MsgBox
Muestra un mensaje en un cuadro de dilogo, espera a que el usuario elija un botn y devuelve el
valor correspondiente al botn elegido por el usuario.
Sintaxis
MsgBox(mensaje[, botones][, ttulo]

La sintaxis de la funcin MsgBox tiene estas partes de argumentos con nombre:


Parte Descripcin
mensajeExpresin de cadena que representa el mensaje en el cuadro de dilogo. La longitud mxima
de mensaje es de aproximadamente 1024 caracteres, segn el ancho de los caracteres
utilizados.
botones Expresin numrica que corresponde a la suma de los valores que especifican el nmero y
tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la
identidad del botn predeterminado y la modalidad. Si se omite este argumento se utiliza el
valor predeterminado, que es 0.
ttulo Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite
ttulo, no se pone nada en la barra de ttulo.

El argumento con nombre botones tiene estos valores:


Constante Valor Descripcin
vbOKOnly 0 Muestra solamente el botn Aceptar.
vbOKCancel 1 Muestra los botones Aceptar y Cancelar.
vbAbortRetryIgnore 2 Muestra los botones Anular, Reintentar e Ignorar.
vbYesNoCancel 3 Muestra los botones S, No y Cancelar.
vbYesNo 4 Muestra los botones S y No.
vbRetryCancel 5 Muestra los botones Reintentar y Cancelar.
vbCritical 16 Muestra el icono de mensaje crtico.
vbQuestion 32 Muestra el icono de interrogacin.
vbExclamation 48 Muestra el icono de exclamacin.
vbInformation 64 Muestra el icono de mensaje de informacin.
vbDefaultButton1 0 El primer botn es el predeterminado.
vbDefaultButton2 256 El segundo botn es el predeterminado.
vbDefaultButton3 512 El tercer botn es el predeterminado.

El primer grupo de valores (05) describe el nmero y el tipo de los botones mostrados en el cuadro de
dilogo; el segundo grupo (16, 32, 48, 64) describe el estilo del icono; el tercer grupo (0, 256, 512)
determina el botn predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de
mensaje. Cuando se suman nmeros para obtener el valor final del argumento botones, se utiliza
solamente un nmero para cada grupo
Nota Estas constantes son especificadas por Visual Basic. Por lo tanto, el nombre de las mismas
puede ser utilizado en cualquier lugar del cdigo en vez de su valor.

Valores devueltos por MsgBox


Constante Valor Botn seleccionado
vbOK 1 Aceptar
vbCancel 2 Cancelar
vbAbort 3 Anular
vbRetry 4 Reintentar
vbIgnore 5 Ignorar
vbYes 6 S
vbNo 7 No
Visual Basic 5.0. Curso Bsico 37

Ciclo Do-Loop-While
Repite un bloque de instrucciones mientras una condicin es True o hasta que una
condicin se convierta en True.

Sintaxis

Do While condicin
(Instrucciones)
[Exit Do]
(Instrucciones)
Loop

Puede usar esta sintaxis vlida equivalente:

Do
(Instrucciones)
[Exit Do]
(Instrucciones)
Loop While condicion

La sintaxis de la instruccin Do...Loop tiene estas partes:

Parte Descripcin
condicin Numrico o expresin de cadena que es True o False. Si la condicin
es Null, condicin se considera False.
instrucciones Una o ms instrucciones que se repiten mientras o hasta que
condicin sea True.

La instruccin Exit Do slo se puede usar dentro de una estructura de control


Do...Loop, para proporcionar una forma alternativa de salir de un Do...Loop. Se puede
colocar cualquier nmero de instrucciones Exit Do en cualquier lugar del Do...Loop.
Exit Do, usado a menudo en la evaluacin de alguna condicin (por ejemplo, If...Then),
transfiere control a la instruccin que sigue inmediatamente a la instruccin Loop.
Cuando se usa con instrucciones anidadas Do...Loop, Exit Do transfiere control al bucle
que est anidado un nivel por encima del bucle donde ocurre.

Para poner en practica el uso de Do loop, le retamos a que modifique el programa


ejemplo anterior, esto es el cvb04 a fin de que el factorial se calcule con un ciclo Do
Loop-While en lugar de hacerlo con un ciclo for. Puede resultar muy interesante hacer
la modificacin!
Visual Basic 5.0. Curso Bsico 38

Programa Ejemplo cvb05


Programa Ejemplo: Juego de Azar
1. Disee un formulario como el que se muestra a continuacin:

label1 label3

text1
label4

label2 command1

command2

Para que el formulario tenga esta apariencia debemos cambiar algunas de las propiedades de los controles
segn esta tabla:

Control Propiedad Valor


Caption Juego
Form1 MaxButton False
MinButton False
Introduzca aqui su numero ( 0 a 100 )
Label1 Caption
Pulse la Tecla Enter
Caption [En Blanco]
Label2
BorderStyle 1-Fixed Single
Caption Numero de Intentos
Label3
BorderStyle 1-Fixed Single
Caption [En Blanco]
Label4
BorderStyle 1-Fixed Single
text [En Blanco]
Text1 MaxLength 3
Enabled False
Command1 Caption Nuevo Juego
Command2 Caption Salir
Visual Basic 5.0. Curso Bsico 39

Agregaremos cdigo a los siguientes eventos:


Modulo General-Declaraciones del Formulario

Option Explicit 'se exige que las variables usadas a nivel de los procedimientos y de todo
' el formulario deben ser declaradas
' las variables aqu declaradas son reconocidas en todas las rutinas del formulario
Dim aleatorio As Integer 'Para almacenar l numero aleatorio
Dim intento As Integer ' Para contar el numero de intentos

Evento Click del formulario:

Sub Form_Click()
' Si se hace clic en la caja de texto sin inicilizar el juego en el botn
' Al estar desabilitada la caja de texto todo evento (click, por ejemplo)
' dirigido a la caja de texto lo recibe el formulario que la contiene
' con lo cual le envimos este mensaje.
MsgBox "Debe pulsar el botn Nuevo Intento para iniciar el juego", 0 + 48, "Para Jugar"
End Sub

Evento click del botn command2 (Salir)

Sub Command2_Click()
End
End Sub

Evento click del botn command1 (Iniciar nuevo Juego)

Sub Command1_Click()
*****************************************************
'Esta rutina inicializa la ventana en cada nuevo intento genera un numero aleatorio usando
'la funcin randimize rnd
'***************************************************
Randomize ' se inicializa el generador de nmeros aleatorios usando del reloj del comp.

aleatorio = Int(Rnd * 100) ' rnd genera un numero aleatorio entre 0 y 1


' al aplicar la funcin int obtenemos un numero entero
intento = 0 ' se inicializa el numero de intentos

' se limpia el textbox y la etiqueta de corridas anteriores y se habilita la caja de texto


Label2.Caption = ""
Label4.Caption = ""
Text1.Text = ""
Text1.Enabled = True ' se habilita la caja de texto
Text1.SetFocus ' se le enva el foco
End Sub
Visual Basic 5.0. Curso Bsico 40

Evento keypress de la caja de texto text1

Sub Text1_KeyPress(KeyAscii As Integer)


'******************************************************
' Este evento se produce cuando el usuario pulsa el teclado y el objeto tiene el foco.
' Keyascii es el cdigo de la tecla que fue pulsada.
'*******************************************************
Dim numero As Integer

'*************************************************************************
' Validar y recibir el numero dado. Solo se acepta el nmero si el usuario pulsa la
' tecla enter (KeyAscii = 13). El contenido dado por el usuario en text1 debe ser numrico
'************************************************************************

If KeyAscii = 13 Then ' se pulso la tecla enter


If IsNumeric(Text1.Text) And Val(Text1.Text) < 100 Then

'se captura el numero y se cuenta el intento


numero = Val(Text1.Text)
intento = intento + 1
Label4.Caption = Str(intento)

'se realiza la evaluacin


If numero = aleatorio Then
Label2.Caption = "Felicitaciones Ud. ha ganado"
Text1.Enabled = False
Else
If intento > 10 Then
Label2.Caption = "Ud. ha Perdido"
Text1.Enabled = False
Else
If numero > aleatorio Then
Label2.Caption = "Intente un numero menor"
Else
Label2.Caption = "Intente un numero mayor"
End If
End If
End If

Else

MsgBox "Debe introducir un numero entero menor que 100", 0 + 48, "Para Jugar"
Text1.Text = ""
End If

End If
End Sub
Visual Basic 5.0. Curso Bsico 41

Dos aspectos resultan novedosos en el ejemplo anterior:


El primero es la generacin de nmeros aleatorios usando la funcin Rnd, este cdigo
se encuentra en el evento clic del botn Command1. La funcin Rnd genera un numero
aleatorio entre 0 y 1 por lo cual es necesario multiplicarlo por 100 y extraer la parte
entera al resultado para tener un numero aleatorio ubicado entre 0 y 100.

Rnd
Devuelve un nmero aleatorio.

Sintaxis
Rnd[(nmero)]

El argumento con nombre nmero puede ser cualquier expresin numrica vlida.
La funcin Rnd devuelve un valor menor que 1 pero mayor o igual a 0.
El valor de nmero determina la forma en que Rnd genera un nmero aleatorio.

Si el nmero es Rnd genera:


Menor que cero El mismo nmero todas las veces, utilizando el nmero como semilla.
Mayor que cero El prximo nmero aleatorio de la secuencia.
Igual a cero El nmero generado ms recientemente.
No se provee El prximo nmero aleatorio de la secuencia.

Para cualquier semilla inicial se genera la misma secuencia de nmeros. Esto es debido a que cada
llamada sucesiva a la funcin Rnd usar el nmero anterior como semilla para el siguiente nmero de
la secuencia.
Se utiliza la instruccin Randomize sin argumento para proveer una semilla aleatoria que se base en el
cronmetro del sistema para inicializar el generador de nmeros aleatorios antes de llamar a Rnd.
Para producir enteros aleatorios en un intervalo dado se utiliza esta frmula:

Int((lmitesup - lmiteinf + 1) * Rnd + lmiteinf)

Aqu, lmitesup es el nmero mayor del intervalo y lmiteinf es el nmero menor del intervalo.

Para repetir secuencias de nmeros aleatorios, se puede llamar a Rnd con un parmetro negativo
antes de utilizar Randomize con un parmetro numrico. Al utilizar Randomize con el mismo valor
de nmero no se repite la secuencia previa.

El segundo aspecto que es importante notar es la declaracin de la variable aleatorio, la


cual no se realizo dentro de ningn cdigo de eventos, sino que ms bien se hizo en el
modulo general de declaraciones del formulario. El modulo general de declaraciones
del formulario es una zona concebida para declarar variables que pueden ser
reconocidas por todas las subrutinas del formulario, esto es por todos los
procedimientos de eventos que formen parte de este formulario. Para entender mejor
este aspecto es necesario hacer un estudio del mbito o alcances de las variables en un
proyecto de Visual Basic.
Visual Basic 5.0. Curso Bsico 42

Niveles de Visibilidad de un Programa

Un programa en Visual Basic tiene varios niveles de visibilidad para el intercambio de


informacin:

Nivel Proyecto
Variables declaradas como Publicas en modulos de codigos

Nivel Formulario Nivel Formula rio


Variables declaradas en Variables declaradas en
Modulo General Modulo General

q h ru rir f oo f f jjjjjfq h ruri

Private Sub Text 1_click()

r f o o f f jjjjjf

endsub

iu iu e oe o eo e oe o e oee

ee e e ee e e e eee e e e
ee e e ee e

ee e e ee e ee e ee e e eee ee

e
efde wre g
sg s g arga

gfhu jkk k kk lllllll

f
Nivel Procedimientos
f Las variables son locales y
declaradas en el procedimento
con Dim

Figura 15.0 Ambito o Nivel de alcance de las variables

1. En el nivel ms inferior de un proyecto (como se ve en el esquema que muestra la


figura 15.0), encontramos a los procedimientos. Hasta ahora hemos trabajado con los
procedimientos que nos entrega Visual Basic para los eventos de los controles, las
variables que se declaran en el interior de estos procedimientos solo son visibles dentro
del procedimiento y existen mientras se este ejecutando dicha subrutina. Un
procedimiento no puede invocar o consultar el contenido de variables declaradas en otro
procedimiento. Mas aun, el tiempo de vida de una variable local a un procedimiento
esta enmarcada al tiempo en el que dure la ejecucin de este procedimiento, es decir el
tiempo que tarda en ir desde el Sub hasta el End Sub.
Visual Basic 5.0. Curso Bsico 43

2. Un nivel superior, es el nivel formulario, en muchos casos es necesario que el contenido


de una variable sea general a todo un formulario, esto puede requerirse bien porque se
desea que ms de un procedimiento pueda consultar el contenido de esta variable, o
porque se desea que el tiempo de vida de esta variable sea similar al tiempo que dure el
formulario abierto durante la corrida del programa, evitando as perder durante este
periodo la informacin contenida en esta variable (este es el caso de la variable
aleatorio y la variable intento en el ejemplo cvb5 descrito anteriormente). Estas
variables globales a un formulario deben declararse en el modulo general de
declaraciones del formulario, al hacerlo de esta forma, las variables son reconocidas y
pueden ser invocadas por cualquier procedimiento dentro del formulario, pudiendo
cualquier procedimiento leer o modificar el valor de estas variables. Claro esta, si
nuestro proyecto tuviera mas de un formulario, las variables globales a un formulario no
pueden ser reconocidas en otros formularios.

3. Para que un procedimiento o una variable pueda ser usada o invocada por cualquier
formulario, debe ser declarada como publica en un modulo de cdigo independiente,
para crear un modulo de cdigo debemos agregarlo a nuestro proyecto usando el
comando Add Module del men Project o el respectivo botn de la caja de
herramientas:

Hasta ahora no hemos utilizados mdulos de cdigo en nuestros programas, sin


embargo mas adelante en este curso desarrollaremos programas con mas de un
formularios y mdulos de cdigos.
Por los momentos nos interesa aprender un poco mas acerca de las subrutinas de Visual
Basic.

Subrutinas de Visual Basic.

Visual Basic, como todo lenguaje de la familia Basic, cuenta con dos tipos de Subrutinas:
Las Funciones.
Los Procedimientos.

Las Funciones
Existen dos grandes tipos de funciones estas son:
1. Las funciones de Librera de Visual Basic
2. Las funciones definidas por el Programador

Adems de la que hemos visto hasta ahora, revisaremos a continuacin algunas de las mas
importantes funciones de librera que vienen con Visual Basic:
Visual Basic 5.0. Curso Bsico 44

Algunas Funciones de Librera de Visual Basic


Abs( )
Devuelve el valor absoluto de un nmero.
Sintaxis
Abs(nmero)
El argumento nmero puede ser cualquier expresin numrica. El valor absoluto de un
nmero es su magnitud sin signo. Por ejemplo, ABS(-1) y ABS(1) devuelven 1.

Cos( )
Devuelve el coseno de un ngulo.
Sintaxis
Cos(nmero)
El argumento con nombre nmero puede ser cualquier expresin numrica vlida que
exprese un ngulo en radianes.
Ejemplo
MiAngulo = 1.3 ' Define un ngulo en radianes.
MiSecante = 1 / Cos(MiAngulo) ' Calcula la secante.

Exp( )
Devuelve el nmero e (que es la base de los logaritmos naturales) elevado a una potencia.
Sintaxis
Exp(nmero)
El argumento con nombre nmero puede ser cualquier expresin numrica vlida. Si el
valor del nmero es mayor que 709,782712893, ocurre un error. La constante e es
aproximadamente 2.718282.

Int ( )
Devuelve la porcin entera de un nmero.

Sintaxis
Int(nmero)

El argumento nmero puede ser cualquier expresin numrica. Int elimina la fraccin de
un nmero y devuelven el valor entero resultante.

Ejemplo
MiNumero = Int(99.8) ' Devuelve 99.
Visual Basic 5.0. Curso Bsico 45

Now ( )
Devuelve la fecha y la hora actuales de acuerdo a la configuracin de la fecha y la hora del
sistema de su PC.

Sintaxis
Now

Ejemplo
Label1.Caption = Now Asigna la fecha y hora actual del sistema a la etiqueta Label1.

QBColor ( )
Devuelve el cdigo de color RGB correspondiente a un nmero de color.

Sintaxis
QBColor(color)

El argumento color es un nmero entero entre 0 a 15, como se describe a continuacin.


Nmero Color Nmero Color
0 Negro 8 Gris
1 Azul 9 Azul claro
2 Verde 10 Verde claro
3 Aguamarina 11 Aguamarina claro
4 Rojo 12 Rojo claro
5 Fucsia 13 Fucsia claro
6 Amarillo 14 Amarillo claro
7 Blanco 15 Blanco brillante
Ejemplo
En este ejemplo se utiliza la funcin QBColor para cambiar la propiedad BackColor de un
formulario:
MiForm.BackColor = QBColor(10)

Sgn ( )
Devuelve un entero indicando el signo de un nmero.

Sintaxis
Sgn(nmero)

El argumento nmero puede ser cualquier expresin numrica vlida.


Si nmero es Sgn devuelve
Mayor que cero 1
Igual a cero 0
Menor que cero -1
Ejemplo
MiSigno = Sgn(-2) ' Devuelve -1
MiSigno = Sgn(4) ' Devuelve 1
Visual Basic 5.0. Curso Bsico 46

Sin ( )
Devuelve el seno de un ngulo.

Sintaxis
Sin(nmero)

El argumento con nombre nmero puede ser cualquier expresin numrica vlida que
exprese un ngulo en radianes.

Sqr ( )
Devuelve la raz cuadrada de un nmero.

Sintaxis
Sqr(nmero)

El argumento con nombre nmero puede ser cualquier expresin numrica vlida mayor o
igual que 0.
Ejemplo
MiSqr = Sqr(4) ' Devuelve 2.
MiSqr = Sqr(-4) ' Genera un error de ejecucin. Esto debe evitarse

Tan ( )
Devuelve la tangente de un ngulo.

Sintaxis
Tan(nmero)

El argumento con nombre nmero puede ser cualquier expresin numrica vlida que
expresa un ngulo en radianes.

Atn ( )

Devuelve el arcotangente de un nmero.

Sintaxis
Atn(nmero)

El argumento con nombre nmero puede ser cualquier expresin numrica vlida. Atn es la
funcin trigonomtrica inversa de Tan. El intervalo del resultado es -pi/2 a pi/2 radianes.

Adems de las funciones aportadas por Visual Basic, el programador puede crear sus
propias funciones:
Visual Basic 5.0. Curso Bsico 47

Las funciones definidas por el Programador


Para agregar a un formulario el cdigo de una funcin definida por el programador
podemos realizar los siguiente pasos:
1. Ubicaremos nuestro programa en la seccin de cdigo del formulario
2. Ejecutaremos el comando Add Procedure... del men Tools con lo cual se desplegara
la siguiente ventana de dialogo:

Figura 16.0 Ventana de Insertar Procedimiento

3. En esta ventana debemos seleccionar la opcin Function del grupo de Type, y la


opcin Private del grupo de Scope (ambito), como se observa en la figura 16.0
4. Antes de cerrar esta ventana es fundamental dar un nombre a la plantilla de funcin que
vamos a insertar. Luego de esto pulsamos la el botn aceptar, con lo que aparecer una
plantilla de cdigo como la siguiente:

Figura 17.0 Ventana de Cdigo de un Formulario (Seccin General del Formulario)

5. La plantilla presentada por Visual Basic no es la funcin completa, para completarla


necesitamos agregar el tipo de dato que devuelve la funcin, los parmetros de la
funcin, si estos existen, y el cuerpo o cdigo de la funcin.
6. A continuacin mostramos un ejemplo de una funcin del programador con todas sus
partes. Esta funcin recibe dos nmeros enteros y determina si el primero es
exactamente divisible entre el segundo:
Visual Basic 5.0. Curso Bsico 48

Private Function Divisible(numero As Integer, divisor As Integer) As Boolean

'Para saber si la divisin entre numero y divisor es exacta utilizaremos


el operador de librera Mod, la cual devuelve el residuo de una divisin entera

Dim resto As Integer ' Variable interna a la funcin

If numero = 0 or divisor = 0 Then


Divisible = False
Exit Function
End If

resto = numero Mod divisor

If resto = 0 Then
' la funcin devuelve True si numero es divisible por divisor
Divisible = True
Else
' la funcin devuelve False si numero no es divisible por divisor
Divisible = False
End If

End Function

Note los siguientes detalles

Los parmetros van dentro del parntesis que esta al lado del nombre; indicando los
tipos de datos que han de manejar:
Private Function Divisible(numero As Integer, divisor As Integer) As Boolean

En este ejemplo ambos parmetros son del tipo Integer

A la funcin tambin se le asigna un tipo, como si fuera una variable. Este tipo se
refiere al tipo de dato que ha de devolver la funcin:
Private Function Divisible(numero As Integer, divisor As Integer) As Boolean

El tipo puede ser cualquiera de los validos para Visual Basic: Integer, single, double etc.
En nuestro caso se uso el Tipo Boolean, con lo cual la funcin devuelve True o False

El final de la funcin es la lnea End Function, sin embargo es posible, si se considera


necesario, abandonar la funcin prematuramente con la instruccin Exit Function.

El valor que ha de devolver la funcin debe ser indicado en forma explcita, asignando
dicho valor al nombre de la funcin antes de que el cdigo alcance la instruccin End, o
la instruccin Exit Function, si esta existe en el cdigo de la funcin:
Visual Basic 5.0. Curso Bsico 49

Else
' la funcin devuelve False si numero no es divisible por divisor
Divisible = False

La expresin Private antes del nombre de la funcin indica que la funcin solo podr
ser utilizada en el entorno del formulario donde fue declarada, si existieran en nuestro
proyecto mas de un formulario y quisiramos que esta funcin fuera utilizada por todos
tendramos que cambiar esta expresin por Public.

Al alcanzar la instruccin End Function o Exit Function el control del programa se


regresa a la lnea del cdigo que realizo el llamado a la funcin devolviendo un valor
como restado del uso de la funcin. El llamado a una funcin diseada por el
programador es igual a cuando llamamos a una funcin de librera.

Estoy seguro que entenderamos mejor el uso de funciones con un ejemplo!

Programa Ejemplo cvb06 Ao Bisiesto


Para que el nmero que representa a un ao sea bisiesto, este valor debe ser divisible entre
4, pero no entre 100, por cierto a esta ultima condicin (la no divisibilidad entre 100)
quedan exentos los divisibles entre 400. Diseemos un programa que, para un numero
dado, responda si este representa a un ao Bisiesto.
El formulario a disear tiene la siguiente apariencia:

Cambiamos la propiedad Caption de:


label1 por: &Introduzca el Ao
Command1 por: &Salir
Visual Basic 5.0. Curso Bsico 50

En el caso de text1 y label2, las mostramos en blanco.

El botn command1 tendr, como siempre, la instruccin End en su evento click

Incluya el siguiente cdigo en el evento Change de la caja de texto:

Private Sub Text1_Change()


Dim dato As Integer

Label2.Caption = "" 'Para limpiar la respuesta en cada nueva entrada

'Se utiliza el operador lgico Not el cual devuelve el inverso de


' los valores Booleanos True o False
' Si el valor en text1.text NO es numrico...
If Not IsNumeric(Text1.Text) Then
Exit Sub ' ......Salida inmediata del procedimiento
End If

dato = CInt(Text1.Text)

'********** En este segmento se realizan tres llamados a la funcin *************


'**** Divisible la cual devuelve True si son divisible los nmeros **************
'******** y False en caso contrario *****************************

If Divisible(dato, 4) Then
If Not Divisible(dato, 100) Then
Label2.Caption = "Este ao es Bisiesto"
Else
If Divisible(dato, 400) Then
Label2.Caption = "Este ao es Bisiesto"
Else
Label2.Caption = "Este ao No es Bisiesto"
End If
End If
Else
Label2.Caption = "Este ao No es Bisiesto"
End If

End Sub

finalmente incluiremos la funcin Divisible en la seccin general del formulario:


Private Function Divisible(numero As Integer, divisor As Integer) As Boolean
Visual Basic 5.0. Curso Bsico 51

'Para saber si la divisin entre numero y divisor es exacta utilizaremos


' el operador de librera Mod, la cual devuelve el residuo de una divisin entera

Dim resto As Integer ' Variable interna a la funcin

If numero = 0 Or divisor = 0 Then


Divisible = False
Exit Function ' Salida prematura de la funcin
End If

resto = numero Mod divisor

If resto = 0 Then
' la funcin devuelve True si nmero es divisible por divisor
Divisible = True
Else
' la funcin devuelve False si nmero no es divisible por divisor
Divisible = False
End If
End Function

Not
Se utiliza para ejecutar una negacin lgica sobre una expresin.
Sintaxis
resultado = Not expresin

resultado Cualquier variable numrica.


expresin Cualquier expresin.

La siguiente tabla muestra cmo se determina el resultado:


Si expresin es Entonces resultado es
True False
False True

Mod
Divide dos nmeros (division entera) y devuelve slo el residuo.
Sintaxis
resultado = nmero1 Mod nmero2

Parte Descripcin
resultado Cualquier variable numrica.
nmero1 Cualquier expresin numrica (Preferiblemente entera).
nmero2 Cualquier expresin numrica (Preferiblemente entera)..

El operador de Mod divide nmero1 por nmero2 (redondeando a enteros los nmeros de punto flotante) y
devuelve slo el residuo como resultado. Por ejemplo, en la siguiente expresin, A (que es el resultado) es
igual a 5. A = 19 Mod 6.7
Visual Basic 5.0. Curso Bsico 52

Los Procedimientos
Constituyen el ms importante tipo de Subrutina diseado por el programador. Para anexar
un procedimiento al modulo general de un formulario se siguen los mismos paso que para
una funcin, con la diferencia que en la ventana de insertar procedimiento se marca la
opcin Procedimiento en lugar de Funcin. Con lo cual Visual Basic le mostrara una
plantilla similar a la de la funcin.
La sintaxis completa de un procedimiento es la siguiente:
[Private / Public] Sub nombre (argumento1 as tipo, argumento2 as tipo......)
[Instrucciones]
[Exit Sub]
[Instrucciones]
End Sub
Sin saberlo durante este curso hemos estado utilizando procedimientos. Si observa bien la
plantilla de cdigo para los eventos de los objetos son Procedimientos, como es el caso del
procedimiento utilizado en el ejemplo anterior (cvb06 Ao Bisiesto) en donde colocamos
cdigo en el evento Change de la caja de texto, creando as el procedimiento:
Private Sub Text1_Change()

End Sub

Ahora bien, los procedimientos creados para los eventos de los objetos son llamados
automticamente por Visual Basic cuando el evento ocurre en tiempo de ejecucin. Otros
procedimientos diseados por el programador deben ser llamados con la instruccin Call.

Call.
Transfiere el control a un procedimiento Sub.
Sintaxis
[Call] nombre [listaargumentos]

Parte Descripcin
Call Palabra clave opcional; si se especifica, listaargumento se debe colocar
entre parntesis. Por ejemplo: Call MyProc(0)
nombre Nombre del procedimiento a llamar.
listaargumentos Lista de variables, delimitada por coma, para pasar al procedimiento. Los
componentes de listaargumentos pueden incluir las palabras clave ByVal
o ByRef para describir la forma en la que los argumentos deben ser
tratados por el procedimiento llamado.

No se requiere usar la palabra clave Call cuando se llama a un procedimiento. Sin embargo, si se
usa la palabra clave Call para llamar a un procedimiento que requiere los argumentos,
listaargumentos debe estar entre parntesis. Si se omite la palabra clave Call, debe omitir tambin
los parntesis alrededor de listaargumentos.

A diferencia de las funciones, los procedimientos no devuelven directamente un valor, sino


que lo hacen en forma indirecta alterando en memoria el valor de las variables que crean los
argumentos cuando son pasados por referencia.
Visual Basic 5.0. Curso Bsico 53

Argumentos por Referencia o por Valor


En las funciones (Function), y en los procedimientos (Sub), los argumentos se pasan por
referencia de direccion de memoria; de este modo, cualquier cambio de valor que sufra un
parmetro en el cuerpo de la funcin o el procedimiento, tambin se produce en la variable
argumento original. A esta caracterstica en el paso de las variables como argumentos se le
llama paso por referencia. El paso por referencia es el paso predefinido en Visual Basic.
Existe otra forma de pasar las variables a una subrutina y este es el paso por Valor. En el
paso por valor el argumento de la funcin o el procedimiento solo recibe una copia del
valor de la variable original, en consecuencia los cambios de los parmetros no afectan a las
variables que hacen la llamada. Para lograr un paso por valor se hace necesario usar la
expresin ByVal. Por ejemplo: Sub Factorial (ByVal X as integer, Y as single)
En este ejemplo X es pasado por valor, mientras Y es pasado por referencia.

Ya es hora de entender el uso de procedimientos con un ejemplo!

Programa Ejemplo cvb07 El Perro y el Ratn


En este sencillo ejemplo vamos a tratar que el usuario mueva un ratn utilizando el mouse,
mientras un perro lo persigue por todo el formulario.
Para esto vamos a utilizar un nuevo control, el control Imagen (image). El control imagen
esta disponible en la caja de herramientas bajo este smbolo:

Entre las propiedades ms importantes de un control imagen encontramos:

Picture
Devuelve o establece un grfico mostrado en un control Image.
Sintaxis
objeto.Picture [= imagen]
La imagen puede ser un icono o mapa de bits

Stretch
Devuelve o establece un valor que indica si un grfico cambia su tamao para ajustarlo
al de un control Image.
Sintaxis
objeto.Stretch [= lgico]

Los valores de lgico son:


Valor Descripcin
True El grfico y la imagen cambia su tamao para ajustarlo al del control.
False (Predeterminado) El control cambia su tamao para ajustarlo al del grfico.
Visual Basic 5.0. Curso Bsico 54

El formulario que crearemos esta vez ser el siguiente:

Figura 18.0 Programa Ejemplo cvb07

Ya usted sabe como crear el botn para Salir, la figura de la parte derecha superior del
formulario se crea insertando en el mimo un control imagen, en nuestro caso es el control
image1. Realice los siguientes cambios en nuestros controles:
En la propiedad picture de image1 cargaremos el siguiente icono
...\vb\icons\arrows\Point08.ico (Viene con Visual Basic 4.0 o 3.0).
Cambiemos la propiedad Stretch de image1 a True y reajuste el tamao de la
figura.
Carge en la propiedad MouseIcon del formulario el siguiente icono
...\vb\icons\computer\mouse04.ico (Viene con Visual Basic 4.0 o 3.0).
La propiedad caption del Formulario es la que se ve en la figura 18.0 Programa
Ejemplo cvb07.
Se cambia el Backcolor de formulario por un color que contraste con gris.
Las lneas de cdigo son las siguientes:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As_


Single)

'********************************************************************
' Los valores X y Y que se pasan como parmetros a este procedimiento
'son los valores del puntero del ratn los cuales se envan al procedimiento Buscar
'********************************************************************

Form1.MousePointer = 99 'Se utiliza el icono ubicado en MouseIcon

'Llamada al procedimiento Buscar pasando como argumentos los valores de la


' posicin del ratn
Call Buscar(X, Y)

End Sub
Visual Basic 5.0. Curso Bsico 55

Private Sub Command1_Click()


End
End Sub

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y_


As Single)

' Restablece el ratn al utilizado por el sistema


Form1.MousePointer = 0

End Sub

Tambin insertaremos los siguientes procedimientos:


Private Sub Buscar(ByVal ratonx As Single, ByVal ratony As Single)
'*****************************************************************
'Procedimiento diseado para mover a image1 (el perro)
'hasta la posicin del cursor (ratn). La posicin del ratn
' es enviada como parmetro de la funcin, la posicin de image1
'se calcula consultando sus propiedades Left y Top; para que el
' perro persiga al ratn, se recalculan las posiciones de estas
' dos propiedades, lo cual moviliza a image1
'****************************************************************

Do While Image1.Left <> ratonx Or Image1.Top <> ratony

Image1.Left = Image1.Left + Sgn(ratonx - Image1.Left)


Image1.Top = Image1.Top + Sgn(ratony - Image1.Top)

retardo (200) ' Llamado a rutina que causa retardo


Loop

End Sub

Private Sub retardo(tiempo As Integer)

Dim i As Integer

For i = 1 To tiempo

' no se ejecuta ninguna instruccin, solo se crea un retardo

Next i

End Sub
Visual Basic 5.0. Curso Bsico 56

Mejorando la Interfaz

En esta seccin veremos algunos controles que adicionan mas interactividad entre el
usuario y el programa. Comenzaremos por el botn de opciones.

OptionButton

Un control OptionButton muestra una opcin que se puede activar o desactivar.


Generalmente, los controles OptionButton se utilizan en un grupo de seleccin para mostrar
opciones de las cuales el usuario slo puede elegir una. Los controles OptionButton se
agrupan dibujndolos dentro de un contenedor como un control Frame (Marco), o un
formulario. Para agrupar controles OptionButton en un Frame, dibuje en primer lugar el
Frame y, a continuacin, dibuje dentro los controles OptionButton. Todos los controles
OptionButton que estn dentro del mismo contenedor actan como un solo grupo.
Cuando un usuario selecciona un OptionButton, los otros controles del mismo grupo
OptionButton dejan de estas disponibles automticamente. Los botones de opcin estn
disponibles en la caja de herramienta bajo el siguiente smbolo:

Las propiedades de un OptionButton son muy similares a las de un commandButton, sin


embargo cuenta con la propiedad Alignment que le permite alinear el boton a la izquierda
o derecha del OptionButton. Su propiedad ms importante es la propiedad Value.

Value
Devuelve o establece el estado del control.
Sintaxis
objeto.Value [= valor]

valor True = indica que el botn est seleccionado.

False = (predeterminado) que no est seleccionado.

Como ya hemos comentado, los botones de opcin se utilizan comnmente dibujados


dentro de un marco (Frame) por lo que es recomendable el inmediato estudio del control
Frame. Antes de realizar un ejemplo con botones de opcin.
Visual Basic 5.0. Curso Bsico 57

Frame (Marco)
Un control Frame proporciona un agrupamiento identificable para controles. Tambin
puede utilizar un Frame para subdividir un formulario funcionalmente, por ejemplo, para
separar grupos de controles OptionButton. Para agrupar controles, en primer lugar trace el
control Frame y, a continuacin, los controles dentro de Frame. De este modo podr mover
al mismo tiempo el Frame y los controles que contiene. Si traza un control fuera del Frame
y, a continuacin, intenta moverlo dentro de ste, el control se colocar sobre el Frame y
deber mover el Frame y los controles por separado. Aprenderemos con un ejemplo:

Programa Ejemplo cvb08 Cambio de Temperatura


Construya el siguiente formulario

El cuadro en la parte superior derecha del formulario con el caption Tipo de


Conversin es un control Frame que contiene dos OptionButton .
En Option1 se coloco la cadena Centigrados a Fahrenheit en la propiedad caption.
Tambin se cambio su propiedad Value a True.
En Option2 se coloco la cadena Farenheit a Centigrados en la propiedad caption.
El rectngulo blanco que se ve en el formulario es una caja de texto (text1).
El rectngulo vaco de color gris que se ve en la parte inferior del formulario es una
etiqueta (label1).
Ahora los cdigos:
1. Evento clic de botn usado para Limpiar

Private Sub Command1_Click()

Text1.Text = "" ' Limpia la caja de texto donde ingresan los datos

Label1.Caption = "" ' Limpia la etiqueta donde se muestran los resultados

End Sub
Visual Basic 5.0. Curso Bsico 58

2. Evento Click del botn para Salir


Private Sub Command2_Click()
End
End Sub

3. Los eventos clic de los botones de Opcin

Private Sub Option1_Click()

' Al elegir cualquier opcin, se reajustan las etiquetas a fin de que la etiqueta sobre text1
'sea del dato de entrada la etiqueta sobre el label1 corresponda al resultado

Label3.Caption = "Grados Faharenheit"


Label2.Caption = "Grados Centigrados"

'Llamado a un Procedimiento que no tiene parmetros


' este procedimiento es el evento change de text1
Call Text1_Change

End Sub

Private Sub Option2_Click()

' Al elegir cualquier opcin se reajustan las etiquetas a fin de que la etiqueta sobre text1 sea
'del dato de entrada la etiqueta sobre el label1 corresponda al resultado

Label2.Caption = "Grados Faharenheit"


Label3.Caption = "Grados Centigrados"

'Llamado a un Procedimiento que no tiene parmetros


' este procedimiento es el evento change de text1
Call Text1_Change

End Sub

4. La conversin se realiza en el evento change de text1

Private Sub Text1_Change()


'******************************************************************
' Para realizar las transformaciones se verifica:
' 1. Que exista informacin en la caja de texto
' 2. Que el contenido de la caja represente un numero
' 3. El ciclo if interno verifica si el usuario ha seleccionado
' a option1 o a Option2 para saber que transformacin realizar
' Esto lo hace consultando la propiedad value del OptionButton.
'******************************************************************
Visual Basic 5.0. Curso Bsico 59

If Text1.Text <> "" And IsNumeric(Text1.Text) Then


If Option1.Value = True Then
Label1.Caption = (9 / 5) * Val(Text1.Text) + 32 'C a F
Else
Label1.Caption = (5 / 9) * (Val(Text1.Text) - 32) 'F a C
End If
End If

End Sub

Private Sub Command1_Click()


' Para limpiar la entrada y la salida de resultados
Text1.Text = ""
Label1.Caption = ""
End Sub

Control Timer

Otro control interesante es el control Timer. Un control Timer puede ejecutar cdigo a
intervalos regulares produciendo un evento Timer. El control Timer, invisible para el
usuario, resulta til para el procesamiento de fondo. Por ser un control no visual, el Timer
posee muy pocas propiedades de las cuales la ms relevante es la propiedad interval

Interval
Devuelve o establece el nmero de milisegundos entre las llamadas al evento Timer de un control
Timer.
Sintaxis
objeto.Interval [= milisegundos]

La sintaxis de la propiedad Interval consta de las siguientes partes:

Parte Descripcin
objeto Expresin de objeto que da como resultado un objeto de la lista Aplicable a.
milisegundos Expresin numrica que especifica el nmero de milisegundos

Si milisegundos=0 (valor prdeterminado) el timer esta inactivo.

Puede establecer la propiedad Interval de un control Timer en tiempo de diseo o en tiempo de


ejecucin. Cuando utilice la propiedad Interval recuerde lo siguiente:

La propiedad Enabled del control Timer determina la forma en que el control responder al paso del
tiempo. Establezca False en Enabled para deshabilitar el control Timer, o True para habilitarlo.
Cuando se activa un control Timer, la cuenta atrs siempre empieza por el valor indicado en su
propiedad Interval.
Cree un procedimiento de evento Timer para indicar a Visual Basic lo que debe hacer cada vez que
transcurra el intervalo indicado en Interval.

Un ejemplo en el que se emplea un control timer:


Visual Basic 5.0. Curso Bsico 60

Programa Ejemplo cvb09 Reloj

Este programa esta formado por:


Un formulario (Formm1)
Dos PictureBox
(Picture1)
(Picture2 )
Un Label (label1)
Un timer (timer1)
Dos commandButton
(command1)
(command2)

Agrupe de la siguiente forma estos controles:

Para que las cajas de dibujo tengan estas figuras cargaremos en la propiedad Picture de
cada una, los siguientes iconos que vienen con el Visual Basic 4.0:

En Picture1 (el que esta al fondo): ...\VB\icons\misc\face01.ico


En Picture2 (el que esta al frente): ...\VB\icons\misc\face02.ico

A continuacin coloque la propiedad Autosize de ambos controles PicturBox a True, y


oculte a Picture1 exactamente detrs de Picture2, de tal manera que solo se vea a Picture2.
Coloque en Picture1.visible=True y en Picture2.Visible=False.

Otra propiedad que es necesario modificar es la propiedad Interval del control Timer,
cambiando su valor predeterminado de 0 a 500. Con lo cual se producir una llamada al
evento Timer del control Timer1 cada 500 milisegundos (esto es cada segundo).
Visual Basic 5.0. Curso Bsico 61

De esta forma cada ves que se llame a este evento se ejecutara el siguiente cdigo:

Private Sub Timer1_Timer()


' Este evento es llamado automticamente por el computador cada vez que
' se cumpla el periodo indicado por la propiedad Interval del control Timer1

Label1.Caption = Time 'Actualiza la hora Colocndola en la etiqueta.

'Pone visible o invisible en forma alternativa a los controles


' Picture1 y Picture2, logrando as una sencilla animacin

Picture1.Visible = Not Picture1.Visible ' Invierte el actual valor de la propiedad visible


Picture2.Visible = Not Picture2.Visible

End Sub

El evento clic del botn command1

Private Sub Command1_Click()

' esta rutina habilita o deshabilita la labor de control timer mediante su propiedad enabled,
'al mismo tiempo cambia el titulo de command1

If Command1.Caption = "&Parar" Then


Timer1.Enabled = False
Command1.Caption = "&Continuar"
Else
Timer1.Enabled = True
Command1.Caption = "&Parar"
End If

End Sub

Es importante hacer notar que el control Timer solo responde al evento Timer, no tiene
otros eventos.

Por otro lado el control Picture utilizado por primera vez en este ejemplo es similar al
control image solo que no tiene la propiedad Stretch, pero tiene la propiedad Autisize que
adapta el tamao del control al tamao de la imagen que porta.
Visual Basic 5.0. Curso Bsico 62

Diseo de Mens
El diseo de mens adecuados hacen que las aplicaciones sean mucho ms amigables con
el usuario. Se crean mens en Visual Basic mediante la utilizacin del Editor de Mens.
Para llamar al editor de mens se puede usar el comando Men Editor del men Tools de
la barra de mens de Visual Basic. Por otro lado puede llamarlo usando el correspondiente
botn de la barra de herramientas:

Una vez llamado, el editor de mens presenta la siguiente ventana de edicin:

Figura 19.0 Editor de Mens

Utilice el men Editor para crear mens personalizados para su aplicacin y para definir sus
propiedades

Para cerrar el Editor de mens, haga doble clic en el cuadro del men de control. Para
aceptar los cambios realizados en el Editor de mens, elija Aceptar.

El Editor de mens consta de:


Caption: Cuadro de texto en el cual introduce el nombre del men o del comando que
aparece en su barra de men o en su men.

Para dar un acceso de teclado al usuario a la opcin de men, inserte un signo & antes de
una letra. En tiempo de ejecucin, esta letra se subraya, y el usuario puede tener acceso al
men o comando presionando ALT y la tecla de acceso.
Visual Basic 5.0. Curso Bsico 63

Name: Cuadro de texto en el cual introduce un nombre de control para el elemento de


men. Un nombre de control es un identificador que se utiliza slo para tener acceso al
men en el cdigo, pero no aparece en el men.

Shortcut: Un cuadro de lista desplegable desde el cual puede seleccionar una combinacin
de teclas de mtodo abreviado con la cual se tiene acceso rpido al men.

Checked. Una casilla de verificacin que puede seleccionar si desea que aparezca una
marca de verificacin inicialmente a la izquierda de un elemento de men. Esto se utiliza
generalmente para indicar si una opcin est activada o desactivada.

Enabled. Una casilla de verificacin que puede seleccionar si desea que el elemento de
men responda a eventos, o que puede desactivar si desea que no est disponible y aparezca
borroso.

Visible. Una casilla de verificacin que puede seleccionar si desea que el elemento de
men aparezca sobre el men.

Un conjunto de botones exteriores que le permiten mover los elementos de men a un nivel
ms alto o ms bajo:

Utilice estos botones para cambiar el nivel de un men a un nivel ms alto o a un nivel
ms bajo. Puede crear hasta cuatro niveles de submens.

Utilice estos botones para cambiar la posicin de un elemento de men dentro del mismo
nivel de men (hacia arriba o hacia abajo en la lista de men).

Un cuadro de lista que muestra una lista jerrquica de elementos de men. Los elementos
de los submens se sangran para indicar su posicin jerrquica o nivel.
Visual Basic 5.0. Curso Bsico 64

El Editor de mens tambin tiene los siguientes botones:


Botn Descripcin
Next Mueve la seleccin a la lnea siguiente en el arbol del menu.
Insert Inserta una lnea en el cuadro de lista bajo la lnea actualmente seleccionada.
Delete Elimina la lnea actualmente seleccionada en el arbol.
Ok Cierra el Editor de mens y aplica todos los cambios al ltimo formulario
que seleccion. El men est disponible en tiempo de diseo, pero
seleccionar un men en tiempo de diseo abre la ventana Cdigo para el
evento Click de ese men, en lugar de ejecutar el cdigo de evento.
Cancel Cierra el Editor de mens y cancela todos los cambios.

Programa Ejemplo cvb10 Men


En un nuevo formulario disee el siguiente rbol de mens:

Figura 20.0 Men del Programa Ejemplo cvb10.0

Si observa la figura 20.0 podr observar el rbol de men a disear. Ntese que el tercer
sub-men del men Primero es solo una lnea corta , esto crea una lnea divisora en el
men de &Primero. Tambin debe notarse que en el sub-men Primero C se asigno una
tecla rpida . Con lo cual esta opcin se alcanza directamente con la combinacin Ctrl-C.
Fjese en la forma en la que se asigna el nombre al men ejemplo de la figura 20.0. Las tres
primeras letras son mnu (de men), si el men tiene niveles superiores se colocan en forma
Visual Basic 5.0. Curso Bsico 65

acumulativa las tres primeras letras de los niveles superiores, en nuestro caso solo hay un
nivel superior, este es, el men principal Primero por lo cual el nombre ser mnuPriC.
Esta nomenclatura es recomendada, pues usted puede dar cualquier nombre a sus mens.
Los cdigos se signaran el del men. El evento click es el nico evento al que responden
los objetos mens.
Coloque en cada uno de los eventos click de las opciones del rbol de mens, un cdigo
como este:

Private Sub mnuSeg1_Click()


MsgBox ("Ud. pulso el menu Segundo 1")
End Sub
Este es el cdigo asignado al evento clic del submenu Segundo1 del men Segundo

En el men Salir, como era de esperar, colocaremos el cdigo para salir:


Private Sub mnuSalir_Click()
End
End Sub

Divirtase un poco corriendo su nuevo programa!

Proyectos con mltiples Ventanas:


Hasta ahora hemos utilizado solo un formulario para nuestras aplicaciones, a continuacin
veremos como es posible tener mas de un formulario es nuestro programa.

Adems del formulario inicial, el cual entrega Visual Basic al arrancar un nuevo programa,
para adicionar un formulario a nuestro proyecto es suficiente con utilizar el comando Add
Formulario del men Project. O utilizando el botn respectivo de la barra de herramienta
el cual es el segundo del extremo izquierdo. Por cierto al adicionar un nuevo formulario
este debe aparecer en la ventana de proyecto, as mismo al salvar el programa debe darse
nombre al archivo frm que va a guardar este nuevo formulario, tanto sus imgenes como
sus cdigos, en general todo formulario se almacena en un archivo particular.

Debe recordarse que el formulario principal es la ventana que aparece de primera cuando
arranca un programa, esto es, es el formulario inicial. Es posible cambiar esta condicin si
utilizamos el comando Project Properties del men Project la cual invoca la siguiente
ventana de dialogo:
Visual Basic 5.0. Curso Bsico 66

Figura 21.0 Cuadro de Dialogo del Men Project | Proyect Properties

En la figura 21.0, podemos ver en la parte superior derecha una lista que contiene todas los
formularios que forman parte del proyecto y en la cual podemos seleccionar cual ser el
formulario inicial o formulario por donde arrancara el programa. Por defecto este puesto lo
ocupa el primer formulario creado en el proyecto.

Cuando un proyecto con mltiples formularios arranca, todos los formularios son invisibles
excepto el formulario de arranque, para que los otros puedan aparecer en pantalla es
necesario cargarlos desde el programa con el mtodo Show.

Show.
Presenta y carga un objeto Form. (Formulario)
Sintaxis
objeto.Show estilo

estilo: Opcional. Entero que determina si el formulario es modal o no modal. Si estilo es 0, el


formulario es no modal; si estilo es 1, el formulario es modal.

Cuando Show presenta un formulario no modal, el cdigo siguiente sigue su ejecucin. Cuando
Show presenta un formulario modal, el cdigo siguiente no se ejecuta hasta que el formulario se
oculta o se descarga.
Cuando Show presenta un formulario modal, no hay entradas (de teclado o del mouse) excepto
sobre los objetos del formulario modal. El programa debe ocultar o descargar los formularios
modales (normalmente en respuesta a alguna accin del usuario) antes de que pueda producirse
entrada a otro formulario.

Veamos un programa ejemplo que maneja tres formularios:


Visual Basic 5.0. Curso Bsico 67

Programa Ejemplo cvb11 Mltiples Formularios


Cargue un nuevo proyecto, coloque en el formulario una etiqueta (label1) y una caja de
texto (text1), incluya dos formularios adicionales a los cuales les vamos a colocar una
etiqueta a cada uno como se muestra en la figura:

Coloque en la etiquetas de los tres formularios la propiedad Autosize en True.


Disee adems el men que se ve el formulario principal de la figura anterior siguiendo el
siguiente esquema:

El cdigo del programa se encuentra en los eventos clic de las opciones del men:

Private Sub mnuPriMaximizar_Click()


' Se maximiza la ventana
Form1.WindowState = 2
End Sub
Visual Basic 5.0. Curso Bsico 68

Private Sub mnuPriMinimizar_Click()


' Se minimiza la ventana
Form1.WindowState = 1
End Sub

Private Sub mnuPriSalir_Click()


End
End Sub

Private Sub mnuOtrSegunda_Click()


' se pasa el mensaje y se llama form2 en estilo No modal
Form2.Label1.Caption = Text1.Text
Form2.Show
End Sub

Private Sub mnuOtrTercera_Click()


' se pasa el mensaje y se lla a form3 en estilo modal
Form3.Label1.Caption = Text1.Text
Form3.Show 1
End Sub

En el programa podemos observar que para referirse a un control que se encuentra en otro
formulario es necesario indicar tambin el nombre del formulario:
Form3.Label1.Caption = Text1.Text

El formulario form2 se abre en estilo no modal, mientras que el formulario form3 se abre
con show 1, es decir en forma modal. Corra el programa y pruebe la diferencia.
Visual Basic 5.0. Curso Bsico 69

Arreglos

Como ya es sabido, un arreglo permite referirse a una serie de elementos del mismo tipo
por un mismo nombre y referenciar un nico elemento de la serie utilizando un ndice.

Visual Basic, igual que todos lo lenguajes de programacin permite definir arreglos de
variables de una o ms dimensiones y de cualquier tipo de dato.

Para declarar un arreglo dinmico utilizaremos la sentencia Redim


Redim
Se usa en el nivel de procedimiento para declarar variables de matriz dinmica y para asignar o
reasignar espacio de almacenamiento.
Sintaxis
ReDim nombreVar(subndices) [As tipo]

Parte Descripcin
nombreVar Nombre de la variable; sigue las convenciones de nomenclatura estndar de variable.
subndices Dimensiones de una variable de matriz; puede declarar un mximo de 60
dimensiones mltiples.
tipo Cualquiera de los tipos validos para Visual Basic.

Use una clusula As tipo para cada variable que defina. En los datos de tipo Variant que contienen
una matriz, tipo describe el tipo de cada elemento de la matriz, pero no cambia el tipo Variant a otro
tipo diferente.

Puede usar la instruccin ReDim varias veces para cambiar el nmero de elementos y las dimensiones
de una matriz. Pero no puede declarar una matriz de un tipo de datos y usar luego ReDim para
cambiar la matriz a otro tipo de datos, a menos que la matriz est contenida en una variable Variant.
Si la matriz est en una variable Variant, puede modificar el tipo de los elementos usando una clusula
As tipo.
Precaucin Si reduce el tamao de una matriz, se pierden los datos de los elementos eliminados.

Ejemplo en el uso de Redim:


Redim Miarreglo(100) as Single

El ndice puede ser una constante o una variable de valor ya definido para el momento de la
declaracin. Este ndice en el momento de la declaracin expresa la cantidad de elementos
(espacio) que se crearan para el arreglo. Una declaracin Redim puede efectuarse en
cualquier sitio del cdigo, antes de invocar a cualquier elemento del arreglo.
Para declarar arreglos unidimensionales se utiliza solo un ndice en la declaracin, para
arreglos bidimensionales se utilizaran dos ndices, por ejemplo:
Redim Miarreglo( n , m ) as Single

Para el manejo de arreglos a nivel de interfaz los controles recomendados son


El control ListBox (Caja de lista)
El control Grid (Malla)
Visual Basic 5.0. Curso Bsico 70

El control ListBox
Un control ListBox muestra una lista de elementos en la que el usuario puede seleccionar
uno o ms. Si el nmero de elementos supera el nmero que puede mostrarse, se agregar
automticamente una barra de desplazamiento al control ListBox.

Las propiedades mas importantes del Control ListBox son:

ListCount
Devuelve el nmero de elementos de la porcin de lista de un control.
Sintaxis
objeto.ListCount

ListIndex
Devuelve o establece el ndice del elemento seleccionado actualmente en el control. No
disponible en tiempo de diseo.
Sintaxis
objeto.ListIndex [= ndice]

Parte Descripcin
ndice Expresin numrica que especifica el ndice del elemento actual

La expresin List(List1.ListIndex) devuelve la cadena correspondiente al elemento


seleccionado actualmente.
El primer elemento de la lista corresponde a ListIndex = 0, y ListCount es siembre una
unidad mayor que el valor mximo de ListIndex. Si no hay seleccionado ningn elemento,
el valor de la propiedad ListIndex es -1.

List
Devuelve o establece los elementos contenidos en la porcin de lista de un control. La lista
es una matriz de cadenas cuyos elementos se corresponden con los de la lista. Disponible en
tiempo de diseo para los controles ListBox
Sintaxis
objeto.List(ndice) [= cadena]

ndice Nmero de un elemento especfico de la lista.


cadena Expresin de cadena que especifica el elemento de la lista.

Puede utilizar esta propiedad para tener acceso a los elementos de la lista. El ndice del
primer elemento es 0, y el del ltimo es ListCount. Inicialmente, los controles ListBox
contienen una lista vaca. La propiedad List funciona conjuntamente con las propiedades
ListCount y ListIndex. Cuando el ndice se encuentra fuera del rango de los elementos del
cuadro de lista, se obtiene una cadena de longitud cero. Por ejemplo, List(-1) devuelve una
cadena de longitud cero cuando se utiliza para un control ListBox.
Visual Basic 5.0. Curso Bsico 71

Sorted
Devuelve un valor que indica si los elementos de un control se colocan automticamente en
orden alfabtico.
Sintaxis
objeto.Sorted

Los valores de retorno de la propiedad Sorted son:

True Los elementos de la lista se ordenan alfabticamente (sin distinguir entre


maysculas y minsculas).
False (Predeterminado) Los elementos de la lista no se ordenan alfabticamente.

Cuando esta propiedad tiene el valor True, Visual Basic se encarga de casi todo el
procesamiento de cadenas necesario para mantener el orden alfabtico, incluyendo el
cambio de los nmeros de ndice cuando se agregan o eliminan elementos.

Para agregar y retirar elementos del ListBox se usan los mtodos AddItem y RemoveItem.

AddItem
Agrega un elemento a un control ListBox.
Sintaxis
objeto.AddItem elemento, ndice

elemento: Expresin de cadena que especifica el elemento que se va a agregar.

Si se especifica un valor vlido de ndice, elemento se sita en dicha posicin dentro del
objeto. Si se omite ndice, elemento se agrega al objeto en la posicin que le corresponda
dentro del orden apropiado (si la propiedad Sorted es True) o al final de la lista (si Sorted es
False).

RemoveItem.
Elimina un elemento de un control ListBox .
Sintaxis
objeto.RemoveItem ndice

ndice: Entero que especifica la posicin dentro del objeto del elemento que se elimina.

Clear
Borra el contenido de los controles ListBox
Sintaxis
objeto.Clear
Visual Basic 5.0. Curso Bsico 72

Para comprender mejor el uso de las listas y de los arreglos unidimensionales veremos un
ejemplo que ordena una lista de datos numricos:

Programa Ejemplo cvb12 Ordenamiento Numrico


Disee el siguiente formulario:

Para incluir la lista utilice el respectivo botn de la caja de herramienta:

Asegrese de dejar en blanco la propiedad text de la caja de texto. El cdigo a incluir en


nuestro formulario es el siguiente:

Private Sub Text1_KeyPress(KeyAscii As Integer)


' Utiliza Additem para anexar elemento en la lista
If KeyAscii = 13 Then
List1.AddItem Text1.Text
Text1.Text = ""
End If
End Sub

Private Sub Command2_Click()


End
End Sub
Visual Basic 5.0. Curso Bsico 73

Private Sub Command1_Click()

' Declaracin de las variables


Dim i As Integer
Dim j As Integer
Dim auxiliar As Single
Dim n As Integer

n = List1.ListCount ' Cantidad de datos en la lista

ReDim valores(n) As Single

' entrada de los datos desde la lista


For i = 1 To n
valores(i) = Csng(List1.List(i - 1))
Next i

'Ordenamiento descendente
For i = 1 To n - 1
For j = i + 1 To n
If valores(i) > valores(j) Then
auxiliar = valores(i)
valores(i) = valores(j)
valores(j) = auxiliar
End If
Next j
Next i

' Salida a la lista


For i = 1 To n
List1.List(i - 1) = Str(valores(i))
Next i

End Sub

Private Sub List1_KeyDown(KeyCode As Integer, Shift As Integer)


'utiliza removeitem para eliminar elementos de la lista
' se eliminan los elementos cuando se pulsa la tecla delete
' que tiene Keycode=46 y adems hay elemento seleccionado
If KeyCode = 46 And List1.ListIndex <> -1 Then
List1.RemoveItem List1.ListIndex
End If
End Sub
Visual Basic 5.0. Curso Bsico 74

El control Grid (MSFlexGrid)


Un control Grid muestra una serie de filas y columnas. La interseccin de una fila y una
columna es una celda. Puede leer y establecer el contenido de cada celda en cdigo.
Puede colocar texto o una imagen en una celda de Grid. Las propiedades Row y Col
especifican la celda actual de una Grid. Puede especificar la celda actual en cdigo, o el
usuario puede cambiarla en tiempo de ejecucin con el mouse o las teclas de direccin. La
propiedad Text hace referencia al contenido de la celda actual.
Si el texto de una celda es demasiado largo para mostrarse en la celda, se ajustar a la lnea
siguiente de la misma celda. Para mostrar el texto con ajuste de lnea, deber aumentar el
ancho de la columna de la celda (propiedad ColWidth) o la altura de la fila (propiedad
RowHeight).

Use las propiedades Cols y Rows para determinar el nmero de columnas y filas de un
control Grid. Este control no puede tener ms de 2000 filas o 400 columnas.
El control MSFlexGrid esta disponible en la caja de herramientas bajo el siguiente smbolo:

Si no aparece el control Grid en su caja de herramientas deber agregarlo, para esto es


necesario utilizar el comando Components (Ctrl T), del men Project el cual mostrara la
siguiente ventana de dialogo:

Figura 22.0 Ventana de Dialogo del Men Components | Project


Visual Basic 5.0. Curso Bsico 75

En esta ventana seleccionaremos el control Microsoft FlexGrid Control 5.0 con lo cual se
anexara el botn del control a la caja de herramientas.

Las propiedades ms importantes del control MSFLexGrid son:

Cols, Rows
Devuelven o establecen el nmero total de columnas o filas de un control Grid.

Sintaxis
objeto.Cols [= nmero]
objeto.Rows [= nmero]

nmero Nmero de columnas o filas en un control Grid. El nmero mnimo de


columnas es 1, el mximo 499. El nmero mnimo de filas es 1, el mximo
2000.

Puede utilizar estas propiedades para extender dinmicamente un control Grid en tiempo de
ejecucin. Las propiedades Cols y Rows son distintas de las propiedades Col y Row.

Col, Row
Devuelven o establecen la celda activa en un control Grid. No disponible en tiempo de
diseo.

Sintaxis
objeto.Col [= nmero]
objeto.Row [= nmero]

nmero Nmero de la columna o fila que contiene la celda activa.

Puede utilizar estas propiedades para especificar una celda de un control Grid, o para
averiguar la fila o columna que contiene la celda activa en una regin seleccionada. Las
filas y columnas se numeran a partir de cero, comenzando por la parte superior para las
filas y por la izquierda para las columnas. Al establecer estas propiedades en tiempo de
ejecucin no varan las celdas seleccionadas.

FixedCols y FixedRows
Devuelven o establecen el nmero total de columnas o filas fijas de un control Grid. De
forma predeterminada, un control Grid tiene una columna fija y una fila fija.
Sintaxis
objeto.FixedCols [= nmero]
objeto.FixedRows [= nmero]

nmero Una expresin numrica que especifica el nmero de filas o columnas fijas.
Visual Basic 5.0. Curso Bsico 76

Una columna fija es una columna estacionaria en la parte izquierda de un control Grid. Una
fila fija es una fila estacionaria en la parte superior del control Grid. Puede haber cero o
ms columnas fijas y cero o ms filas fijas. Las columnas y filas fijas se presentan en gris y
no se mueven cuando otras columnas o filas del control Grid se desplazan. No se puede
cambiar el color de una columna o fila fijas. Un control Grid debe tener al menos una
columna no fija y una fila no fija. El nmero mximo de columnas o filas fijas de un
control Grid es uno menos que el nmero total de filas o columnas.

Text
Devuelve o establece el texto contenido en una celda o en un rango de celdas. No
disponible en tiempo de diseo.
Sintaxis
objeto.Text [= cadena]

Para comprender mejor el uso del control Grid y de los arreglos bidimensionales veremos
un ejemplo que opera matemticamente dos matrices:

Programa Ejemplo cvb13 Suma de Matrices

Figura 23.0 Programa Ejemplo cvb13


Para esto cargue desde el disco de su material el programa cvb13 y analcelo junto
con su profesor!:
En este diseo la propiedad Visible de los tres grid se coloco en false.
El cdigo es el siguiente:
Visual Basic 5.0. Curso Bsico 77

Option Explicit

Private Sub actualizar()


Dim i As Integer
'**************************************************
' Esta rutina actualiza el tamao de las matrices (grid) que van a aparecer en pantalla luego
' que el usuario de el numero de filas y columnas a travs de las cajas de texto
' no hace visible a la tercera matriz que es la matriz de resultados
'**************************************************

'**************************************************
' Primera matriz
'**************************************************
' Damos el tamao adecuado a la primera matriz

MSFlexGrid1.Rows = Val(Text1.Text) + 1 'una fila y columna adicional


MSFlexGrid1.Cols = Val(Text2.Text) + 1 ' para numerar filas y columnas

'Llenamos la fila cero con numeraciones


MSFlexGrid1.Row = 0
For i = 1 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Col = i
MSFlexGrid1.Text = i
Next i

'Llenamos la columna cero con numeraciones


MSFlexGrid1.Col = 0
For i = 1 To MSFlexGrid1.Rows - 1
MSFlexGrid1.Row = i
MSFlexGrid1.Text = i
Next i

' hacemos visible a la primera matriz


Label3.Visible = True
MSFlexGrid1.Visible = True

'**************************************************
' Segunda matriz
'**************************************************
' Damos el tamao adecuado a la segunda matriz

MSFlexGrid2.Rows = Val(Text1.Text) + 1 'una fila y columna adicional


MSFlexGrid2.Cols = Val(Text2.Text) + 1 ' para numerar filas y columnas
Visual Basic 5.0. Curso Bsico 78

'Llenamos la fila cero con numeraciones


MSFlexGrid2.Row = 0
For i = 1 To MSFlexGrid2.Cols - 1
MSFlexGrid2.Col = i
MSFlexGrid2.Text = i
Next i

'Llenamos la columna cero con numeraciones


MSFlexGrid2.Col = 0
For i = 1 To MSFlexGrid2.Rows - 1
MSFlexGrid2.Row = i
MSFlexGrid2.Text = i
Next i

' hacemos visible a la segunda matriz


Label4.Visible = True
MSFlexGrid2.Visible = True

'**************************************************
' Matriz de resultados
'**************************************************

' Los mismos pasos que en los caso anteriores solo que no
' hacemos visible esta matriz sino hasta despus de realizados
' los clculos y escrito en ella los resultados

MSFlexGrid3.Rows = Val(Text1.Text) + 1
MSFlexGrid3.Cols = Val(Text2.Text) + 1

MSFlexGrid3.Row = 0
For i = 1 To MSFlexGrid3.Cols - 1
MSFlexGrid3.Col = i
MSFlexGrid3.Text = i
Next i

MSFlexGrid3.Col = 0
For i = 1 To MSFlexGrid3.Rows - 1
MSFlexGrid3.Row = i
MSFlexGrid3.Text = i
Next i

End Sub
Visual Basic 5.0. Curso Bsico 79

Private Sub borrar()

'*************************************************************
' Usamos este procedimiento(Subrutina) para reiniciar la pantalla
' 1. Borramos los contenidos de las cajas de texto
' 2 Borramos los contenidos de las matrices (Grids)
' 3 Hacemos invisibles los controles grid y sus etiquetas
'*************************************************************
Dim i As Integer
Dim j As Integer

Text1.Text = ""
Text2.Text = ""

For i = 0 To MSFlexGrid1.Rows - 1
For j = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Row = i
MSFlexGrid1.Col = j
MSFlexGrid1.Text = ""
Next j
Next i
MSFlexGrid1.Visible = False
Label3.Visible = False

For i = 0 To MSFlexGrid2.Rows - 1
For j = 0 To MSFlexGrid2.Cols - 1
MSFlexGrid2.Row = i
MSFlexGrid2.Col = j
MSFlexGrid2.Text = ""
Next j
Next i
MSFlexGrid2.Visible = False
Label4.Visible = False

For i = 0 To MSFlexGrid3.Rows - 1
For j = 0 To MSFlexGrid3.Cols - 1
MSFlexGrid3.Row = i
MSFlexGrid3.Col = j
MSFlexGrid3.Text = ""
Next j
Next i
MSFlexGrid3.Visible = False
Label5.Visible = False

End Sub
Visual Basic 5.0. Curso Bsico 80

Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)


' Cdigo utilizado para eliminar un elemento escrito dentro del control MSFlexGrid1
' Se borra el elemento seleccionado cuando se apriete la
' tecla delete o Suprimir Keycode=46

If KeyCode = 46 Then
MSFlexGrid1.Text = ""
End If

End Sub

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)


' se escribe en la matriz
MSFlexGrid1.Text = MSFlexGrid1.Text + Chr$(KeyAscii)

End Sub

Private Sub MSFlexGrid2_KeyDown(KeyCode As Integer, Shift As Integer)


' Cdigo utilizado para eliminar un elemento escrito dentro del control MSFlexGrid2
' Se borra el elemento seleccionado cuando se apriete la
' tecla delete o Suprimir Keycode=46

If KeyCode = 46 Then
MSFlexGrid2.Text = ""
End If

End Sub

Private Sub MSFlexGrid2_KeyPress(KeyAscii As Integer)

' se escribe en la matriz


MSFlexGrid2.Text = MSFlexGrid2.Text + Chr$(KeyAscii)

End Sub

Private Sub mnupriReiniciar_Click()

' se llama al procedimiento borrar


Call borrar

End Sub
Visual Basic 5.0. Curso Bsico 81

Private Sub mnupriSalir_Click()


End
End Sub

Private Sub mnuSumar_Click()


' *************************************************************
' Rutina diseada para sumar las dos matrices y mostrar en
' MSFlexGrid3 los resultados de la suma
'*************************************************************

Dim filas As Integer 'para el numero de filas


Dim columnas As Integer 'para el numero de columnas
Dim i As Integer, j As Integer ' para los ciclos for

filas = Val(Text1.Text) ' se toma el numero de filas desde text1


columnas = Val(Text2.Text) ' se toma el numero de columnas desde text2

' ************* Se crean las tres matrices ***********


ReDim m1(filas, columnas) As Single
ReDim m2(filas, columnas) As Single
ReDim m3(filas, columnas) As Single

' se capturan los datos de la primera matriz desde MSFlexGrid1


For i = 1 To filas
For j = 1 To columnas
MSFlexGrid1.Row = i
MSFlexGrid1.Col = j
m1(i, j) = Val(MSFlexGrid1.Text)
Next j
Next i

' se capturan los datos de la segunda matriz desde MSFlexGrid2


For i = 1 To filas
For j = 1 To columnas
MSFlexGrid2.Row = i
MSFlexGrid2.Col = j
m2(i, j) = Val(MSFlexGrid2.Text)
Next j
Next i

' se suman las matrices cargadas en los arreglos m1 y m2


For i = 1 To filas
For j = 1 To columnas
m3(i, j) = m1(i, j) + m2(i, j)
Next j
Next i
Visual Basic 5.0. Curso Bsico 82

' se coloca el resultado en MSFlexGrid3 y se hace visible para mostrarlos al usuario en la


pantalla
For i = 1 To filas
For j = 1 To columnas
MSFlexGrid3.Row = i
MSFlexGrid3.Col = j
MSFlexGrid3.Text = CStr(m3(i, j))
Next j
Next i

Label5.Visible = True
MSFlexGrid3.Visible = True

End Sub

Private Sub Text1_Change()

' Para crear y dimensionar los controles grid


' que visualizaran las matrices
Call actualizar

End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)

' Solo se aceptan numeras enteros y el backspace (ascii 8)


If IsNumeric(Chr$(KeyAscii)) = False And KeyAscii <> 8 Then KeyAscii = 0

End Sub

Private Sub Text2_Change()

' Para crear y dimensionar los controles grid


' que visualizaran las matrices
Call actualizar

End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)


' Solo se aceptan nmeros enteros y el backspace (ascii 8)
If IsNumeric(Chr$(KeyAscii)) = False And KeyAscii <> 8 Then KeyAscii = 0

End Sub
Visual Basic 5.0. Curso Bsico 83

Como se pudo observar en el ejemplo anterior el control grid no procesa automticamente


la entrada de texto en las celdas (como lo hara una caja de texto). Motivo por el cual en el
ejemplo anterior incluimos cdigo para tal fin. Una rutina para escribir en los eventos
KeyPress de las matrices y otra rutina en el evento KeyDown para borrar las celdas.

Sin embargo existen tcnicas adicionales para mejorar las entradas de texto en los controles
grid. Entre las cuales esta el de usar una caja de texto oculta para escribir en el grid:
Abra un nuevo formulario en el que
incluir un control grid y una caja de texto
como se muestra en la figura
Oculte la caja de texto detrs del control
grid a fin de que esta no se vea. Puede
valerse del comando Send to Back del
submenu Order que esta en el men
Format a fin de que la caja de texto se
dibuje debajo del control grid
Cambie el nombre del grid de
MSFlexGrdid1 por matriz

Coloque el siguiente cdigo en el programa y analcelo junto con su instructor:

Option Explicit

Private Sub Form_Load()


Dim i As Integer

matriz.Cols = 9
matriz.Rows = 9

matriz.Row = 0
For i = 1 To 8
matriz.Col = i
matriz.Text = i
Next i

matriz.Col = 0
For i = 1 To 8
matriz.Row = i
matriz.Text = i
Next i

matriz.Col = 1
matriz.Row = 1
End Sub
Visual Basic 5.0. Curso Bsico 84

Private Sub matriz_EnterCell()


Text1.Text = matriz.Text
End Sub

Private Sub matriz_KeyDown(KeyCode As Integer, Shift As Integer)


If KeyCode = 46 Then
matriz.Text = ""
Text1.Text = ""
End If
End Sub

Private Sub matriz_KeyPress(KeyAscii As Integer)


Text1.SetFocus
SendKeys Chr$(KeyAscii)
End Sub

Private Sub Text1_Change()


matriz.Text = Text1.Text
matriz.SetFocus
End Sub

Private Sub Text1_GotFocus()


Text1.SelStart = Len(Text1.Text)
End Sub

Ahora podr escribir en la malla como si fuera una caja de texto (bueno, recuerde que
realmente esta escribiendo en la caja de texto oculta).
Visual Basic 5.0. Curso Bsico 85

Creando un Ejecutable

Finalmente crear un ejecutable con su proyecto es muy sencillo, solo tiene que seguir los
siguientes pasos:
1. Una vez que ha terminado su programa invoque el comando Make Project (proyecto),
del men File, donde proyecto es el nombre que se ha dado al proyecto que se esta
elaborado. Se presentara ante usted la siguiente ventana de dialogo:

Figura 24.0 Ventana Make Project

2. En esta ventana solo tiene que ubicar el directorio y el nombre que ha de tener su
aplicacin.
3. Pulse el botn aceptar y listo; salga de Visual Basic y corra su aplicacin directamente
desde su disco. Visual Basic recomienda como nombre predeterminado de su ejecutable
el mismo nombre que tiene el archivo VBP de su aplicacin.

Ahora bien debe recordar que al distribuir sus aplicaciones, las mismas para poder correr
fuera del entorno de Visual Basic, necesitan estar acompaadas del archivo Msvbvm.dll, o
por lo menos debe estar este archivo en el directorio System de Windows, donde tambin
usted puede encontrarlo a fin de anexarlo cuando distribuya su programa. Adems debe
incluir tambin los maneadores de los controles adicionales que incluya en su aplicacin,
como es el caso del archivo MSFLXGRD.OCX para los programas que utilicen un control
Grid. (Ver parte inferior de la figura 22.0).
Visual Basic 5.0. Curso Bsico 86

El Depurador (Debug)

Cuando se realiza una aplicacin se pueden presentar tres clases de errores:

Errores de sintaxis: Son el resultado de escribir incorrectamente una sentencia, este es el


error ms simple y comn, el cual es detectado automticamente por Visual Basic.

Errores durante la ejecucin: Ocurre cuando al ejecutar una aplicacin una sentencia
intenta una operacin que es imposible realizar. Un ejemplo tpico es una divisin por cero.
Una buena programacin debe anticiparse a este tipo de errores manipulndolos
adecuadamente.

Errores Lgicos: Estando las instrucciones correctamente escritas y no producindose


errores en tiempo de ejecucin los resultados que se obtiene no son los esperados. Estos
errores son el productos de fallas en el planteamiento lgico del programa y algunos de
ellos resultan difciles de detectar. Para ayudar a la deteccin de este tipo de errores Visual
Basic pone en manos del programador un conjunto de herramientas que forman parte del
depurador.
Los comandos del depurador se encuentran agrupados en el men Debug:

Figura 25.0 Men Debug

O en la barra de herramientas Debug, la cual puede anexar desde el comando Toolbars del
men View

Figura 26.0 Toolbars Debug


Visual Basic 5.0. Curso Bsico 87

Los comandos del debuger se ejecutan en modo de interrupcin, este es un modo especial
de corrida en donde el programa parece estar temporalmente suspendido, esto es el
programa no corre a la velocidad normal sino que es el programador el que determina en
forma dinmica la cantidad de instrucciones que han de ejecutarse, cuando se detendr el
programa, reiciar el modo normal de corrida o parar. En este modo puede mirar el
contenido de las variable durante la ejecucin del programa para as detectar que el mismo
este funcionando como se esperaba y poder detectar los errores lgicos cometidos

A continuacin analizaremos algunos de estos comandos:

Step Into: Correr paso a paso por instrucciones. Puede utilizar Paso a paso por
instrucciones para ejecutar una instruccin cada vez. Si la instruccin es una llamada a un
procedimiento, la siguiente instruccin que se muestra es la primera instruccin del
procedimiento llamado.
Mtodo abreviado de teclado: F8.

Step Over: Paso a paso por procedimientos es similar a Paso a paso por instrucciones. La
diferencia de uso ocurre cuando la instruccin actual contiene una llamada a un
procedimiento. Paso a paso por procedimientos lo ejecuta como una unidad, y despus salta
a la siguiente instruccin del procedimiento actual. Por lo tanto, la siguiente instruccin que
se muestra es la siguiente del mdulo actual sin que importe si la instruccin actual es una
llamada a procedimiento.
Mtodo abreviado de teclado: SHIFT+F8.

Run to Cursor: Cuando su aplicacin est en modo de ruptura, puede utilizar Run to
Cursor para seleccionar una instruccin posterior de su cdigo donde desee parar la
ejecucin. La ejecucin se realizara de forma normal desde donde invoque el comando
hasta alcanzar la lnea de cdigo el la que se coloque el cursor, luego el programa se
detendr permitiendo continuar su corrida paso a paso Podra utilizar este comando, por
ejemplo, para permitir la ejecucin de ciclos grandes. No disponible en tiempo de
ejecucin.
Mtodo abreviado de teclado: CTRL+F8.

Add watch : Permite agregar variables o expresiones a la ventana de Watchs. En la cual


podemos visualizar en tiempo de interrupcin el resultado de estas expresiones durante una
corrida.

Quick Watch: Muestra el cuadro de dilogo Inspeccin instantnea con el valor actual de
la expresin seleccionada. Disponible slo en modo de ruptura. Mientras depura su
programa, utilice este comando para comprobar el valor actual de una variable, propiedad u
otra expresin para la cual no haya definido una expresin de inspeccin. Seleccione la
expresin bien de la ventana Cdigo o del panel de cdigo de la ventana Depuracin, y
despus elija el comando Inspeccin instantnea.
Mtodo abreviado de teclado: SHIFT+F9.
Visual Basic 5.0. Curso Bsico 88

Toagle BrakPoint: Establece o quita un punto de ruptura en la lnea actual. No puede


establecer un punto de ruptura sobre lnea que contengan cdigo no ejecutable, como
comentarios, instrucciones de declaracin o lneas en blanco. Cuando se establece un punto
de ruptura (en la lnea donde se coloca el cursor) al arrancar el programa este corre
normalmente hasta alcanzar el punto de ruptura luego del cual el programa para a tiempo de
interrupcin, congelando la corrida en el punto seleccionado. En un mismo programa
pueden existir mas de un punto de ruptura.
Una lnea de cdigo en la cual se ha establecido un punto de ruptura aparece con los colores
que especific en la ficha Editor del cuadro de dilogo Opciones.
Mtodo abreviado de teclado: F9.

Clear All BrakPoints: Elimina todos los puntos de ruptura


Mtodo abreviado de teclado: CTRL-SHIFT-F9.

As mismo en modo de interrupcin contamos con la ventana Immediate la cual permite


consultar el contenido de cualquier variable o expresin. Para estas consultas es necesario
el uso del comando Print antes de la expresin o variable consultada tal como lo muestra la
figura 27. Para ver el contenido basta con pulsar la tecla Enter luego de escribir la
expresin, la respuesta se escribir en la ventana Immediate en la lnea posterior a la
consulta (figura 27).

Figura 27.0 Ventana Immediate

Ahora vuelva a cargar el programa cvb13.0 y con la ayuda de su profesor realice una
revisin completa a la rutina Private Sub mnuSumar_Click() en modo de interrupcin y
utilizando los comandos de Debug
Visual Basic 5.0. Curso Bsico 89

Archivos de Datos
En muchos casos es necesario guardar en memoria secundaria (unidades de discos) los
datos que manejamos en nuestros programas.
Los dos tipos ms importantes de archivos de datos que maneja Visual Basic son:
Archivo de acceso Secuencial
Archivo de acceso Aleatorio.

Archivo de acceso Secuencial


Los archivos secuenciales suelen usarse cuando queremos manejar un conjunto de datos en
los cuales se procesa toda la informacin que contienen de principio a fin sin realizar saltos.
Es decir la informacin se utiliza en bloque tanto para almacenarlos como para leerlos.
Las instrucciones ms importantes utilizadas para manejar archivos secuenciales son las
siguientes:

Open
Activa operaciones de entrada/salida (E/S) con un archivo.

Sintaxis
Open nombreruta For modo As [#]nmeroarchivo

Parte Descripcin
nombreruta Expresin de cadena que especifica un nombre de archivonombrearchivpuede
incluir el directorio o carpeta y la unidad de disco.
modo Palabra clave que especifica el modo de archivo Input:Para leer datos
desde el archivo, Output para escribir en el archivo, Append: Agergar
elementos al archivo..
nmeroarchivo Un nmero de archivo en el intervalo 1 a 511 inclusive.

Antes de poder ejecutar una operacin de E/S en un archivo, ste debe estar abierto. Open
asigna un rea de memoria intermedia para operaciones de E/S con el archivo y determina
el modo de acceso que se debe utilizar con el rea de memoria intermedia. Si el archivo
especificado con nombreruta no existe, se crea al abrir un archivo en los modos Append,
Output o Random. Si el archivo ya ha sido abierto por otro proceso y no se permite el tipo
de acceso especificado, la operacin Open fracasa y se produce un error.
Importante: En el modo Input se puede abrir un archivo utilizando un nmero de archivo
distinto sin necesidad de cerrarlo antes. En los modos Append y Output se debe cerrar el
archivo para poder abrirlo con un nmero de archivo distinto.

Ejemplo:
Open "PRUEBA" For Input As #1

Close
Visual Basic 5.0. Curso Bsico 90

Termina las operaciones de entrada/salida en un archivo abierto con la instruccin Open.

Sintaxis
Close [listadenmerosdearchivo]

El argumento listadenmerosdearchivo puede estar constituido por uno o ms nmeros de


archivo, donde nmerodearchivo es cualquier nmero de archivo vlido y tiene la siguiente
sintaxis:
[[#]nmerodearchivo][, [#]nmerodearchivo] . . .

Si se omite la listadenmerosdearchivo, se cierran todos los archivos activos abiertos con la


instruccin Open.
Cuando se cierran archivos que fueron abiertos para Output o Append, la salida final del
rea de memoria intermedia se graba en el rea de memoria intermedia del sistema
operativo que corresponde a ese archivo. Todo el espacio del rea de memoria intermedia
asociado con el archivo cerrado se libera.
Cuando se ejecuta la instruccin Close, la asociacin de un archivo con su nmero de
archivo se termina.

Para poder leer y escribir datos, en el archivo secuencial, contamos con las siguientes
instrucciones:

Input #
Lee datos de un archivo secuencial abierto y asigna esos datos a variables.

Sintaxis
Input #nmarchivo, listavariables

Parte Descripcin
nmarchivo Cualquier nmero de archivo vlido.
listavariables Lista de variables delimitadas por puntos y coma a las que se asignan
valores que se leen de un archivo.

Cuando se leen datos numricos o cadenas estndar, se asignan tal y como son a variables.
Los elementos de los datos de un archivo deben aparecer en el mismo orden que tienen las
variables en listavariables y deben coincidir con variables del mismo tipo de datos. Si una
variable es numrica y los datos no lo son, se asigna cero a esa variable.

Si se llega al fin del archivo cuando se est introduciendo un elemento de los datos, se da
por terminada la entrada y se emite un error.

Nota: Para introducir correctamente en variables los datos ledos de un archivo, se debe
utilizar siempre la instruccin Write #, en lugar de Print #, para grabar la informacin en los
Visual Basic 5.0. Curso Bsico 91

archivos. La utilizacin de Write # garantiza que cada campo de datos separado se delimite
correctamente.

Ejemplo
Open "PRUEBA" For Input As #1 ' Abre el archivo para recibir los datos.

Input #1, MiCadena ' Ponen el dato en la variable.


Label1.Caption= MiCadena ' Muestra el datos en una etiqueta

Close #1 ' Cierra el archivo.

Write #
Escribe datos no procesados en un archivo secuencial.

Sintaxis
Write #numarchivo, [listasalida]

Parte Descripcin
numarchivo Cualquier nmero de archivo vlido.
listasalida Una o varias expresiones de cadena o numricas delimitadas por
comas que se desea escribir en un archivo.

Si se omite listasalida y se incluye un punto y coma despus de numarchivo, se imprime


una lnea en blanco en el archivo. Se pueden separar mltiples expresiones con un espacio,
un punto y coma (;) o una coma.

Ejemplo
Open "PRUEBA" For Output As #1 ' Abre el archivo para operaciones de salida.

Write #1, "Hola a todos ", 234 ' Delimita con comas los datos introducidos.
Write #1, ' Coloca una lnea en blanco.

Close #1

Las rutinas para abrir, escribir, leer y cerrar archivos en disco son muy propensas a errores
en tiempo de ejecucin. Por ejemplo si en la instruccin Open se utiliza un nombre de
archivo invalido, inexistente, o mal ubicado de tal manera que el computador no puede
localizarlo esto es motivo suficiente para que el programa reviente por causa de un Run
Time Error.

A fin de no perder el control de un programa cuando estos errores ocurran, Visual Basic
cuenta con un sistema de captura de errores en tiempo de ejecucin, este sistema no solo
Visual Basic 5.0. Curso Bsico 92

captura los errores en tiempo de ejecucin producidos por la comunicacin con archivos,
sino por cualquier instruccin que a esto conduzca.

On Error
Activa una rutina de tratamiento de errores y especifica la ubicacin de la misma en un
procedimiento.

Sintaxis
On Error GoTo lnea
On Error Resume Next

La sintaxis de la instruccin On Error puede tener cualquiera de las formas siguientes:

Instruccin Descripcin

On Error GoTo lnea Activa la rutina de tratamiento de errores que comienza en


lnea, que es cualquier etiqueta de lnea o nmero de lnea. A
partir de ese momento, si se produce un error en tiempo de
ejecucin, el control pasa a lnea, activando el controlador de
errores. La lnea especificada debe encontrarse en el mismo
procedimiento que la instruccin On Error, o de lo contrario
se producir un error en tiempo de compilacin.
On Error Resume Next Especifica que, en caso de un error en tiempo de ejecucin, el
control pase a la lnea inmediatamente siguiente a aqulla en
la que el error se ha producido; es decir, la ejecucin normal
contina.

Nota Una rutina de tratamiento de errores no es un procedimiento Sub ni Function, sino


una seccin de cdigo marcada con una etiqueta o un nmero de lnea.

Las rutinas de tratamiento de errores se basan en el valor de la propiedad Number del


objeto Err para determinar la causa del error. Una rutina de tratamiento de errores debe
comprobar y guardar los valores de las propiedades de Err que resulten relevantes antes de
que pueda producirse otro error o antes de que se llame a un procedimiento que pueda
causarlo. Los valores de las propiedades del objeto Err reflejan solamente el error ms
reciente. El mensaje de error asociado a Err.Number se encuentra en Err.Description.
On Error Resume Next hace que la ejecucin contine con la instruccin inmediatamente
posterior a la que caus el error en tiempo de ejecucin, o con la inmediatamente posterior
a la ltima llamada desde el procedimiento que contiene la instruccin On Error Resume
Next. De esta forma se permite continuar la ejecucin a pesar de que se haya producido un
error en tiempo de ejecucin. La instruccin On Error Resume Next deja de estar activa
cuando se llama a otro procedimiento, de modo que debe ejecutar On Error Resume Next
en cada rutina que se llame si desea un tratamiento de errores incorporado en la propia
rutina.
Visual Basic 5.0. Curso Bsico 93

Para evitar que el cdigo de tratamiento de errores se ejecute cuando no se ha producido


ningn error, coloque una instruccin Exit Sub, Exit Function, segn resulte adecuado,
inmediatamente antes de la rutina de tratamiento de errores, como en el ejemplo siguiente:

Sub InicializaMatriz(Var1, Var2, Var3, Var4)


On Error GoTo TrataErrores
...
Exit Sub Salida Normal cuando na hay errores.
TrataErrores:
...
Resume Next
End Sub

Aqu, el cdigo de tratamiento de errores viene a continuacin de la instruccin Exit Sub y


precede a End Sub para separarlo del flujo normal del procedimiento. Esta es slo una
solucin de las posibles, pues el cdigo de tratamiento de errores puede situarse en
cualquier punto del procedimiento.

Uno de los mayores problemas en programas interactivos que tratan con archivos es
determinar el nombre y la ubicacin correcta en donde se ha de cargar o escribir datos en un
archivo. Tambin este es uno de los motivos ms comunes de errores en tiempo de
ejecucin. La siguiente instruccin:

Open "C:\Midirectorio\PRUEBA" For Input As #1

Presenta la limitante de que es un nombre y direccin fija, con lo cual este cdigo no es til
en caso de programas que interactuen con el usuario para preguntar a este cual es el nombre
y direccin del archivo de inters.

Podrimos mejorar el cdigo con:


Open Text1.text For Intput As #1 El nombre se toma de una caja de texto

Sin embargo se corren riesgos por causa de la interaccin


Se hace necesario comprobar que la cadena dada por el usuario sea una cadena valida
para nombre y direcciones de archivo, de lo contrario se produce un Run Time Error
Ignoramos que el archivo este en la direccin correcta, inclusivo ignoramos si existe, lo
cual puede tambin conducirnos a un error en tiempo de corrida.
Por ultimo este tipo de interfaz exige al usuario recordar en todo momento el nombre
exacto del archivo, su direccin y el correcto formato DOS para llamarlo, sabemos que
esto no es comn en usuario de Windows.

La salida mas Windows para este problema, es poder contar con una ventana desde
nuestros programas a las unidades de disco externas lo que nos permitira recorrer las
Visual Basic 5.0. Curso Bsico 94

direcciones y asignar correctos nombres a nuestros archivos en estudio. Tal como la hacen
los programas profesionales que trabajan bajo Windows.
La solucin es el uso de control CommonDialog (Dialogos Comunes):

El control CommonDialog ofrece un conjunto de cajas de dilogos comunes para


operaciones de Abrir archivo y Salvar archivos entre otras
El control CommonDialog debe ser agregado a nuestro proyecto desde la ventana de
Components del men Project.
Se seleccionar el componente Microsoft Common Dialog Control 5.0 con lo cual
aparecer el siguiente icono en la caja de herramientas.

El control CommonDialog, es al principio un control no visual, este no se muestra hasta


que es invocado usando uno de sus mtodos para mostrar cuadros de dialogo

Los mtodo de un CommonDialog para mostra cuadros de dialogo son


Mtodo Dialogo Mostrado
ShowOpen Cuadro de Abrir Archivo
ShowSave Cuadro de Salvar Archivo
ShowColor Cuadro de Seleccin de Colores
ShowFont Cuadro de Seleccin de Fuentes (Letras)
ShowPrinter Cuadro de Seleccin de Impresora

Veamos un muy corto pero ilustrativo ejemplo:

Cargue un nuevo formulario que contenga:


Un control Image. con la propiedad Strech en True
Un control CommandButton con la propiedad caption: Mostrar Imagen
Un control CommonDialog

Agregar este cdigo al evento click del botn:


Private Sub Command1_Click()
On Error GoTo marca ' Por si ocurre un error

CommonDialog1.ShowOpen

' El comando LoadPicture Carga una imagen a memoria


Image1.Picture = LoadPicture(CommonDialog1.filename)
Exit Sub

marca:
MsgBox "Archivo no Permitido"

End Sub
Entre las propiedades principales de un CommonDialog encontramos las siguientes:
DefaultExt Establece la extensin por defecto de los archivos mostrados en el cuadro.
Visual Basic 5.0. Curso Bsico 95

FilaName Devuelve nombre y va de acceso del archivo seleccionado


DialogTitle Establece el titulo en la barra de ttulos del cuadro
Establece el filtro que aparecer en la lista de tipos de archivos del cuadro
Ejemplo:
Filter
CommonDialog1.Filter = "Iconos(*.ico)|*.ico| Bitmaps(*.bmp)|*.bmp"
Hace que solo aparezcan archivos de iconos y bitmaps
Devuelve o establece un valor que indica si se genera un error cuando el
CancelError
usuario elige el botn Cancelar. (Err =32755)
Flags Se usa para establecer diferentes opciones

Algunas de las opciones para valor son:


Constante Valor Descripcin
Especifica que el cuadro de dilogo consulte al usuario antes
cdlCreatePrompt &H2000&
de crear un archivo que no existe actualmente.
Especifica que el usuario slo pueda escribir en el cuadro de
texto Nombre de archivo nombres de archivos existentes. Si
cdlFileMustExist &H1000&
este indicador est activado y el usuario introduce un
nombre de archivo no vlido aparecer una advertencia.
cdlHideReadOnly &H4& Oculta la casilla de verificacin Slo lectura.
Hace que el cuadro de dilogo restablezca como directorio
cdlNoChangeDir &H8&
actual el que lo era en el momento de abrirse.
Hace que el cuadro de dilogo Guardar como genere un
cdlOverwritePrompt &H2& cuadro de mensaje si el archivo seleccionado ya existe. El
usuario deber confirmar que desea sobrescribir el archivo.

Por supuesto existen otras opciones que deber revisar en la ayuda de Visual Basic.

Preprese para un ejemplo en donde se trabaja con muchos datos los cuales son
almacenados en archivos secuenciales, preste atencin al uso del control CommonDialog y
al tratamiento de errores.
Visual Basic 5.0. Curso Bsico 96

Programa Ejemplo cvb14 Sistemas de Ecuaciones

Figura 28.0 Programa Ejemplo cvb14 en plena corrida

Cargue el programa cvb14 en su computadora. Aqu presentamos el cdigo, es importante


que lo analice antes de discutirlo con su profesor Confiamos en que esta en capacidad para
entenderlo!

Cdigo del Primer Formulario


Option Explicit
'***************************************************************
' Programa Didctico realizado por Leonardo Milln para ser usado en cursos de
'Computacin. Este programa resuelve sistemas de ecuaciones lineales de
' orden menores a 200 x 200
' **********************************************************

' variable para controlar que el usuario ha guardado los datos


Dim guardar As Integer

Private Sub actualizar()


'*************************************************************
' Procedimiento que se invoca con la finalidad de dimencionar las mallas en funcin al '
tamao de n (numero de ecuaciones) las mallas se dimensionan en un numero de filas n+1
' esto es 1 fila (y columna) fija y el resto para introducir valores
'*************************************************************
Visual Basic 5.0. Curso Bsico 97

Dim i As Integer ' para el ciclo for

Grid1.Rows = n + 1 ' n+1 filas para la malla de tensiones


' esta malla tiene cols=0 en propiedades

Grid2.Rows = n + 1 ' n+1 filas para la malla de impedancias

Grid2.Cols = n + 1 ' n+1 columnas para la malla de impedancias

Grid3.Rows = n + 1 ' en consecuencia n+1 columnas

' las partes fijas de las mallas (aparecen en gris) y no se


' escribe en ellas (el usuario) durante el tiempo de corrida
Grid1.FixedRows = 1
Grid2.FixedRows = 1
Grid3.FixedRows = 1

' se indexan las filas y las columnas de la malla2


' a fin de producir ayuda visual al control de elementos
For i = 1 To n
Grid2.Col = 0 'columna fija en cero
Grid2.Row = i
Grid2.Text = Str(i) 'los valores horizontales que indican
' los numero de las columnas

Grid2.Row = 0 'fila fija en cero


Grid2.Col = i
Grid2.Text = Str (i) 'los valores verticales que indican los numero de las filas

Next i

' se rellena el grid3 (corrientes) CON VALORES INCOGNITAS


For i = 1 To n
Grid3.Row = i
Grid3.Text = "X" + Str (i) ' X1 , X2 ,X3 ...ETC
Next i
'dimensionadas las mallas se hace visible el frame
' que las contiene con lo que aparecen a los ojos del usuario
Frame1.Visible = True

End Sub
Visual Basic 5.0. Curso Bsico 98

Private Sub borrar()


'*****************************************************
'esta rutina es llamada por el men Nuevo Clculo (mnuarcnuevo)
' se borran las mallas se hace invisible el frame
'*****************************************************

Frame1.Visible = False
Grid1.Row = 1
Grid2.Col = 1
Grid2.Row = 1
Grid3.Row = 1

Text1.Text = ""
End Sub

Private Sub Form_Load()


'***************************************************
' Al cargar el programa la variable guardar se inicia a cero
' guardar es una especie de bandera que se marca a 1 cuando se
' escriben datos en las mallas y que se vuelve a colocar
' en cero cuando se guardan en archivos
' Si se intenta abandonar el programa se consulta a la variable ' guardar cual es su valor.
' Si vale 1 significa que se colocaron valores en las mallas pero
' no se guardaron, con lo cual se enva un mensaje de advertencia
' si vale cero significa que no se metieron datos o que
' los datos se grabaron con lo cual se abandona el programa sin
' necesidad de enviar el Msgbox
' **************************************************
guardar = 0

End Sub

Private Sub Grid1_KeyDown(KeyCode As Integer, Shift As Integer)


'********************************************************************
' Esta rutina se llama cuando el usuario pulsa cualquier tecla ( .. y antes de soltarla)
' keycode representa el cdigo de la tecla, en nuestro caso cuando este cdigo
' es igual al numero 46 ( tecla delete o borrar ) borramos la informacin contenida
' en la celda actual, este el mtodo que usamos para borrar la informacin de las celdas
'************************************************************************

If KeyCode = 46 Then
Grid1.Text = "" ' para borrar escribimos ...!nada !
End If
End Sub
Visual Basic 5.0. Curso Bsico 99

Private Sub Grid1_KeyPress(KeyAscii As Integer)

' ********************************************************************
' Esta rutina se invoca cuando el usuario pulsa cualquier tecla, luego de soltar la tecla
' el valor keyascii representa el cdigo de la tecla pulsada, en nuestro caso cuando
' esta rutina se utiliza para escribir en las celdas la rutina que escribe en la celda
' es Grid1.Text = Grid1.Text + Chr$(KeyAscii) donde Chr$(KeyAscii) es
' el caracter que representa el caracter ascii de la tecla
' Ntese que solo se alcanza este cdigo si el caracter pulsado es un numero
' o si es el caracter ascii 8 ( es decir la tecla bacspace o borrar en retroceso )
' adems debe cumplirse el segundo ciclo if que cuestiona si el caracter que ingresa
' adicionado a lo ya escrito representa un numero, esto impedira que el usuario intentara
' escribir puntos solos
'******************************************************************

If IsNumeric(Chr$(KeyAscii)) = True Or KeyAscii = Asc(".") Then


If IsNumeric(Grid1.Text + Chr$(KeyAscii)) = True Then
Grid1.Text = Grid1.Text + Chr$(KeyAscii)
guardar = 1
End If
End If
End Sub

Private Sub Grid2_KeyDown(KeyCode As Integer, Shift As Integer)


' ********************************************************************
' Esta rutina se llama cuando el usuario pulsa cualquier tecla ( .. y antes de soltarla)
' keycode representa el cdigo de la tecla , en nuestro caso cuando este codigo
' es igual al numero 46 ( tecla delete o borrar ) borramos la informacin contenida
' en la celda actual, este el mtodo que usamos para borrar la informacin de las celdas
'************************************************************************
*
If KeyCode = 46 Then

Grid2.Text = "" ' Se borra la celda

End If
End Sub
Visual Basic 5.0. Curso Bsico 100

Private Sub Grid2_KeyPress(KeyAscii As Integer)


' **********************************************************************
' Esta rutina se invoca cuando el usuario pulsa cualquier tecla, luego de soltar la tecla
' el valor keyascii representa el cdigo de la tecla pulsada, en nuestro caso cuando
' esta rutina se utiliza para escribir en las celdas la rutina que escribe en la celda
' es Grid1.Text = Grid1.Text + Chr$(KeyAscii) donde Chr$(KeyAscii) es
' el caracter que representa el caracter ascii de la tecla
' Ntese que solo se alcanza este cdigo si el caracter pulsado es un numero
' o si es el caracter ascii 8 ( es decir la tecla bacspace o borrar en retroceso )
' adems debe cumplirse el segundo ciclo if que cuestiona si el caracter que ingresa
' adicionado a lo ya escrito representa un numero, esto impedira que el usuario intentara
' escribir puntos solos
'******************************************************************
If IsNumeric(Chr$(KeyAscii)) = True Or KeyAscii = Asc(".") Then
If IsNumeric(Grid2.Text + Chr$(KeyAscii)) = True Then
Grid2.Text = Grid2.Text + Chr$(KeyAscii)
guardar = 1
End If
End If
End Sub

Private Sub mnuarcabrir_Click()


'************************************************************
' Esta rutina se utiliza para leer desde archivo
' 1. El numero de ecuaciones ( el contenido de la variable global n)
' 2. Los valores de la matriz de tensiones e impedancia
'*************************************************************

Dim i As Integer, j As Integer ' para los ciclos de las mallas

Dim f As Integer 'para el numero del controlador de archivo

Dim auxiliar As Variant 'para retirar el valor del archivo y colocarlo en las mallas

' en caso de falla se traslada el control a la marca 1


On Error GoTo marca1

f = FreeFile 'Devuelve buffer vaco

'********************************************************
' filename se enva al comondialog de nombre archivo
' para determinar los archivo que se visualizaran
' DialogTitle determina el titulo de la ventana de abrir
' archivo.ShowOpen para levantar la ventana de Open (abrir archivo)
Visual Basic 5.0. Curso Bsico 101

archivo.filename = "*.*"
archivo.DialogTitle = "Leer Datos desde Archivos"
archivo.ShowOpen

'**********************************************************
' El archivo se abre con el nombre devuelto por la ventana abierta por el commondialog en
' la lnea anterior como se va a abrir el archivo para leer datos desde el
' Open se invoca en el modo input(leer desde archivo)

Open archivo.filename For Input As #f


Input #f, n
Call actualizar 'para darle el tamao a las mallas

' se lee igual que como se escribi en la rutina mnuarcguardar.


For i = 1 To n ' ciclo de las filas
Grid1.Row = i
Input #1, auxiliar ' se leen las tensiones
Grid1.Text = auxiliar

Grid2.Row = i
For j = 1 To n

Grid2.Col = j 'ciclo de las columnas


Input #1, auxiliar ' se leen las impedancias
Grid2.Text = auxiliar
Next j

Next i

Close #f ' se cierra el archivo


'***************************************************************

Exit Sub ' salida de la rutina en caso de no existir fallas

marca1: ' aqui se salta cuando ocurre una falla

' Se invoca al procedimiento global error ( se encuentra en el


' modulo calculos.bas )
' La subrutina errores lanza un mensaje aclaratorio del error
Call errores

Exit Sub

End Sub
Visual Basic 5.0. Curso Bsico 102

Private Sub mnuarcguardar_Click()


'************************************************************
' Esta rutina se utiliza para almacenar:
' 1. El numero de ecuaciones ( el contenido de la variable global n)
' 2. Los valores del grid1 (V) y del grid2 (Z)
'*************************************************************

Dim i As Integer, j As Integer 'variables pra los ciclos


Dim f As Integer

'************************************************************
' La rutina se ejecuta solo si frame1 es visible, es decir
' si se han dimensionados las matrices y seguramente se han
' introducido valores en las mismas, de no ser asi no tendra
' sentido guardar y hasta podra ocurrir un error al intentarlo
'

If Frame1.Visible = True Then

On Error GoTo marca2


f = FreeFile
archivo.filename = "*.*"
archivo.DialogTitle = "Guardar Datos en Archivo"
archivo.Flags = &H2& Or &H4& '&H2& = si el archivo existe, pregunte
' si desea sobreescribir

'&H4& = Oculta la opcin de


' abrir en solo lectura la cual
' no se usa en este caso

archivo.ShowSave ' ShowSave : se usa para llamar a la


' ventana de salvar o guardar

'**********************************************************
' El archivo se guarda con el nombre devuelto por la ventana
' abierta por el commondialog en la lnea anterior
' como se va a abrir el archivo para guardar datos
' Open se invoca en el modo Output

Open archivo.filename For Output As #f


Write #f, n

For i = 1 To n
Grid1.Row = i
Write #1, Grid1.Text
Visual Basic 5.0. Curso Bsico 103

Grid2.Row = i
For j = 1 To n

Grid2.Col = j
Write #1, Grid2.Text

Next j
Next i

Close #f

guardar = 0 'se han guardado los datos

End If

Exit Sub

marca2:
Call errores
Exit Sub

End Sub

Private Sub mnuarcNuevo_Click()


'*****************************************************
' rutina para borrar las mallas
' esta declara en la seccin general de este formulario
'*****************************************************

Call borrar
End Sub

Private Sub mnuarcsalir_Click()


'*************************************************************
' Rutina para salir, sin embargo antes hay que verificar que se han salvado los datos
'introducidos por el Usuario. De no ser as (guardar = 1) se enva un mensaje
' para advertir al usuario si quiere irse sin guardar

Dim respuesta As Integer ' para la respuesta


Visual Basic 5.0. Curso Bsico 104

If guardar = 1 Then ' si no se han guardado

' en respuesta se recoge la decisin del usuario la opcin 4 + 48 de MsgBox funciona as


' 4 = Aparecen los botones SI y NO
' 48 = Muestra icono de advertencia
' El titulo ser : Cuidado
' Debe recordarse que MsgBox devuelve 6 cuando se pulsa el botn de SI y 7 cuando se
' pulsa NO

respuesta = MsgBox("Se han modificados datos . Desea Salir sin guardarlos?", 4 + 48,_
"Cuidado")

If respuesta = 6 Then
End ' Es decir nos vamos sin guardar
Else
Exit Sub ' No queremos salir del programa
End If

Else ' En este caso guardar es cero, esto es:


' 1. que no se han introducido datos
' o 2. Que ya se guardaron
End ' En este caso nos vamos sin problema
End If

End Sub

Private Sub mnuresultados_Click()


' ****************************************************************
' Una rutina global (declarada en el modulo calculo.bas) se
' encargara de realizar el calculo que incluye
' 1. Lectura de los datos desde las mallas a variables
' 2. Inversin de Z
' 3. Premultiplicacion de la inversa de Z por el vector V
' 4. Se escriben los resultados en el formulario segundo

Call calcular ' Procedimiento descrito en calculo.bas

End Sub
Visual Basic 5.0. Curso Bsico 105

Private Sub Text1_Change()


' el valor que ingresa solo puede ser menor que 200 y diferente de cero en valor numrico
' para que se invoque a la subrutina que crea las mallas

If Val(Text1.Text) < 200 And Val(Text1.Text) <> 0 Then

' variable global (declarada en el modulo de cdigo calculo.bas


' esta variable adquiere aqui el numero de ecuaciones
n = Val(Text1.Text)
mnuresultados.Enabled = True

Call actualizar ' este procedimiento se encuentra en la seccin general de form1

Else

' si no se cumplen los requerimientos se borra la caja de


' texto y se hace invisible el frame que contiene las mallas
Text1.Text = ""
Frame1.Visible = False
End If

End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)


If IsNumeric(Chr$(KeyAscii)) = False And KeyAscii <> 8 Then

KeyAscii = 0

End If
End Sub

Cdigo del Segundo Formulario

Private Sub Command1_Click()


'****************************************************
' La funcion Unload descarga un formulario El control del Programa pasa al formulario
' que llamo al formulario que estamos descargando
' En nuestro caso descargamos este formulario (segundo)
' y volvemos al principal (primero)

Unload segundo
End Sub
Visual Basic 5.0. Curso Bsico 106

Cdigo del Modulo

'***************************************
' Variable de ambito global al proyecto

Public n As Integer 'numero de ecuaciones

Public Sub errores()


' ************************************************
' Donde ocurra un error atrapable en este programa se
' Llama a esta funcin global
'
' Aqu se manda a escribir una breve descripcin del
' error ocurrido, esta descripcin esta contenida en
' la variable interna de Visual Err en su propiedad
' Description
MsgBox Err.Description, 1 + 47, "ERROR"

' la opcin 47 de MsgBox es para que aparezca el smbolo


' de advertencia (icono amarillo con signo de admiracin)
End Sub

Public Sub calcular()


' **************************************************************
' Rutina para la solucin de un sistemas de ecuaciones lineales
' de la forma [V]=[Z]x[I]

'1. Declaracin de las variables


Dim i As Integer, j As Integer ' para los ciclos
Dim devuelve As Integer

' 2 Dimensionamiento dinmico de las variables a partir de


' la variabla global n
ReDim V(1 To n) As Single ' voltaje
ReDim C(1 To n) As Single ' corriente
ReDim Z(1 To n, 1 To n) As Single 'impedancia

' 3 Cargado de las matrices


' la tensin
Visual Basic 5.0. Curso Bsico 107

For i = 1 To n

primero.Grid1.Row = i
If primero.Grid1.Text = "" Then
V(i) = 0
Else
V(i) = CSng(primero.Grid1.Text) 'el vector V se carga con los
' valores del grid1 del formulario
' primero, Por estar en un modulo
' aparte debe indicarse el formulario
' en el que se encuentra el control (grid)
End If
Next i

' la impedancia
For i = 1 To n

primero.Grid2.Row = i

For j = 1 To n
primero.Grid2.Col = j

If primero.Grid2.Text = "" Then


Z(i, j) = 0
Else
Z(i, j) = CSng(primero.Grid2.Text) ' Csng convierte texto a single
' es una funcin mas efectiva que val
' para la conversin de valores single
End If

Next j
Next i

' 3. Se llama a la subrutina que invertir a la matriz Z


' se le pasa la matriz Z y el orden de la matriz

devuelve = invertir(Z(), n) ' esta funcin esta en este modulo bas

If devuelve = 0 Then
MsgBox "No se pueden efectuar los calculos. El sistema es Singular o Los elementos de
la diagonal Principal de Z son cero. Debe replantear las ecuaciones"
Exit Sub
End If
Visual Basic 5.0. Curso Bsico 108

' 4 se premultiplica Z por V

For i = 1 To n
C(i) = 0
For j = 1 To n
C(i) = C(i) + Z(i, j) * V(j)
Next j
Next i

' 5 se copian los resultados en el formulario Segundo y se muestra el formulario

segundo.Grid1.Rows = n + 1 ' se dimensionan las mallas de salida


segundo.Grid2.Rows = n + 1

segundo.Grid1.FixedRows = 1
segundo.Grid2.FixedRows = 1

For i = 1 To n

segundo.Grid1.Row = i
segundo.Grid1.Text = "X" + Str$(i)

segundo.Grid2.Row = i
segundo.Grid2.Text = CStr(C(i)) ' se copian los resultados

Next i

segundo.Show 1 ' Funcion que muestra o carga un formulario


' que no es el principal

End Sub

Function invertir(mat() As Single, n As Integer)


' **************************************************************
' Rutina para invertir una matirz por el metodo de Shipley

Dim i As Integer, j As Integer, k As Integer

For i = 1 To n ' Ciclo i


If mat(i, i) = 0 Then ' los elementos de la diagonal principal no pueden ser cero
invertir = 0
Exit Function
End If

mat(i, i) = 1 / mat(i, i)
Visual Basic 5.0. Curso Bsico 109

For j = 1 To n ' Primer ciclo j

If j <> i Then
mat(j, i) = mat(j, i) * mat(i, i)

For k = 1 To n ' ciclo k

If k <> i Then
mat(j, k) = mat(j, k) - mat(j, i) * mat(i, k)
End If

Next k ' fin ciclo k

End If

Next j ' fin primer ciclo j

For j = 1 To n ' segundo ciclo j

If j <> i Then
mat(i, j) = -mat(i, j) * mat(i, i)
End If

Next j ' fin segundo ciclo j

Next i ' fin ciclo i

invertir = 1

End Function

Revise con cuidado el uso de archivos secuenciales en las rutinas mnuarcabrir_Click


y mnuarcguardar_Click del Primer Formulario
Visual Basic 5.0. Curso Bsico 110

Archivos de acceso Aleatorio

Los archivos de acceso aleatorio a diferencia de los secuenciales ofrecen una forma mas
directa de accesar a los datos de forma independiente sin recorrer todo el archivo.

Los datos se almacenan en registros los cuales tienen una longitud mxima predefinida aun
cuando cada registro no consuma todo el espacio predeterminado para este.

Cuando un archivo de acceso aleatorio es abierto este puede utilizarse para leer o escribir
indistintamente, por lo cual no es necesario indicar en la instruccin Open si es For Input o
For Output, en su lugar indicaremos que se ha de abrir para acceso aleatorio: For Random,
adems debemos indicar el espacio que han de tener los registro que van ingresando al
archivo. Este es un ejemplo del uso de Open para la creacin de archivo para acceso
aleatorio:
Open "PRUEBA" For Random As #1 Len = 50

La cantidad despus de Len indica los bytes que ha de ocupar cada registro, lo cual debe ser
menor a 32,767 (bytes). Por lo regular esta debe ser calculada a partir del tamao de la
variable o constante ms grande que se ha de enviar como registro al archivo.

El espacio que ocupa un variable puede ser calculado en forma sencilla utilizando al
comando Len:
Open "PRUEBA" For Random As #1 Len = Len(Mivariable)

En los archivos de acceso aleatorio la nocin de registro esta incorporada. En elleos los
datos estn dispuestos en registros lo cual permite ir directamente al registro numero 8 sin
tener que pasar por el 7.
Para un mejor uso de los archivos de acceso aleatorio resulta conveniente usar el tipo de
dato Registro. Aunque este tipo de dato puede ser usado en cualquier ocasin son de
especial utilidad en el manejo de estos archivos.

Para declara una variable tipo registro utilizaremos la instruccin Type:

Type
Se usa en el nivel de mdulo para definir un tipo de datos definido por el usuario que
contiene uno o ms elementos.
Sintaxis
[Private | Public] Type nombreVar
nombreElemento [([subndices])] As tipo
[ nombreElemento [([subndices])] As tipo]
...
End Type
Visual Basic 5.0. Curso Bsico 111

La sintaxis de la instruccin Type tiene las partes siguientes:


Parte Descripcin

Public Se usa para declarar los tipos definidos por el usuario que estn
disponibles para todos los procedimientos de todos los mdulos en
todos los proyectos.
Private Se usa para declarar los tipos definidos por el usuario que nicamente
estn disponibles dentro del mdulo donde se efecta la declaracin.
nombreVar Nombre del tipo definido por el usuario; sigue las convenciones de
nomenclatura estndar de variable.
nombreElemento Nombre de un elemento de tipo definido por el usuario. Los nombres
de los elementos siguen tambin las convenciones de nomenclatura
estndar de variable, pero puede usar palabras clave.
subndices Cuando alguno de los elementos sea un arreglo
tipo Todos los tipos validos en Visual Basic u otros tipos previamente
definidos por el usuario.

Una vez que ha declarado un tipo definido por el usuario usando la instruccin Type, puede
declarar una variable de ese tipo en cualquier parte, dentro del mbito de la declaracin.
Use Dim, Private, Public, ReDim o Static para declarar las variables de los tipos definidos
por el usuario.
Los tipos definidos por el usuario se usan a menudo con registros de datos, que suelen
consistir en varios elementos relacionados de tipos de datos diversos.
El ejemplo siguiente muestra cmo se usan las matrices de tamao fijo en un tipo definido
por el usuario:

Type DatosEstado
CdigoCiudad (1 To 100) As Integer Declara un arreglo
Distrito As String * 30
End Type
...
Dim Bolivar As DatosEstado

En el ejemplo anterior, DatosEstado incluye el arreglo CdigoCiudad, y el registro Bolivar


tiene la misma estructura que DatosEstado.
Cuando declara una matriz de tamao fijo dentro de un tipo definido por el usuario, debe
declarar sus dimensiones con literales numricos o con constantes, mejor que con variables.

Cada uno de los elementos de la variable Guayana puede ser accesado en forma sencilla

Label1.Caption=Bolivar.Distrito
Label2.Caption=Bolivar.CodigoCiudad(5)
Visual Basic 5.0. Curso Bsico 112

Los archivos de acceso secuencial se cierran igualmente con la instruccin Close.

Sin embargo para escribir y leer desde ellos utilizaremos las siguientes instrucciones:

Put
Escribe en un archivo de disco los datos contenidos en una variable.

Sintaxis
Put [#]nmeroarchivo, [nmeroregistro], nombrevar

Parte Descripcin
nmeroarchivo Cualquier nmero de archivo vlido.
nmeroregistro Nmero de registro (archivos en modo Random) en el cual se
va a imprimir.
nombrevariable Nombre de la variable que contiene la informacin a escribir
en el disco.

El primer registro/byte de un archivo se encuentra en la posicin 1, el segundo en la


posicin 2 y as sucesivamente. Si se omite NmeroRegistro, se escribe en el siguiente
registro o byte (el que se encuentra despus de la ltima instruccin Get o Put ). Se deben
incluir puntos y coma de delimitacin entre los parmetros de la instruccin

Aunque la longitud de los datos escritos sea menor que la especificada en la clusula Len
de la instruccin Put escribe los registros siguientes segn los lmites de longitud de
registro y llena el espacio entre el fin de un registro y el comienzo del siguiente con el
contenido del rea de memoria intermedia del archivo.

Dado que la cantidad de datos de llenado no puede ser determinada con certeza, se
considera una buena prctica que el registro tenga la misma longitud que los datos que se
escriben. Si la longitud de los datos que se escriben es mayor que la especificada en la
clusula Len de la instruccin Open, ocurre un error.

Ejemplo
En este ejemplo se utiliza la instruccin Put para escribir datos en un archivo del disco. Se
escriben cinco registros del tipo definido por el usuario Registro.

Type Registro ' Declara el tipo definido por el programador


ID As Integer
Nombre As String * 20
End Type
Visual Basic 5.0. Curso Bsico 113

Dim MiRegistro As Registro ' Declara la variable.

' Abrir archivo para acceso aleatorio.


Open "PRUEBA" For Random As #1 Len = Len(MiRegistro)

For NumeroRegistro = 1 To 5 ' Repite 5 veces el bucle.


MiRegistro.ID = NumeroRegistro ' Define el ID.
MiRegistro.Nombre = "Nombre" & NumeroRegistro ' Crea una cadena

Put #1, NumeroRegistro, MiRegistro ' Escribe el registro en el archivo.

Next NumeroRegistro

Close #1 ' Cierra el archivo.

Get
Lee en un archivo de disco abierto y coloca la informacin en una variable.

Sintaxis
Get [#]nmeroarchivo, [nmeroregistro], nombrevariable

Parte Descripcin
nmeroarchivo Cualquier nmero de archivo vlido.
nmeroregistro El nmero de registro (en archivos de modo Random) o el nmero de
byte (en archivos de modo Binary) desde el que se va a leer.
nombrevariable Nombre de una variable vlida en la que se colocan los datos.

El primer registro/byte de un archivo se encuentra en la posicin 1, el segundo en la


posicin 2 y as sucesivamente. Si se omite nmeroregistro, se lee el siguiente registro o
byte (el que se encuentra despus de la ltima instruccin Get o Put). Se deben incluir
puntos y coma de delimitacin

Ejemplo
En este ejemplo se utiliza la instruccin Get para leer datos de un archivo de disco y
ponerlos en una variable. Se supone que PRUEBA es un archivo que contiene cinco
registros del tipo definido por el usuario Record.

Type Registro Define un tipo definido por el usuario.


ID As Integer
Nombre As String * 20
End Type
Visual Basic 5.0. Curso Bsico 114

Dim MiRegistro As Registro ' Declara la variable.

' Se abre un archivo de muestra para acceso aleatorio.


Open "PRUEBA" For Random As #1 Len = Longitud(MiRegistro)

' Se lee el archivo de muestra por medio de la instruccin Get.


Posicion = 3 ' Define el nmero del registro.
Get #1, Posicion, MiRegistro ' Lee el tercer registro.
Close #1 ' Cierra el archivo.

Veamos un ejemplo sencillo del uso de archivos aleatorios. En el ejemplo cvb15 se usa un
archivo de acceso aleatorio y la sencillez de Visual Basic en generar interfaz Windows, para
crear un programa que gestione una agenda telefnica de rpida implementacin

Programa Ejemplo cvb15 Agenda Telefonica

Figura 29.0 Programa Ejemplo cvb15 . Agenda Telefnica

Es detalle importante que hay que denotar es que la propiedad MazLenght de las cajas de
texto que se observan en la figura 25.0 (cvb15) fueron establecidas as:
Para text1 Maxlenght=40
Para text2 Maxlenght=40
Para text3 Maxlenght=100 (esta caja tiene la propiedad Multiline en True)
Visual Basic 5.0. Curso Bsico 115

Aqu esta el cdigo del programa:

Option Explicit

'Declaracin de un tipo definido por el usuario, que corresponde a un registro


Private Type Informacion_Personal
Nombre As String * 40
Telefono As String * 40
Coment As String * 100
End Type

'Variables Globales al formulario


Private Persona As Informacion_Personal 'Del tipo declarado arriba
Private Archivo As Integer 'Para el numero de archivo
Private Longitud As Long 'Longitud del registro
Private ActualRegist As Long 'Registro Actual
Private UltimoRegist As Long 'Ultimo Registro

Private Sub Command1_Click()


'*******************************************
' Rutina para anexar un nuevo registro
'*******************************************

'Primero se guarda el registro actual


Call SalvarRegistro

'Se aade un nuevo registro en blanco


UltimoRegist = UltimoRegist + 1

With Persona ' otra forma de accesar a los elementos


.Nombre = ""
.Telefono = ""
.Coment = ""
End With
Put #Archivo, UltimoRegist, Persona

'Actualiza el registro actual


ActualRegist = UltimoRegist

'Muestra el registro creado (que esta en blanco)


Call MostrarRegistro

'Envia el foco al texto que contendr el nombre


Visual Basic 5.0. Curso Bsico 116

Text1.SetFocus

End Sub

Private Sub Command2_Click()


'********************************************************
' Rutina para mostrar el siguiente registro
' Si el registro actual es el ultimo enva mensaje
'De lo contrario guarda el registro actual y salta al siguiente
'*********************************************************

If ActualRegist = UltimoRegist Then


MsgBox "Final del Archivo", vbExclamation
Else
Call SalvarRegistro
ActualRegist = ActualRegist + 1
Call MostrarRegistro
End If

'Enva el foco al texto que contendr el nombre


Text1.SetFocus

End Sub

Private Sub Command3_Click()


'********************************************************
' Rutina para mostrar el registro anterior
' Si el registro actual es el primero enva mensaje
'De lo contrario guarda el registro actual y salta al anterior
'*********************************************************

If ActualRegist = 1 Then
MsgBox "Principio del Archivo", vbExclamation
Else
Call SalvarRegistro
ActualRegist = ActualRegist - 1
Call MostrarRegistro
End If

'Envia el foco al texto que contendra el nombre


Text1.SetFocus
End Sub
Visual Basic 5.0. Curso Bsico 117

Private Sub Command4_Click()


'***********************************************
' Rutina para salir del programa
'***********************************************

' Se guarda el registro actual


Call SalvarRegistro

' se cierra el archivo


Close Archivo

'termina el programa
End
End Sub

Private Sub Form_Load()


'********************************************************
' Rutina de inicio para cuando arranca el programa
' entre otras cosas se abre o crea el archivo aleatorio
'*********************************************************
'Se calcula la longitud del registro
Longitud = Len(Persona) 'la longitud del registro es la longitud
' de la variable Persona

'Obtiene el siguiente numero de archivo disponible


Archivo = FreeFile

'Se abre el archivo si existe, si no existe se crea


Open "GuiaT.dat" For Random As Archivo Len = Longitud

'Inicializar el registro Actual


ActualRegist = 1

' Determinar cual es el numero del ultimo registro


' en caso de no estar recientemente abierto
'LOF devuelve el tamao en bytes del archivo
UltimoRegist = LOF(Archivo) / Longitud

' si fue recien abierto se le asigna como ultimo registro el primero


If UltimoRegist = 0 Then
UltimoRegist = 1
End If

'Que muestre el registro actual


Call MostrarRegistro

End Sub
Visual Basic 5.0. Curso Bsico 118

Public Sub SalvarRegistro()


'*******************************************
' Rutina para grabar el registro actual
'*******************************************

'Llenar a Persona con los datos personales


Persona.Nombre = Text1.Text
Persona.Telefono = Text2.Text
Persona.Coment = Text3.Text

'Guardar Persona en el registro actual

Put #Archivo, ActualRegist, Persona


End Sub

Public Sub MostrarRegistro()


'*******************************************
' Rutina para mostrar el registro actual
'*******************************************

'Llena a Persona con los datos del registro actual


Get #Archivo, ActualRegist, Persona

'Muestra la variable-registro Persona


Text1.Text = Trim(Persona.Nombre) 'Trim elimina espacios en blanco
Text2.Text = Trim(Persona.Telefono)
Text3.Text = Trim(Persona.Coment)

'Se muestra el numero del registro actual en el titulo del Formulario


Form1.Caption = "Registro " + Str(ActualRegist) + "/" + Str(UltimoRegist)
End Sub
Visual Basic 5.0. Curso Bsico 119

Ordenes de Archivos
Visual Basic cuenta adems con un conjunto de comandos que interactuan con el sistema
operativo subyacente a fin de gestionar archivos y directorios en su computadora, entre
estas ordenes encontramos:

ChDrive Cambia la unidad de disco actual.


Ejemplo:
ChDrive "D" ' Hace que "D" sea la unidad de disco actual.

ChDir Cambia el directorio o la carpeta actual.


Ejemplo
ChDir "D:\WINDOWS\SYSTEM"

MkDir Crea un directorio o carpeta.


Ejemplo
MkDir "MIDIR" ' Se crea el directorio MIDIR en direccin actua

RmDir Elimina un directorio o carpeta existente.


Ejemplo
' Se supone que MIDIR es un directorio o carpeta vaca.
RmDir "MIDIR" ' Se elimina MIDIR.

Kill Elimina archivos en un disco.


Ejemplo
Kill "Prueba" ' Se elimina el archivo Prueba

CurDir Devuelve la ruta de acceso actual.


Ejemplo
MiRuta = CurDir("C") 'Devuelve la ruta actual en el disco C
MiRuta = CurDir 'Devuelve la ruta actual en el disco actual

Shell Ejecuta un programa ejecutable. .Exe, .Com o .Bat

Sintaxis
Shell(rutaDeAcceso[, estiloDeVentana])

Parte Descripcin

rutaDeAcceso Nombre del programa por Ejecutar y cualquier argumentos o


conmutadores (switches) de lnea de comando requeridos; puede
incluir directorio o carpeta y unidad de disco. Tambin puede ser el
nombre de un documento que se ha asociado con un programa
ejecutable.
Visual Basic 5.0. Curso Bsico 120

estiloDeVentana El nmero correspondiente al estilo de la ventana en la cual se va a


ejecutar el programa. En Microsoft Windows, si se omite
estiloDeVentana, el programa se inicia minimizado con enfoque.

El argumento con nombre estiloDeVentana tiene estos valores:

Constante Valor Descripcin

vbHide 0 Se oculta la ventana y se pasa el foco a la


ventana oculta.
vbNormalFocus 1 La ventana recupera el foco y vuelve a su
posicin y tamao original.
vbMinimizedFocus 2 La ventana se muestra como un icono con foco.
vbMaximizedFocus 3 La ventana se maximiza con foco.
vbNormalNoFocus 4 La ventana vuelve al tamao y posicin ms
recientes. La ventana activa actual permanece
activa.
vbMinimizedNoFocus 6 La ventana se muestra como un icono. La ventana
activa actual permanece activa.

Si la funcin Shell ejecuta con xito el archivo nombrado, devuelve la identificacin de la


tarea (ID) del programa iniciado. La ID de la tarea es un nmero exclusivo que identifica el
programa en ejecucin. Si la funcin Shell no puede iniciar el programa nombrado, ocurrir
un error.
Nota La funcin Shell ejecuta otros programas de manera asncrona. Esto quiere decir que
no se puede esperar que un programa iniciado con Shell termine su ejecucin antes de que
se ejecuten las instrucciones que siguen a la funcin Shell en la aplicacin.

FileCopy
Copia un archivo.

Sintaxis
FileCopy fuente, destino

Parte Descripcin
fuente Expresin de cadena que especifica el nombre de un archivo a
copiarse puede incluir el directorio o carpeta y la unidad de disco..
destino Expresin de cadena que especifica el nombre del archivo de destino
se puede incluir el directorio o carpeta y la unidad de disco.

Si intenta utilizar la instruccin FileCopy en un archivo abierto actualmente, se produce un


error.

Existen muchas otros comandos para manejo de archivos y directorios, los cuales el lector
deber investigar a medida que las requiera en sus aplicaciones.

También podría gustarte