Вы находитесь на странице: 1из 73

Visual Studio 6.0.

Visual Basic
Lenguajes de Programación
Visual Basic 6.0 Microsoft

PAG. 2
Microsoft Visual Basic 6.0

INDICE GENERAL
MICROSOFT VISUAL BASIC 6.0. PROFESSIONAL
HERRAMIENTA DE MICROSOFT VISUAL STUDIO 6.0.

LECCIÓN 01: INTRODUCCIÓN A VISUAL BASIC 6.0 ...............................

La primera aplicación
La interfaz de Visual Basic
Proyectos
Administrar proyectos
Establecer opciones de VB
Tiempos de desarrollo
El sistema de Ayuda

LECCIÓN 02: PROGRAMACIÓN EN VISUAL BASIC.................................

Estructura del código


Objetos en Visual Basic
Establecer propiedades
Utilizar métodos
Entender los eventos

LECCIÓN 03: TRABAJAR CON MENÚS........................................................

El editor de menús
Elementos de menús
Teclas de método abreviado
Eventos de menú
Menús contextuales
Opciones de menú contextual

LECCIÓN 04: CUADROS DE DIÁLOGO ........................................................

Introducción
Cuadros predefinidos
Control Diálogo Común
Cuadros personalizados

LECCIÓN 05: CONTROLES BÁSICOS ...........................................................


Introducción
Entrada de datos
Etiqueta + Cuadro de texto
Control Marco
Botones de comando
Bloquear controles

LECCIÓN 06: CONTROLES BÁSICOS (II) .....................................................


Casillas de verificación
Botones de opción
Cuadros de lista
Cuadros combinados

PAG. 3
Visual Basic 6.0 Microsoft

LECCIÓN 07: FUNDAMENTOS DE PROGRAMACIÓN .......................

Introducción
Variables
Tipos de datos
Constantes
Operadores de Visual Basic

LECCIÓN 08: FUNDAMENTOS PROGRAMACIÓN (II) ......................

Estructuras de decisión
Expresiones lógicas
Matriz de controles
Estructuras de repetición

LECCIÓN 09: FUNDAMENTOS PROGRAMACIÓN (III) ...................

Tipos de procedimientos
Crear procedimientos Sub
Llamar a procedimientos Sub
Crear procedimientos Function
Llamar procedimientos Function
Paso de parámetros
Ámbito de actuación

LECCIÓN 10: EFECTOS GRÁFICOS .......................................................

El control Line
El control Shape
Arrastrar con el ratón
Colocar con el ratón

LECCIÓN 11: EL ADMINISTRADOR VISUAL DE DATOS .................

Introducción
Diseñar la base de datos
Conocer el Administrador
Crear la base de datos
Crear índices

LECCIÓN 12: ACCESO A BASES DE DATOS ........................................

El control Data
Controles enlazados
Recordset
Modificar la Base de datos
Añadir registros

LECCIÓN 13: PROGRAMAR CON LA BASE DE DATOS ...................

Moverse por el recordset


Buscar registros
Añadir registros
Eliminar registros
Editar registros

PAG. 4
Microsoft Visual Basic 6.0

LECCIÓN 14: OPCIONES AVANZADAS DE BASE DE DATOS ................

Introducción
Cuadrícula enlazada a datos
Consultas en SQL
Criterios complejos
Validar la entrada
Validar con el control Data

LECCIÓN 15: TRABAJAR CON ARCHIVOS .................................................

Controles especializados
Conectar los controles
Manejadores de error
Archivos de texto
La instrucción FileCopy

LECCIÓN 16: UTILIZACIÓN DE OLE .............................................................

Introducción
El Contenedor OLE
Edición del objeto
Objetos insertables
Automatización OLE

LECCIÓN 17: APLICACIONES MDI ...............................................................

Una aplicación MDI


Formularios MDI
Formularios secundarios
Instancias de formulario
El menú Ventana
El evento QueryUnload

LECCIÓN 18: DEPURAR LA APLICACIÓN ...................................................

Tipos de error
Buscar el error
Seguir paso a paso
La ventana Depuración
Inspección instantánea
Corregir y seguir
Llamadas a procedimientos

LECCIÓN 19: FINALIZAR LA APLICACIÓN ................................................


Introducción
Compilar la aplicación
Crear ejecutables
El Asistente de instalación
¿Qué crea el Asistente?

LECCIÓN 20: OBJETOS DE DATOS ACTIVOS (ADO) ...............................


Introducción
El control ActiveX ADO
Crear archivo vínculo de datos
El contol DataGrid 6.0

PAG. 5
Visual Basic 6.0 Microsoft

PAG. 6
Microsoft Visual Basic 6.0

Introducción a Visual Basic

1.1. LA PRIMERA APLICACIÓN

S eguro Que está impaciente por empezar a programar en Visual Basic. Aunque las
prisas nunca son un buen aliado de una programación de calidad, en este capítulo
vamos a mostrarle cuál es el proceso para crear aplicaciones con Visual Basic.

Los pasos a seguir en la creación de una aplicación son los siguientes:

1. Análisis de la creación a crear, tanto en su aspecto funcional como estructural. Es decir,


deberá estudiar qué debe ser capaz de realizar la aplicación y qué elementos intervienen en
la misma.

2. Diseño de la interfaz de usuario de la aplicación. Dicha interfaz se compone de los


distintos formularios que necesite, además del diseño particular de cada uno de éstos, con
todos los controles y menús.

3. Establecer el valor de aquellas propiedades de los formularios y controles que desee


modificar.

4. Escribir códigos para aquellos eventos que debe controlar, además de rutinas que realicen
procesos específicos.

A lo largo de este curso aparecerá a realizar cada uno de estos pasos, excepto el primero y
tal vez más importante, que es el análisis de la aplicación.

1.2. LA INTERFAZ DE VISUAL BASIC

N o debe olvidar que está trabajando en una aplicación Windows 95 como es Visual
Basic y que, muchos de los elementos que deseará incorporar en sus propias
aplicaciones también están presentes en Visual Basic.

En este capítulo viajaremos a través de la interfaz de Visual Basic para conocer las
herramientas de su entorno de programación. El capitulo tiene verdadera importancia ya que éste
es el entorno en que trabajará cuando diseñe sus aplicaciones.

PAG. 7
Visual Basic 6.0 Microsoft

En la parte superior de la pantalla se sitúa la ventana principal de Visual Basic. En esta


ventana aparece la barra de menús constituida por un conjunto de menús desplegables que
facilitan los comandos necesarios para el trabajo en el entorno y la barra de herramientas, situada
inmediatamente debajo, que da acceso rápido a algunas de esas operaciones.

Así, por ejemplo, podrá agregar un nuevo proyecto , un formulario , abrir un


determinado proyecto o guardar el proyecto activo . Es importante indicar que sólo puede
tener un proyecto abierto al mismo tiempo.

Otra serie de botones que aparecen en esta barra de herramientas sirven para establecer
criterios en Tiempo de ejecución Así, podrá indicar la ejecución , interrumpirla o finalizarla
, además de establecer otras opciones útiles en el momento de depurar la aplicación que esté
creando.

La Caja de Herramientas que está anclada en la parte izquierda es un


componente fundamental del entorno de desarrollo de Visual Basic.

En esta caja se sitúan botones que representan los distintos Controles que
podrá utilizar durante el diseño de su aplicación. Estos controles serán situados en
los distintos formularios que vaya creando. La forma de trabajar es pulsar en el
botón del control que desea agregar al formulario y dibujarlo en éste o hacer clic
sobre el botón, con lo que crea un control de tamaño y posición predeterminada.

Es importante tener localizada y “a mano” esta caja de herramientas ya que


es uno de los componentes del entorno que más utiliza en el diseño de la aplicación.

En la zona central se sitúa la ventana del formulario en el que está


trabajando. Si ha creado más formularios, estas ventanas se van situando en esa zona
del entorno de programación.

En la ventana del formulario es donde se agregan los distintos controles,


gráficos e imágenes que constituyen la interfaz de su aplicación.

En la parte de la derecha se sitúa la ventana


Proyecto. Esta ventana enumera los formularios y
módulos del proyecto abierto. Si dicho proyecto está
compuesto por numerosos archivos, esta ventana le
servirá para situarse en el formulario o archivo que le
interese.

PAG. 8
Microsoft Visual Basic 6.0

Así, mediante el botón Ver objetos podrá


situarse en un determinado formulario y mediante el
botón Ver código mostrará el código asociado con
el elemento que esté seleccionado en la ventana.

Otro de los componentes fundamentales es la


interfaz es la ventana de Propiedades, donde se
enumeran las propiedades junto a los valore actuales
del formulario o control que tenga seleccionado. El
conjunto de estas propiedades es dependiente del tipo
de objetos al que se refiera.

Al hacer doble clic en un determinado formulario o control, aparece la ventana de código


que tiene asociada. En esta ventana se escribe la parte del código que se corresponde con el
objeto, como irá viendo a lo largo del curso.

En la parte superior de la
ventana de código aparece dos listados
de selección: en la de la izquierda se
elige el Objeto al que se quiere hacer
referencia y en la de la derecha el
procedimiento o parte del código que se
quiere programar.

Otros componentes de la interfaz de Visual Basic, es el uso de menú contextual, a los que
se accede con el botón secundario del ratón (normalmente será el botón derecho)

Este tipo de menú es sensible al objeto sobre el que se ha pulsado y permite un acceso
rápido a las opciones más típicas que se utilicen sobre el mismo.

1.3. PROYECTOS

V isual Basic proporciona muchas herramientas para la creación de aplicaciones


Windows. Este tipo de aplicaciones suele ser sobre todo gráficas y se ejecutan en
ventanas independientes.

Cuando usted este desarrollando una aplicación con Visual Basic, estará trabajando en un
Proyecto en la “jerga” de Microsoft.

Los proyectos se identifica como un archivo con la extensión .VBP que realiza el
seguimiento de todos los componentes de la aplicación

PAG. 9
Visual Basic 6.0 Microsoft

Es decir, un proyecto está compuesto de varios archivos que son los que usted va creando
a medida que desarrolla su aplicación. Así, un proyecto podrá contener uno o más archivos de
formularios, donde se guarda todo lo referente a los formularios o ventanas que vayan creando.
Estos archivos tienen la extensión .FRM y se guardan de forma independiente, uno por cada
formulario.

También se genera de forma automática un archivo .FRX para cada formulario que
contenga datos binarios en alguna propiedad (como puede ser una imagen o icono) de los
controles.

También se guardan los programas o códigos relacionados con el formulario en sí y con


los controles que contiene.

Es posible que desee agregar funcionalidad a su aplicación que no esté relacionada con
ningún objeto en particular, como puedan ser procesos sobre archivos o utilidades que desee
utilizar en más de un lugar. En estos casos, ese código puede ser escrito en otro tipo de archivos:
archivos de módulos.

La extensión de un módulo estándar de Visual Basic es .BAS (Basic) y no está limitado a


un único módulo sino que puede crear los que estime convenientes. Así podría utilizar varios
módulos para tratar distintos aspectos de su aplicación.

Otro tipo de archivos que puede encontrar en un proyecto son los llamados módulos de
clase, cuya extensión es .CLS. Estos módulos son utilizados para crear sus propios objetos, tema
éste que no será tratado en este curso.

En los archivos de recursos (sólo puede existir un archivo de este tipo por proyecto) se
guardan mapas de bits, cadenas de texto u otros datos que se utilizan en la interfaz de su
aplicación. Así en lugar de guardarlos en los ficheros de formularios, tal vez le interese hacerlo en
un archivo de recursos. Un uso típico de estos archivos son las aplicaciones que deben funcionar
en más de un idioma.

Además de todos los archivos que se han comentado, existen los archivos con controles
personalizados, que también pueden estar presentes en un proyecto. Este tipo de controles serán
tratados a lo largo del curso.

Y finalmente un único archivo de proyecto, con la extensión .VBP, donde se guarda la


información necesaria de cada uno de los archivos que forma el proyecto de programación y que
han sido mencionados.

En definitiva, deberá entender un proyecto en Visual Basic como la aplicación que esté
desarrollado. Toda la información que esté relacionada con esta aplicación se guardará en un
archivo especial: el de proyecto.

Usted puede trabajar a nivel de proyecto a nivel de los archivos que lo componen. Así
existen comandos que afectan a todo el proyecto, como pueden ser las opciones del menú
Archivo: Nuevo proyecto, Abrir proyecto, Guardar proyecto o Guardar proyecto como.

PAG. 10
Microsoft Visual Basic 6.0

1.4. ADMINISTRAR POYECTOS

C ada una de estas opciones trabajan con el conjunto de proyecto. Por ejemplo, al
guardar un proyecto, actualizará el archivo de proyecto y cada uno de los archivos que
lo componen.

Sin embargo, otras opciones como Guardar archivo o Guardar archivo como sólo
afectan al archivo de formulario o módulo que tenga seleccionado.

Visual Basic permite que un mismo archivo está presente en más de un proyecto. Podría
crear un formulario de bienvenida de introducción de datos o tener utilidades en un módulo
independiente y usarlo en más de una aplicación, sin necesidad de crearlos cada vez.

Si desea de tener una copia individual de ese archivo, podrá utilizar el comando Guardar
archivo como una vez lo haya agregado.

Por otra parte, también tiene la posibilidad de eliminar un determinado archivo del
proyecto. En este caso la referencia a ese archivo en el proyecto es suprimida. Utilice el comando
Eliminar archivo y no lo elimine desde el exterior de Visual Basic ya que en este último caso se
produciría un error en el momento de abrir proyecto, al no poder encontrarlo.

Con Agregar proyecto… puede trabajar con varios proyectos dentro de una misma sesión
del entorno de programación.

Así, puede usar un proyecto como borrador donde poder probar su código, y a medida que
lo va depurando, incluirlo en el proyecto ejecutable de la aplicación.

De forma predeterminada Visual Basic ejecuta el primer proyecto ejecutable .EXE


agregado a un grupo de proyectos.

Visual Basic muestra el nombre del proyecto de inicio en negrita dentro de la ventana
Proyecto.

El resultado final de su proyecto debe ser un archivo ejecutable, que podrá tener o no
extensiones en forma de librerías de enlace dinámico (DLL). Visual Basic incorpora una opción
en el menú Archivo que crea un archivo ejecutable a partir de los archivos que componen el
proyecto: Generar archivos EXE. En la última lección del curso tendrá más información
respecto a este asunto.

PAG. 11
Visual Basic 6.0 Microsoft

1.5. ESTABLECER OPCIONES DE VISAL BASIC

En Visual Basic podrá definir opciones del entorno de desarrollo del proyecto que está
creando, opciones de formato de código y de manejo de errores. Todas estas opciones
se establecen través del comando Opciones del menú Herramientas, y de Propiedades en el
menú Proyecto.

Al elegir este comando del menú Herramientas, aparece en cuadro de diálogo compuesto
por cinco fichas.

La ficha Editor especifica la configuración de la ventana Proyecto y la de Código. En la


sección Opciones de código hay que destacar las opciones de Comprobación automática de
sintaxis, con la que Visual Basic comprueba de forma automática la sintaxis de cada línea de
código que se escribe.

Con Requerir declaración de variable, le indicamos a Visual Basic que es necesario


definir las variables que utilicemos en la aplicación.

Con Información rápida automática activa, Visual Basic nos proporciona información
de los parámetros de la función que estamos utilizando.

La ficha Formato del editor sirve para establecer la apariencia del código que escriba en
Visual Basic. Aspectos como la fuente utilizada o el color de los distintos elementos del código,
para poder diferenciarlos, son establecidos en esta ficha.

PAG. 12
Microsoft Visual Basic 6.0

La ficha General establece aquellas opciones que se aplicarán sobre el entorno de


desarrollo. Entre las opciones más interesantes de esta ficha, se pueden destacar la de Forzar
controles a cuadrícula. Los formularios aparecen rellenos por una especie de cuadrícula que
sirve para posicionar los controles de una forma alineada.

Si desactiva esta casilla, tendrá una mayor libertad en la colocación de los controles, pero
le será más difícil alinearlos.

La casilla Compilar a petición determina si el proyecto debe ser compilida


completamente antes de iniciarse (la casilla estará desactivada) o la compilación se realizara a
medida que sea necesario (casilla activada) En este último caso la aplicación se iniciará más
pronto.

Si ha activado la anterior casilla, tal vez le interese usar la compilación en segundo plano,
con lo que Visual Basic utiliza el tiempo en el que el procesador está inactivo ( por ejemplo
esperando una respuesta del usuario) para compilar el código de su proyecto. Esto puede producir
una mejora en la velocidad de la aplicación.

En el apartado de interceptación de errores establece cuándo debe ponerse en modo de


interrupción Visual Basic si reconoce un error de ejecución.

En la carpeta Acople podrá establecer aquellas ventanas que están fijadas al entorno de
desarrollo. Así, si quiere tener flotante la ventana Posición del Formulario, desactive su casilla.

Dentro de la ficha Entorno, en la sección Cuando se inicie Visual Basic podemos elegir
entre dos opciones. Con Preguntar por un proyecto Visual Basic preguntará que proyecto quiere
abrir cada vez que inicie Visual Basic. Con Crear un proyecto predeterminado Visual Basic
creerá un proyecto predeterminado .EXE cada vez que se inicie Visual Basic.

PAG. 13
Visual Basic 6.0 Microsoft

Una de las opciones más importantes es la de Preguntar si se guardan los cambios ya


que permite guardar los cambios que haya efectuado en su proyecto, antes de ejecutarlo. Es
importante porque es posible que, al ejecutar un proyecto, éste se bloquea y no responda, con lo
que perdería los cambios efectuados desde la última vez que los guardó.

Finalmente, la ficha Avanzada establece algunas opciones que son importantes y que sólo
debe establecer si realmente entiende su significado.

La opción Cargar el proyecto en segundo plano se utiliza para proyectos en los que
existen un gran número de archivos. Con esta opción Visual Basic devuelve el control al
programador de una forma más rápida, sin esperar que se carguen todos los archivos.

En la ficha propiedades del menú Proyecto podrá modificar la configuración que afecta
al proyecto actual. Así, podrá indicar cuál debe ser el Objeto inicial de la aplicación (formulario
inicial), el nombre del proyecto, el archivo de ayuda que tenga asociada si has creado alguno,
etc.

PAG. 14
Microsoft Visual Basic 6.0

1.6. TIEMPOS DE DESARROLLO

O tro aspecto que se va a tratar antes de iniciar los conceptos propios de programación
se refiere a los diferentes tiempos en los que trabaja un programador de Visual Basic.

Cuando usted desarrolla el proyecto utilizado formularios, agregando controles,


estableciendo propiedades o escribiendo códigos, estará en tiempo de diseño.

En tiempo de diseño el entorno de programación de Visual Basic está a su disposición, las


distintas ventanas y menús pueden ser utilizados para diseñar su aplicación

Cuando usted pulse el botón Iniciar o elige la opción equivalente del menú Ejecutar, se
traslada al tiempo de ejecución, en el que interactúa con la aplicación del mismo modo que lo
hará el usuario final. Este modo le permite comprobar el resultado de su esfuerzo de desarrollo.

Debe distinguir, en este tipo de ejecución, las ventanas que corresponden a la aplicación
que está creando y la ventana propia de Visual Basic, que sigue situada en la parte superior de la
pantalla. En ocasiones esta ventana no estará visible ya que puede que alguno de los formularios
de su aplicación estén maximizados, ocupando toda la pantalla.

Cuando está en tiempo de ejecución y pulsa el botón Interrumpir entra en el llamado


tiempo de interrumpir. En este tiempo realizará operaciones de cara a la depuración de la
aplicación.

1.7. EL SISTEMA DE AYUDA

E l lenguaje de programación de Visual Basic se compone de un gran número de


instrucciones y funciones que utilizará a medida que vaya programando aplicaciones,
además del número de propiedades, eventos y métodos aplicables sobre formularios y controles.

Por ello, Visual Basic incorpora un potente sistema de ayuda al que podrá acudir en caso
de necesitar información sobre cualquier situación que le surja en su trabajo.

Este sistema de ayuda forma parte del MSDN (Microsoft Developer Network). MSDN es
la referencia esencial para programadores que utilizan las herramientas de desarrollo de
Microsoft. Incluye más de 1 GB de información de programación técnica, código de ejemplos,
etc.

Esta versión de MSDN Library de genera mediante el sistema de Ayuda HTML de


Microsoft. Los archivos de Ayuda HTML se muestran en una ventana semejante a un
explorador, en una ventana de Ayuda de tres paneles.

El panel de exploración se basa en cuatro fichas: Contenido, Índice, Buscar y Favoritos.


Las cuatro fichas permite encontrar la misma información, aunque la búsqueda se realiza de
distinta forma en cada una de ellas.

PAG. 15
Visual Basic 6.0 Microsoft

En la ficha Contenido los temas de búsqueda se muestran en forma de libros. La forma de


abrir un libro y acceder a la información que contiene es haciendo doble clic sobre el mismo o
pulsando el botón Mostrar al tenerlo seleccionado.

Cuando abra un determinado tema representado gráficamente por un libro, puede


encontrar de nuevo más libros u hoja de información inmediata. En el primer caso, podrá volver a
abrir el libro que representa un subtema, mientras que en el segundo, al abrir la hoja, la
información requerida se le mostrará directamente en pantalla.

La ficha Índice permite un acceso más rápido a la información buscada, eso sí, con la
condición de que sea usted quien aporte una información más concreta sobre el tema de búsqueda.

En este caso los temas de ayuda se sitúan en una lista ordenada alfabéticamente y que
aparece en la parte inferior de la ventana. Usted podrá elegir un tema de la lista o escribirlo en la
parte superior. Si existe más de un tema de ayuda relacionado con el texto que ha introducido o
elegido en la lista, aparecerá una nueva ventana en la que deberá elegir el tema concreto.

En muchas hojas de información podrá encontrar los llamados Hipervínculos. La forma


de identificar un acceso de ese tipo es mediante el color azul y subrayado de su texto. Si hace clic
sobre un determinado acceso aparecerá información sobre el mismo de forma que la búsqueda de
un tema original desencadena la obtención de información sobre otros temas distintos, navegando
en el sistema de ayuda.

La ficha Buscar es similar a la ficha Índice ya que tiene que teclear el tema sobre el que
desea información. Sin embargo, permite una búsqueda más amplia al poder introducir varias
palabras o incluso frases completas. El resultado de la búsqueda se amplía a todos los temas que
puedan estar relacionados con alguna de las palabras introducidas.

Una búsqueda básica de temas se compone de la palabra o frase que desea encontrar.
Puede utilizar expresiones comodín, expresiones anidadas, operadores booleanos, coincidencias
de palabras similares, la lista de resultados anterior o títulos de temas para afinar la búsqueda.

Sin embargo, el uso más frecuente que hará del sistema de ayuda será a través de la tecla
F1. Si desea información sobre alguna propiedad, método, instrucción del lenguaje, etc., la forma
más rápida y cómoda de conseguirla es situar el cursor en dicha palabra y pulsar la tecla F1.

PAG. 16
Microsoft Visual Basic 6.0

Programación en Visual Basic

2.1. ESTRUCTURA DEL CÓDIGO

E l código que escribe en un proyecto de Visual Basic aparecerá siempre en un módulo.


Un módulo es un archivo del proyecto pudiendo ser un módulo de formulario, de
clase o módulo de carácter general.

En cada módulo, el código se divide en dos secciones: declaraciones y procedimientos.

Los procedimientos son unidades de código, como pequeños programas, escritos para
realizar funciones determinadas, con un propósito bien definido.

En cualquier módulo, el programador dispone de una sección especial llamada General en


la que sitúan las declaraciones y en la puede incluir otros procedimientos creados por usted.

En el apartado de declaraciones podrá introducir las constantes, variables y tipo de datos


que necesite en su aplicación. (Todos estos conceptos serán tratados a lo largo del curso).

PAG. 17
Visual Basic 6.0 Microsoft

Los procedimientos pueden tener parámetros, especificados entre paréntesis, que le


permite comunicar al procedimiento alguna información que necesite o que sea el propio
procedimiento quien devuelva algún valor, como ya veremos

En un módulo de formulario el código que se sitúa se refiere tanto a dicho formulario


como al resto de objetos que estén dibujados en él. En este tipo de módulos cabe destacar los
procedimientos de evento que se encarga de dar respuesta programada a los eventos que ocurren
en la aplicación.

Si ha escrito código para algún procedimiento de evento, éste aparece en negrita en la lista
Procedimiento: de la ventana de código.

Por otra parte, el código de carácter general o que desea compartir en más de un proyecto,
se sitúa en un módulo general de Visual Basic. El código que aparece en este tipo de módulo no
se relaciona con un objeto determinado sino que tiene carácter general. En los módulos generales
no podrá incluir procedimientos de eventos como en el caso de los módulos de formulario

Por otra parte, es conveniente añadir comentarios a las líneas de código que escriba. De
esta forma podrá entender sus programas aunque haga tiempo que los escribió. Para añadir un
comentario en una línea utilice el carácter (apostrofe) Al introducir este carácter en una línea,
Visual Basic entiende todo lo que le sigue en dicha línea es un comentario y no lo tiene en cuenta.

2.2. OBJETOS EN VISUAL BASIC

A partir de ahora deberá acostumbrarse a oír hablar de objetos si no es así. Aunque


Visual Basic no presenta todas las características de un lenguaje orientado a un
objeto, usted trabajará con objetos al crear la interfaz de su aplicación.

En este sentido debe entender un objeto como todo elemento o entidad que puede
identificar en su ampliación. Desde un formulario hasta una línea gráfica que dibuje, pasando por
la propia aplicación que también es considerada como un objeto. Un objeto en Visual Basic se
caracteriza por tres componentes: propiedades, métodos y eventos.

Las propiedades son aquellas características o tributos que permiten establecer el aspecto
de un objeto como el color, el tamaño, la posición en pantalla, etc., o el estado del mismo: activo,
deshabilitado, maximizado, etc. Existen propiedades que sólo están disponibles en tiempo de
diseco, otras sólo están disponibles o son sólo lectura en tiempo de ejecución.

Los métodos son pequeños programas que actúan sobre un determinado objeto y que
establecen su comportamiento. Así un objeto puede moverse, ocultarse, etc. Usted podrá utilizar
cualquier método que forme parte del objeto.

Finalmente, un evento es una situación que nos interesa identificar para establecer algún
tipo de respuesta por parte del objeto. Así, podría hacer clic sobre un determinado objeto, creando,
de esta forma, un evento reconocible por el objeto. Que suceda algo o no como respuesta a este
evento dependerá de que haya programado alguna acción en el correspondiente procedimiento del
evento.

PAG. 18
Microsoft Visual Basic 6.0

2.3. ESTABLECER PROPIEDADES

C uando dibuje objetos en sus formularios deseará establecer alguna de las propiedades
que presenten. Dicha propiedades son aquellas características, propias del objeto, que
hacen que se distinga un objeto de otro. En este capítulo se le presentan algunas propiedades,
utilizando el caso de un formulario.

En una aplicación Windows podemos distinguir diversos tipos de ventanas, aunque lo


normal es identificar una ventana inicial que se puede maximizar o minimizar y uno o más
cuadro de diálogo cuyo tamaño suele ser fijo. Sin embargo, debe darse cuenta que, por ejemplo,
las barras de herramientas también son ventanas de una aplicación.

Normalmente, la ventana inicial o de arranque será la que presenta el menú principal,


formado por menús desplegables en uno o más de un nivel. El resto de ventanas no deberían
contener menús desplegable, aunque puede darse el caso de que así sea.

A continuación estudiaremos algunas propiedades de los formularios. Las propiedades que


puede establecer en tiempo de diseco se sitúan en la barra de Propiedades.

• BordesStule: establece el estilo del borde del formulario. Puede indicar que sea un
formulario dimensionable o al estilo de los cuadros de diálogo, que no cambie de
tamaño.
• Caption: establecer el texto que aparece en la barra de título del formulario.
• ControlBox: permite mostrar o no el menú de control de las ventanas de Windows.
Desde este menús podrá cerrar, mover, etc., la ventana
• Enabled: establece si el formulario puede o no responder a los eventos que genere el
usuario.
• Font: establece las características de los objetos de texto que se sitúen en el
formulario.
• Icon: permite cambiar el icono que representa el formulario y que está situado en la
parte izquierda de la barra de título.
• Left, Top, Height y Width: establece la posición en pantalla dl formulario, así como
sus dimensiones. Left es la coordenada x, Top la coordenada y, Height la altura y
Width la anchura.
• MaxButton y MinButton: Permiten indicar si se deben mostrar o no los botones
maximizar y minimizar, respectivamente. Tenga en cuenta que existen estilos de
bordes de formulario (establecidos con la propiedad BorderStyle) que impide que se
muestren los botones, independientemente del valor de las propiedades MaxButton y
MinButton.
• MousePointer: permite modificar la forma del puntero del ratón.
• Nombre: nombre identificativo del formulario. Deberá utilizar este nombre en el
código para referirse al formulario. La convención de nombre puede verse final de
este capítulo.
• Visible: establece si el formulario se mostrará visible o no en tiempo de ejecución. El
mostrarse no visible, no implica que se descargue de memoria.

PAG. 19
Visual Basic 6.0 Microsoft

• WindwState: establece el modo en el que se cargará inicialmente el formulario.


Puede ser normal, es decir, como haya sido creado en tiempo de diseco, maximizado
o minimizado.

Todas estas propiedades y muchas más están disponibles, en tiempo de diseco, a través de
la ventana Propiedades.

La forma de establecer el valor de una propiedad depende de su naturaleza. Existen


propiedades de valor numérico en las que simplemente se introduce el valor deseado; propiedades
de carácter textual, en las que tendrá que introducir el texto; propiedades en las que tendrá que
especificar un determinado archivo; propiedades compuestas en las que el valor está compuesto
por más de una característica y propiedades booleanas, en las que sólo puede existir dos valores:
True (verdadero) o False (falso).

Además, en tiempo de ejecución, también puede cambiar o consultar el valor de algunas


propiedades que sólo tiene sentido en ese tiempo de desarrollo.

Al escribir código, las formas de establecer una propiedad o de poder consultarla es a


través de la sintaxis: NombreObjeto.NombrePropiedad.Recuerde introducir el punto (.) entre
los dos nombres.

CONVENCIÓN PARA NOMBRAR OBJETOS DE VISUAL BASIC


A continuación se mostrará una convención, indicada por Microsoft, para nombrar los
distintos objetos que cree en su aplicación, es decir, los formularios y controles.

Esta convención se basa en la inserción de un prefijo identificado de la naturaleza del


objeto, junto al nombre descriptivo del mismo. El prefijo será de tres letras en todos los casos.
Indicamos el nombre del objeto tanto en inglés como en español.

Objetos (Ingles) Objetos (Español) Prefijo

Form Formulario frm

Check box Casilla de verificación chk

Combo box Cuadro combinado cbo

Dat-bound combo box Cuadro combinado


enlazado a datos dbc

Command button Botón de comando cmd

Data Control de datos dat

Directory list box Cuadro lista de directorios dir

PAG. 20
Microsoft Visual Basic 6.0

Drive list box Cuadro lista de unidades div

File list box Cuadro lista de archivos fil

Frame Marco frm

Grid Cuadrícula grd

Data-bound grid Cuadricula enlazada a datos dbg

Horizontal scroll bar Barra de desplazamiento hsb


Horizontal

Image Imagen img

Label Etiqueta lbl

Line Línea lin

List box Cuadro de lista lst

Data-bound list box Cuadro de lista


enlazada datos dbl

Menu Menú mnu

OLE container Contenedor OLE ole

Option button Botón de opción opt

Piture box Cuadro de imagen pic

Shape Forma shp

Text box Cuadro de texto txt

Timer Temporizador tmr

Vertical scroll bar Barra de desplazamiento vsb


Vertical

PAG. 21
Visual Basic 6.0 Microsoft

2.4. UTILIZAR MÉTODOS

E n este capítulo se le introduce el concepto d método, mostrándolo a partir también del


objeto formulario.

Una vez ha establecido la parte estructural del formulario, es decir, sus propiedades,
puede pasar a programar el comportamiento que debe seguir, de forma que cumpla con el
objetivo para el que fue creado, utilizado métodos.

Un método es un componente más del objeto, como lo puede ser una propiedad, que
puede ser utilizado directamente. Para ello deberá llamar al método e indicarle sobre qué objeto
desea aplicarlo, que deberá admitirlo.

La sintaxis en este caso es: NombreObjeto. NombreMétodo [par1, , parn], donde la


lista de parámetros [par1, ,parn] es opcional y depende de cada método.

Como puede observar, es la misma sintaxis empleada para acceder a una propiedad. Visual
Basic determina lo que quiere hacer a través del nombre que introduzca detrás del punto.
Observe, además, que no existen paréntesis para la lista de parámetros.

Veámoslo con un ejemplo: el método más utilizado sobre un formulario es Show. Este
método permite hacer visible un formulario en pantalla. Si el formulario no está cargado en
memoria lo carga automáticamente y lo muestra.

Si desea mostrar el formulario frmPrincipal la sintaxis correcta seria:

FrmPrincipal.Show i
donde el parámetro de la i indica la forma en que se muestra el formulario: con valor 0, el
formulario es no modal, es decir, el enfoque puede pasar a otro objeto sin necesidad de realizar
alguna acción sobre el formulario.

En caso de tener valor 1, será necesario realizar alguna acción sobre el formulario
(seguramente tendrá que cerrarlo) para que el enfoque pueda pasar a otra ventana de la aplicación.

El número de métodos disponibles es realmente elevado y sensible al objeto sobre el que


puede ser aplicado. A lo largo del curso irá conociendo los más interesantes, pero le
recomendamos que utilice el sistema de Ayuda de Visual Basic para conocer más posibilidades.

PAG. 22
Microsoft Visual Basic 6.0

2.5. EXTENDER LOS EVENTOS

E l tercer componente de un objeto es el conjunto de eventos que reconoce. Este


conjunto de eventos está predefinido en el lenguaje de Visual Basic y usted no podrá
crear nuevos eventos para objetos. De todas formas el conjunto es lo suficientemente amplio.

El conjunto de eventos reconocible por un objeto está fuertemente ligado con los
procedimientos de evento. Estos procedimientos son unidades de código que le permite
especificar la respuesta que debe dar un objeto ante la ocurrencia de un evento que puede
reconocer.

La definición de un procedimiento de evento tiene la forma:

PrivateSubNombreObjeto_NombreEvento([Listade parámetros])
<Introducción>

EndSub

La palabra Private indica que el procedimiento sólo está visible en el módulo actual, en
contraposición a lo que indica Public. Fíjese cono la lista de parámetros puede ser opcional, pero
no así los paréntesis.

GUARDAR UN PROYECTO EN DISCO

Al guardar un proyecto nuevo tendrá que dar nombre tanto al archivo de los formularios
que lo compongan, como el de proyecto. Recuerde que los distintos formularios y módulos que
cree se guardan en ficheros independientes.

Es conveniente crear una carpeta para guardar los distintos ficheros que vaya creando en
su proyecto de Visual Basic, para tenerlos siempre localizados.

Utilice la opción Guardar proyecto del menú Archivo o el botón equivalente de la barra de
herramientas .Al guardar el proyecto también se guardarán los formularios del mismo.

PAG. 23
Visual Basic 6.0 Microsoft

PAG. 24
Microsoft Visual Basic 6.0

Trabajar con Menús

3.1. EL EDITOR MENÚS

U na de las formas más elegantes de poner un gran número de comandos en la ventana


del usuario es a través del uso de menús.

Usted habrá identificado en la mayoría de aplicaciones de Windows un menú principal en


la ventana inicial de la aplicación y otros menús, como puedan ser los contextuales, en una o más
ventanas.

Al usar menús está evitando ocupar mucho espacio en las ventanas ya que estos sólo
aparecen cuando se despliegan explícitamente. Además, puede crear hasta cinco niveles de
menús, por lo que el número, por lo que el número de comandos y posibilidades es
suficientemente amplio.

En Visual Basic se trabaja con el Editor de menús para crear, establecer propiedades y
modificar los menús. Par acceder a este editor deberá pulsar el botón en la barra de herramientas
o elegir el comando equivalente del menús Herramientas.

Este botón sólo estará activo cuando tenga abierto un formulario, ya que en menú siempre
estará asociado con un determinado formulario.

El editor de menús presenta las principales propiedades que se pueden aplicar sobre los
menús.

PAG. 25
Visual Basic 6.0 Microsoft

• Caption: representa el texto que aparecerá en el menús. En este sentido debe


distinguir entre lo que es un título de menú, o el menú de nivel superior, y lo que es
un elemento de menú o submenús.

Fíjese en la figura anterior. Existe en menú principal en el que se sitúan los títulos de
menú. Uno de estos títulos de menú es Formato.

Al desplegar el menú Formato aparecen elementos de menú, incluidos los separadores.


Uno de estos elementos de menú es Fila.

Además, el elemento Fila actúa como un submenú ya que al posicionarse en esta opción se
vuelve a desplegar otro menú, con más elementos de menú, entre los que se encuentra Mostrar.
Fíjese como un elemento de menú puede actuar al mismo tiempo como submenú ( o título de otro
menú)

• Name: es el nombre del control. La estrategia a seguir en este caso puede ser la de
anteponer el prefijo mnu más el texto del título, si es un título de menú. En el caso de ser
un elemento del menú, debería incluir también el texto de su título de menú.
• Cheeckd: establece si debe aparecer una marca de verificación a la izquierda del texto del
objeto menú. Esta marca suele utilizarse cuando desea informar al usuario de la opción
que está activa en un momento determinado.
• Enabled: indica si el objeto podrá recibir eventos del usuario. Si tiene el valor False, el
elemento aparecerá atenuado en el menú.
• Visible: indica si el objeto debe mostrarse o no. Si establece el valor False para esta
propiedad, los elementos situados a la derecha ocupan el lugar del elemento no visible.
• WindowsList: Devuelve o establece un valor que determina si un objeto menú mantiene
una lista de las ventanas MDI secundarias del formulario actual. Los formularios MDI son
tratados en una lección posterior.

Las propiedades Enabled y Visible pueden tomar valor en tiempo de diseño o modificarlos
en tiempo de ejecución. Por ejemplo, si desea que no aparezcan títulos de un menú principal ( y
sus elementos) debido a las circunstancias del momento, puede utilizar la propiedad Visible para
ello.

Un ejemplo de está última circunstancia puede encontrarlo en Word o Excel donde el


menú principal cambia cuando no existen ningún documento abierto.

3.2. ELEMENTOS DE MENÚ

U tilizando los botones de sangría determinará el nivel del objeto menú que tenga
seleccionado. Así, los títulos de menú se sitúan en el nivel superior, mostrándose en
la lista inferior del editor de menús, lo más a la izquierda posible.

Al pulsar el botón más sangría el nuevo objeto menú se sitúa en un nivel


inferior. Lo contrario ocurre al pulsar .

PAG. 26
Microsoft Visual Basic 6.0

Por otra parte, es una técnica extendida en Windows la presencia de puntos suspensivos
(…) en el texto del elemento para indicar que dicho elemento origina la aparición de un cuadro de
diálogo donde podrá especificar opciones o introducir datos necesarios. Puede observar esta
situación en cualquier aplicación Windows.

En muchas aplicaciones Windows habrá podido observar la existencia de una barra


horizontal en los menús desplegables que realiza la función de dividir en secciones dichos menús.
Este elemento es conocido en Visual Basic como un separador y su uso más común es el de
separar aquellos comandos del menú que tengan un motivo común.

Para crear un separador en un menú lo único que debe hacer es introducir un guión (-) en
la propiedad Caption. Debe saber que no podrá crear un elemento en un nivel inferior (mayor
sangría) inmediatamente después de un separador. Es decir, un elemento de menú no podrá tener
como título de menú a un separador, ya que no tiene sentido que al pasar por un separador se
despliegue otro menú.

Además con los botones puede mover de posición elementos de menú


que ya haya creado. Finalmente si desea insertar un nuevo elemento, utilice el botón Insertar. El
nuevo elemento se situará encima del elemento que tenga seleccionado.

PAG. 27
Visual Basic 6.0 Microsoft

3.3. TECLAS DE MÉTODO ABREVIADO

Al introducir el carácter & (ampersand) en el texto de un objeto menú, está creando una
tecla de acceso a dicho objeto. Esta tecla se representa subrayada en el texto del
menú y representa la tecla del tecleado que el usuario puede pulsar para ejecutar la acción.

Dicha tecla se corresponde con la letra que sigue al & en la propiedad Caption del objeto
menú.

Si se trata de un título menú deberá usar la tecla de acceso en combinación con la tecla
[Alt]. Una vez abierto un título de menú y desplegado sus elementos, para acceder rápidamente a
un de ellos, puede usar la tecla de acceso directamente.

Debe tener cuidado en no utilizar la misma tecla de acceso para elementos de un mismo
nivel de menú ya que en ese caso no funcionará.

El editor de menú también permite la incorporación de teclas de método abreviado. Las


abreviaturas de menú son combinaciones de teclas que el usuario puede utilizar en lugar de elegir
el elemento del menú correspondiente.

Por ejemplo, es típico que la tecla de función F1 muestre el sistema de ayuda de la


aplicación o que los comandos Cortar, Copiar y Pegar tengan su propia combinación de teclas.
Estas combinaciones permiten rápido acceso a dicho comando, sobre todo si estos se encuentra en
un nivel profundo de menú.

Para crear una tecla de método abreviado deberá utilizar la propiedad Shortcut, a la que
puede acceder al crear el menú desde el Editor de menús.

En este editor aparece una lista de


selección con las combinaciones de teclas
que puede elegir para crear la tecla de
método abreviado. Normalmente este
shortcut o atajo será una combinación de las
teclas [Alt] o [Ctrl] con alguna tecla más o
directamente las teclas de función.

PAG. 28
Microsoft Visual Basic 6.0

3.4. EVENTOS DE MENÚ

C
del menú.
uando en tiempo de diseño selecciona una opción de menú de un formulario que está
creando, Visual Basic le muestra el procedimiento de evento Click de dicho elemento

En el caso de un título de menú (nivel superior) el procedimiento Click tiene como acción
predeterminada la de mostrar los elementos de menú del nivel inferior, por lo que no será
necesario tener que programar esta acción. Esto también es aplicable a los elementos de un menú
que son, a su vez, títulos de submenús.

Si desea realizar otras acciones en los eventos de aquellos objetos que actúan como títulos
de menú, deberá utilizar la ventana de código y elegirlos de la lista.

En la mayoría de ocasiones deberá utilizar una opción del menú para descargar el
formulario y si es la ventana principal de la aplicación, como suele ser el caso, finalizar la
aplicación. Una opción de texto Salir suele ser lo más apropiado.

La instrucción Unload descarga de memoria el formulario que especificamos. Puede


especificar el formulario que desea descargar o utilizar la constante Me (la instrucción quedaría de
la Forma Unload Me). La constante Me es propia del lenguaje Visual Basic y representa el
formulario al que está asociado el menú.

Es una regla elegante de escritura de código el uso de tabulaciones o niveles de sangrado


indicando estructuración del código. Acostúmbrese a ello en sus aplicaciones, le facilitará la
lectura de sus programas.

NOTA: Un este curso no será necesario que realice estos niveles de sangrado si no se le indica
expresamente mediante la tecla [Tab] para mayor sangría o [Mayús+Tab] para menos sangría, ya
que la simulación ya los creará por sí misma.

3.5. MENÚS CONTEXTUALES

S i es un usuario experimentado de aplicaciones Windows seguro que habrá utilizado en


alguna ocasión lo que se llama un menú contextual.

Estos menús aparecen cuando hacemos clic con el botón secundario (normalmente el
derecho) del ratón sobre un determinado objeto y suelen presentar opciones que se corresponden
con las acciones más usuales que se realizan con dicho objeto.

A diferencia del menú que ha creado en los capítulos anteriores, un menú contextual puede
aparecer en cualquier ventana de su aplicación.

PAG. 29
Visual Basic 6.0 Microsoft

Sin embargo, no debe pensar que un menú contextual se asocia con un determinado objeto
situado en un formulario. Un menú contextual es exactamente igual que un menú desplegable, por
lo que estará asociado a un determinado formulario.

Para mostrar un menú contextual deberá usar el método PopupMenu del formulario
donde lo haya creado. La sintaxis completa es:

[objeto].PopupMenu NombreMenú [, indicadores [, x [, y [, boldcommand]]]]

donde los corchetes [ ]especifican parámetros opcionales. Si no especifica el objeto sobre


el que se aplica el método, Visual Basic entenderá que es sobre el formulario actual.

Normalmente la aparición de un menú contextual sucede en el evento MouseUp del objeto


al que se quiere asociar el menú. Este evento representa el momento en el que el usuario suelta el
botón del ratón estando encima de dicho objeto.

A diferencia de MouseUp, el evento MouseDown representa el momento en el que el


botón del ratón es pulsado. El evento click es la combinación de estos dos eventos, por lo que
siempre que se produce un evento Click se han producido también los eventos MouseDown y
MouseUp.

Tanto MouseDown como MouseUp permiten comprobar qué botón ha sido pulsado. Esto
se consigue gracias al parámetro Button de su procedimiento evento.

Consultando el valor de dicho parámetro, usted podrá saber cuál ha sido el botón del ratón
pulsado. El siguiente código, situado en un procedimiento del evento MouseUp, ilustra esta
situación:

If Button=2 Then
PopupMenumnuArchivo
End If

Aunque todavía no se han explicado estructuras de programación como If-Then-Else debe


entender que esta estructura permite realizar acciones dependientes de un determinado valor. En
este caso se muestra el menú contextual mnuArchivo al pulsar con el botón derecho situación
representada al tener parámetro Button el valor2.

Fíjese como si necesita diferenciar con qué botón del ratón ha pulsado el Usuario para
realizar alguna acción deberá utilizarlos eventos MouseDown o MotiscUp ya que el evento Click
no lo permite al no tener el parámetro Button.

PAG. 30
Microsoft Visual Basic 6.0

3.6. OPCIONES DE MENÚ CONTEXTUAL

E l hecho de tener siempre asociado un menú contextual (y cualquier otro menú) con un
determinado formulario, no impide que el menú contextual aparezca cuando se pulsa
sobre uno de los controles situados e en el formulario. Además, puede indicar la ubicación exacta
del menú contextual

Recordemos la sintaxis completa del método PopupMenu:

[objeto].PopupMenu NombreMenú [, indicadores [, x [, y [, boldcommand]]]]

El parámetro indicadores se encarga de definir la ubicación respecto de las coordenadas x


e y también introducidas y el comportamiento del menú contextual.

Los valores que puede tomar este parámetro respecto a la posición del menú son:

• vbPopupMenuLeftAlign (valor0): valor predeterminado que indica que el lado izquierdo


del menú viene dado por el valor x.
• vbPopupMenuCenterAlign (valor 4): en este caso el menú contextual se centra respecto
a x.
• vbPopupMenuRightAlign (valor8): el lado derecho del menú se sitúa en x.

Los valores que puede tomar respecto al comportamiento a seguir:

• vbPopupMenuLeftButton (valor 0): los elementos del menú contextual sólo reaccionan
a los clic del ratón cuando se use el botón primario del ratón. Este es el valor
predeterminado.

• VbPopupMenuRighButton (valor 2): los elementos del menú contextual reaccionan a


los clic del ratón cuando se usen los botones primarios o secundarios.

En definitiva la instrucción:
FrmPrincipal.PopupMenu mnuArchivo, vbPopuMenu Center Align (o su
equivalente frmPrincipal.PompupMenuArchivo, 4), indica que se muestre el menú mnuArchivo,
centrado respecto a la coordenada x del punto donde se pulse (si no se establece el valor de los
parámetros x e y dichos valores serán donde pulse el usuario con el ratón). Los elementos del
menú deberán ser seleccionados con el ratón (valor predeterminado).

Si desea utilizar más de una constante en el parámetro indicadores, deberá sumar el valor
de cada una de estás. Por ejemplo el valor 6 sería fruto de utilizar las constantes
vbPopupMenuCenterAling (4) y vbPopupMenuRigtbutton (2).

PAG. 31
Visual Basic 6.0 Microsoft

El parámetro boldcommand o negrita establece qué comando del menú emergente


aparecerá en negrita. Esta característica es propia de Windows y se suele aplicar para aquellos
comandos que tienen el mismo efecto que hacer doble clic sobre el objeto pulsado para mostrar el
menú.

No es necesario introducir todos los parámetros opcionales que se muestran en la sintaxis


completa de métodos, pero tendrá que mantener la misma posición que en la declaración del
método para poder indicar un parámetro situado más a la derecha.

En el siguiente caso se indica que sea el elemento mnu


ArchivoSalir el que aparece en negrita:

PopupMenu mnuArchivo,,,,mnuArchivoSalir

Para ser coherente con la interfaz de Windows deberá programar la misma acción de salir
al hacer doble clic en el objeto donde haya introducido está instrucción.

PAG. 32
Microsoft Visual Basic 6.0

Cuadro de Diálogo

4.1. INTRODUCCÓN

E n la mayoría de aplicaciones Windows el usuario hace uso de los cuadros de diálogo


para establecer opciones o introducir información que la aplicación necesita para
realizar la acción indicada por el usuario. De ahí el nombre de esta ventana, ya que establece un
“diálogo” entre el usuario y la aplicación para conseguir el objeto perseguido.

Otro uso posible de los cuadros de diálogo es presentar información al usuario. El usuario
puede demandar detalles sobre algún aspecto de la aplicación (por ejemplo el cuadro de diálogo
Acerca de que aparece en la mayoría de aplicaciones) o haber pedido la realización de un
determinado proceso que implica mostrar el resultado en pantalla.

Los cuadros de diálogo se caracterizan, a diferencia de las ventanas principales de la


aplicación, por ser modales y no permitir cambiar el tamaño de la ventana, además, no deberían
tener una barra de menús desplegable.

En definitiva, un cuadro de diálogo es un formulario más de su proyecto de programación


de Visual Basic en el que ha establecido ciertos valores en algunas de sus propiedades, para que
tenga el aspecto y se comporte como tal.

En Visual Basic podrá crear tres tipos de cuadros de diálogo: personalizados,


predefinidos y a través del control Diálogo Común. Cada uno de estos tipos son estudiados en
esta lección.

4.2. CUADROS PREDEFINIDOS

V isual Basic incorpora dos funciones en su lenguaje que le permite agregar cuadros de
diálogo a sus aplicaciones de una forma rápida y sencilla, ya que no tiene que
preocuparse de su diseño, de la carga o cómo es mostrado el cuadro de diálogo.

En contra partida, usted tendrá poco control sobre la apariencia del cuadro de diálogo que ,
por otra parte, será siempre modal.

Recuerde que un formulario es modal cuando se tiene que cerrar (ocultar o descargar)
dicho formulario para que el foco de la aplicación pase a otro formulario. Sin embargo, en un
formulario no modal, el foco puede pasar a otro formulario sin necesidad de realizar ninguna
acción en él.

En una lección anterior usted ya utilizó un cuadro de diálogo predefinido al hacer uso de la
función MsgBox. Ahora completaremos la información que necesita conocer sobre dicha función.

La sintaxis completa d la función MsgBox es:

PAG. 33
Visual Basic 6.0 Microsoft

MsgBox(mensaje[,botones] [,título] [,archivoAyuda, contexto])

En esta tabla se muestran los valores que puede tomar el parámetro botones:

Constante Valor Descripción

VbOKCancel 0 Muestra solamente el botón aceptar.

VbOKCancel 1 Botones Aceptar y Cancelar.

VbAbortRetryIgnore 2 Botones Anular, Reintentar e Ignorar

VbYesNoCancel 3 Botones Si, No y Cancelar.

VbYesNo 4 Botones Sí y No

VbRetryCancel 5 Botones Reintentar y Cancelar

VbCitrical 16 Muestra el icono de mensaje crítico.

VbQuestion 32 Icono de interrogación.

VbExclamation 48 Icono de exclamación.

VbInformation 64 Icono de mensaje de información.

VbApplicationModal 0 Cuadro de diálogo modal de


aplicación.

VbSystemModal 4096 Cuadro de diálogo modal de sistemas.

El parámetro botones es de valor numérico y, además de los botones que aparecen en el


cuadro de diálogo, también podrá indicar el icono que acompañe al mensaje (que debe aparecer
entre comillas) y el tipo de cuadro de diálogo modal que es.

Si se fija, existen dos tipos de cuadro modales: modal de aplicación y modal de sistema.

Cuando un cuadro de diálogo es modal de aplicación, deberá cerrarlo para poder


interactuar con otra ventana de la misma aplicación. Sin embargo, podrá cambiar de aplicación
utilizando algunos de los métodos de Windows. Este tipo de cuadros de diálogo son los más
usuales.

PAG. 34
Microsoft Visual Basic 6.0

Cuando un cuadro de diálogo es modal de sistema, todas las aplicaciones que estén
ejecutándose se suspenden hasta que el usuario responda al cuadro de diálogo y, en definitiva, lo
cierre. Este tipo de cuadros de diálogo sólo tiene sentido en situaciones donde el mensaje que
muestran es crítico para el sistema.

Otro parámetro útil de la función MsgBox es el título de dicho cuadro de diálogo. Si no se


establece, Visual Basic utilizará el nombre del proyecto como título de la ventana.

El otro cuadro de diálogo predefinido que presenta Visual Basic, se consigue a través de la
función InputBox. Esta función se utiliza cuando necesita que el usuario introduzca alguna
información. Como toda función devuelve el valor, que en este caso de un será la cadena
introducida por el usuario. En el caso de un MsgBox la única información que podrá obtener será
qué botón ha pulsado el usuario para cerrarlo.

La sintaxis correcta es:

InputBox(mensaje[, título] [, estándar] [, posx] [, posy] [, archivoAyuda,


contexto])

donde, aparte del mensaje que aparece en el cuadro de diálogo, puede indicar el título de
éste y la cadena que devolverá la función si no se escribe ninguna. También puede indicar la
posición en la pantalla del cuadro de diálogo.

La forma lógica de llamar a esta función será en un expresión de asignación, es decir,


recogiendo el valor que introduzca el usuario.

NOTA: Si no conoce el concepto de función, podrá encontrarlo, así como la forma de


llamarlas en código, en la lección Fundamentos de programación (III)

4.3. CONTROL DIÁLOGO COMÚN

U n objeto Diálogo Común nos permite mostrar cinco cuadros de diálogo estándar en
nuestra aplicación. Estos cuadros de diálogo se corresponden con los de Abrir,
Guardar como, Imprimir, Fuente y Color que de seguro ha utilizado en alguna aplicación
Windows.

Además, también podemos hacer uso del control diálogo común para invocar el motor de
Ayuda de Windows, de forma que pueda presentar el archivo de ayuda en línea de su aplicación.

Estos cuadros de diálogo tienen el mismo aspecto en la mayoría de aplicaciones de


Windows y funcionan de la misma forma. Para ello Visual Basic 6.0 incorpora el nuevo control de
diálogo común para que usted no tenga que diseñarlos.

PAG. 35
Visual Basic 6.0 Microsoft

Al crearse un objeto diálogo común, se sitúa en una posición y con un tamaño estándar. No
es necesario cambiarlo de posición ya que este control no se mostrará en tiempo de ejecución.

Un único objeto diálogo común nos puede servir para utilizar más de un cuadro de diálogo
estándar. Para ello, haremos uso de sus propiedades y utilizaremos el método apropiado en cada
situación, pero siempre sobre el mismo objeto.

En el caso, por ejemplo, de querer utilizar el cuadro de diálogo Guardar como:

Propiedades del objeto Diálogo Común:

• DialogTitle: texto que debe aparecer en la barra de título del cuadro de diálogo.
• DefaultExt: extensión con la que se guardará el nuevo archivo.
• Filter: indica qué tipos de archivos deben mostrarse en el cuadro de diálogo.

En el caso de la propiedad Filter, puede indicar que se muestre más de un tipo de archivos
en el cuadro de diálogo. Para ello utilice la sintaxis descripción1 ⏐ filtro1 ⏐descricción2 ⏐
filtro2…Por ejemplo, si desea que se todos los archivos de texto o todos los archivos de base de
datos mdb, la forma de indicarlo sería: “Archivo de texto⏐*.txt⏐Base de datos⏐*.mdb”. De esta
forma aparecerán dos opciones en la lista de tipo de archivo del cuadro de diálogo.

Método del objeto Diálogo Común:

ShowSve: muestra el cuadro de diálogo Guardar Como.

Cuando el usuario, utiliza el cuadro Guardar Como, introduzca un nombre e indique en


qué carpeta desea guardar el archivo, tendrá dos opciones: pulsar en Guardar, con lo que Visual
Basic facilitará al programa el nombre y ubicación del nuevo archivo que deberá crear o, pulsar en
Cancelar, con lo que se devuelve una cadena de texto vacía.

PAG. 36
Microsoft Visual Basic 6.0

Para utilizar otros cuadros de diálogo, deberá establecer las propiedades oportunas u
utilizar el método adecuado. A continuación se refieren los métodos disponibles.

• ShowOpen: cuadro de diálogo Abrir.


• ShowSave: cuadro de diálogo Guardar Como.
• ShowColor: cuadro de diálogo Color
• ShowFont: cuadro de diálogo Fuente.
• ShowPrinter: cuadro de diálogo Imprimir.
• ShowHelp: invoca la Ayuda de Windows.

Como puede ver, un objeto diálogo común también puede utilizar para llamar al motor de
ayuda de Windows y mostrar así la ayuda en línea de su propia aplicación. Para ello deberá haber
creado un fichero de ayuda compatible con Windows, aspecto éste que está fuera del propósito de
este curso.

En la figura línea de código se llama al motor de ayuda de Windows con un determinado


fichero de ayuda.

With CommonDialog1
.HelpFile = “C:\Vb\vb.hlp”
.HelpCommand = edlHelpContents
ShowHelp
EndWith

Fíjese cómo se establecen ciertas propiedades del cuadro de diálogo común y después se
llama al método ShowHelp para usarlo como motor de ayuda de Windows, a diferencia de
ShowSave que mostraba el cuadro de diálogo Guardar Como.

En este caso la propiedad HelpFile indica la ubicación y nombre del archivo de ayuda que
debe mostrarse. Finalmente la propiedad HelpCommand indica cómo debe aparecer, es decir, si
debe aparecer la ficha Contenido, Índice o Buscar. En este caso se mostrará la ficha Contenido.
Busque HelpCommand en el archivo de ayuda de Visual Basic para ver las opciones que tiene.

4.4. CUADROS PERSONALIZADOS

A lo largo de esta lección ha podido utilizar distintos cuadros de diálogo en su


aplicación sin crear ninguno de ellos

Aunque estos cuadros de diálogo son muy interesantes y permiten mostrar en pantalla
cuadros de diálogo apropiados en muchas situaciones, usted también tiene la posibilidad de crear
sus propios cuadros de diálogo.

PAG. 37
Visual Basic 6.0 Microsoft

Recuerde que, en definitiva, un cuadro de diálogo no es más que un formulario que debe
comportarse de una determinada forma y en el que deben de estar siempre presentes algunos
elementos.
Por lo tanto, crear cuadros de diálogo no es más un estilo de programación correcta en
Windows que un elemento del lenguaje que utilice para ello, excepto en el caso de utilizar cuadros
de diálogo incorporados en el propio lenguaje, como ha hecho en los anteriores capítulos.
Un cuadro de diálogo se caracteriza por tener el valor 3 –Fixed Dialog en la propiad
BorderStyle del formulario. De esta forma, el cuadro de diálogo no puede cambiar de tamaño ni
maximizar o minimizar.

Al elegir dicho valor para la propiedad BorderStyle, Visual Basic ya introduce el valor
False para la propiedad MaxButton y MinButton, que se refiere a la presencia de los botones
maximizar y minimizar, respectivamente.

Además todo cuadro de diálogo debe ser modal, por lo que deberá utilizar el método Show
con único parámetro establecido al valor 1

Cuando incorpore controles a los cuadros de diálogo, es posible que necesite cambiar el
tamaño del formulario. Para ello, simplemente debe arrastrar, en tiempo de diseño, los lados del
formulario, como una ventana Windows redimensionable.

Por otra parte, es muy importante establecer la propiedad BorderStyle para que no se
pueda cambiar el tamaño en tiempo de ejecución. Piense, por ejemplo, qué pasaría al maximizar
un cuadro de diálogo que tiene unos controles situados de forma simétrica respecto al tamaño
utilizado en tiempo de diseño.
TRABAJAR CON FORMULARIOS
En tiempo de ejecución, los formularios no se muestran en pantalla si no se especifica
explícitamente a través del código. Sólo en el caso del formulario inicial esto no es necesario ya
que el código inicial es justamente el contenido en dicho formulario, por lo que se muestra
automáticamente en pantalla al iniciar la ejecución.
Antes de mostrar un formulario en pantalla, debe cargarlo en memoria. Para ello existe la
instrucción Load. Así una línea de código del tipo Loag frmNombre hace en el formulario
frmNombre se cargue en memoria y tenga acceso, así, a todas sus propiedades y métodos.

Debe saber que al utilizar el método Show el formulario se carga en memoria si no lo


estaba ya. Visual Basic proporciona la instrucción Load para los casos en los que deseamos
acceder a algún elemento de algún elemento de un formulario sin que éste se muestre en pantalla.

Cuando no desee un formulario se muestre en pantalla tiene dos posibilidades: ocultarlo o


descargarlo.

Para ocultar un formulario se utiliza el método Hide del formulario, esto es equivalente a
establecer a False la propiedad Visible del formulario. Al utilizar el método Hide, el formulario
sigue cargado en memoria, por lo que se mantiene la posibilidad de acceder a sus propiedades.

Si lo que desea es descargarlo de memoria, liberando de esta forma todos los recursos que haya
utilizado, deberá hacer uso de la instrucción Unload.

PAG. 38
Microsoft Visual Basic 6.0

Controles básicos

5.1. INTRODUCCIÓN

L a primera fase en la creación de una aplicación con Visual Baste es la de diseñar la


interfaz de usuario de dicha aplicación. Esta Interfaz está constituida por el conjunto
de formularios que aparecen a lo largo de su ejecución.

A estas alturas del curso ya ha aprendido a crear formularios y a establecer las propiedades
más interesantes de éstos. En esta lección se estudian los controles, que son aquellos elementos
gráficos que aparecen en dichos formularios y que sirven para obtener datos y presentar la salida
que produce la aplicación.

Entre los numerosos controles que presenta Visual Basic, esta lección y la próxima
introduce aquellos que se consideran básicos y que aparecerán prácticamente en todas las
aplicaciones que cree con Visual Basic: etiquetas, cuadros de texto, botones de comando, etc.

Existen otros muchos controles e incluso controles personalizados que aparecen


independientemente de Visual Basic. Estos controles se encuentran en archivos separados, por lo
que deben ser incorporados a la caja de herramientas para poder utilizarlos.

Cada uno de estos controles son tratados como objetos en Visual Basic, por lo que no debe
olvidar que tendrán su propio conjunto de propiedades, métodos y eventos.

5.2. ENTRADA DE DATOS

D os controles muy relacionados y que se utilizan en la función de entrada de datos son


las etiquetas y los cuadros de texto.

Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tienen
la particularidad de que el usuario no puede modificar dicho texto (aunque el programador sí que
lo puede hacer en tiempo de ejecución). Podrá dibujar etiquetas en sus formularios a través del
control situado en la caja de herramientas.

Sin embargo, los cuadros de texto son el control estándar de entrada de datos en Visual
Basic. Su propósito es el de permitir al usuario introducir aquella información que necesita la
aplicación. El texto que introduzca está a disposición del usuario, pudiendo llegar a modificarlo.
El control de la caja de herramientas le permite dibujar cuadros de texto.

PAG. 39
Visual Basic 6.0 Microsoft

Entre las numerosas propiedades de un objeto etiqueta cabe destacar:

• Alignment: establece la alineación del texto de la etiqueta.


• Autosize: si tiene valor True, el tamaño de la etiqueta se adapta automáticamente a su
contenido.
• Caption: es el texto que se visualiza en la etiqueta.
• Enabled: permite o no interactuar con la etiqueta. Esta propiedad no se uti1iza mucho ya
que una etiqueta no puede recibir el foco. Si tiene valor False se mostrará en gris.
• Font: establece el estilo de la escritura, esto es, la fuente, tamaño y realces del texto que
aparece en la etiqueta.

Los cuadros de texto son semejantes a las etiquetas, pero con la diferencia que el usuario
puede modificar su contenido. El texto que se introduzca puede ser tanto numérico como
alfanumérico (números y letras).

A diferencia de una etiqueta, el tamaño del cuadro de texto es fijo al no permitir la


propiedad Autosize. Esto es lógico ya que un cuadro de texto suele estar pensado para introducir
datos de distinta longitud.

Las propiedades más interesantes de un cuadro de texto son las siguientes:

• Alignmet : alineación de la información introducida. Utilice alineación a la izquierda para


el texto y a la derecha para los números. También puede centrarla.
• CausesValidation: determina si el control desde el que ha cambiado el enfoque ativa su
evento validate.
• Enabled: permite o no que el usuario realice acciones sobre el cuadro de texto.
• Font: exactamente igual que en el caso de las etiquetas.
• Multiline: muy importante ya que permite introducir más de una línea de texto en el
objeto.

PAG. 40
Microsoft Visual Basic 6.0

• PasswordChar: establece qué carácter se muestra al realizar una entrada en el objeto.


Independientemente de lo que introduzca el usuario, en pantalla sólo se mostrará dicho
carácter.
• ScrollBars: permite mostrar barras de desplazamiento para el caso de que el texto
introducido no se pueda visionar completamente.
• TabIndex: establece el orden de tabulación fijado para el objeto.
• TabStop: indica si, al utilizar el tabulador para desplazarse entre los controles del
formulario, debe o no tenerse en cuenta este control.
• Text: texto que se visualiza en el control y que suele haber sido introducido por el usuario.
• ToolTipText: texto mostrado cuando el ratón se sitúa sobre el contol.

5.3. ETIQUETAS + CUADRO DE TEXTO

E n aquellas ventanas de entrada de datos es muy común tener la combinación de


etiqueta y cuadro de texto. Esto es debido a que un cuadro de texto no tiene la
propiedad Caption que permite crear teclas de acceso.

Por ello, cuando desee permitir un acceso rápido a cierto cuadro de texto, el uso de una
etiqueta asociada es la forma más sencilla de hacerlo. Utilice el carácter & en la propiedad
Caption de la etiqueta asociada y ya habrá creado la tecla de acceso para el cuadro de texto.

A medida que va creando controles en el formulario, Visual Basic asigna el orden de


tabulación. Dicho orden establece la secuencia con la que se desplazará el foco de un control a
otro al pulsar la tecla [Tab]. Este orden aparece en la propiedad TabIndex.

Por ello si desea crear teclas de acceso para los cuadros de texto, deberá asegurarse que la
etiqueta asociada al cuadro de texto tenga el valor anterior. En dicha propiedad, al del cuadro de
texto. De esta forma al pulsar [Tab] el foco pasará al cuadro de texto sin pararse en la etiqueta,
que no puede recibirlo.

La mejor forma de asegurarse esta situación es crear la etiqueta e inmediatamente después


el cuadro de texto asociado. Sin embargo, también puede cambiar el orden de tabulación
modificando el valor de la propiedad TabIndex, en este caso el resto de controles se reordenarán.

5.4. CONTROL MARCO

S
(Frame).
i desea estructurar un formulario en distintas secciones, agrupando controles en éstas
para que la lectura sea más clara, el control que debe utilizar es el control Marco

Dicho control puede tener una intención puramente estética o de legibilidad como sería el
caso mencionado o de mayor necesidad, como podrá ver cuando estudiemos el control casilla de
opción.

Para dibujar un control Marco, utilice el botón de la caja de herramientas.

PAG. 41
Visual Basic 6.0 Microsoft

La única propiedad interesante de un control marco, aparte de su nombre, es la propiedad


Caption que se refiere al texto que se muestra en la parte superior izquierda del marco.

El control Marco nos permite introducir el concepto de contenedor. Cuando dibuja


controles en un formulario, estos son controles independientes que poseen la característica de estar
situados en un determinado formulario. En este caso se dice que el objeto contenedor es el
formulario.

Sin embargo, la incorporación de un control marco al formularlo puede cambiar este


aspecto y permitir que sea dicho marco el contenedor de otros controles que se dibujan en su
interior.

Esta característica tiene su importancia ya que los valores de las propiedades Left
(Izquierda) y Top (Arriba) se establecen en función del objeto contenedor del control. Por ello,
cuando mueve un formulario también se mueven los controles que están situados en él.

Para que un objeto marco sea el objeto contenedor de otros objetos dibujados, deberá
haber dibujado primero el objeto marco y después dibujar el resto de objetos en el interior del
objeto marco. Si ya tiene controles dibujados y quiere introducirlos en un marco, entonces deberá
copiarlos o cortarlos y pegarlos en el marco. Así también será el control marco el objeto
contenedor de los objetos pegados.

5.5. BOTONES DE COMANDO

E n este capítulo se estudiará el control más utilizado en cualquier aplicación Windows:


el botón de comando.

La manera más sencilla de permitir que un usuario interactúe con su aplicación es


proporcionarle un botón para que haga clic en él.

Los botones de comando son una manera natural e intuitiva de ejecutar acciones en la
aplicación complementan en este sentido el uso de menús, ya sean despegables o contextuales.
Podrá dibujar un botón de comando a través del control situado en la caja de herramientas.

El control botón de comando (ComandButton) es muy sencillo, por lo que no necesitará


establecer muchas propiedades. Indique en Caption el texto que deba aparecer en el botón e
introduzca su nombre de objeto. El resto de propiedades las utilizará pocas veces. Como en el
resto de controles que presentan esta propiedad, también podrá crear una tecla de acceso al botón.

Además, es una regla establecida de hecho en la interfaz de Windows indicar con los
puntos suspensivos ( ... ) que al pulsar un botón se abrirá otra ventana, como sucedía en los
elementos de menú.

El uso principal de los botones de comando es justamente realizar acciones en la


aplicación. Sin embargo, también debe situar algún botón de comando para poder cerrar
expresamente la ventana en la que se encuentra.

PAG. 42
Microsoft Visual Basic 6.0

En los cuadros de diálogo normalmente aparecerán los botones los botones Aceptar y
Cancelar mientras que en otras ventanas de la aplicación puede encontrarse con botones como el
de Cerrar, cuya funcionalidad es la de cerrar (ocultar o descargar) el formulario abierto.

Debe diseñar los formularios de forma que los controles que sirvan para lo mismo se
sitúen siempre en la misma posición. Por ejemplo, coloque siempre en el mismo lugar los
botones que permitan cerrar las ventanas, de forma que el usuario llegue a acostumbrarse a verlos
en esa posición y los use de una forma casi impulsiva.

Un buen lugar para estos botones es la parte inferior derecha, como puede observar en
muchas aplicaciones Windows.

Existen dos propiedades que se aplican a los botones comentados que permiten cerrar una
ventana. Si desea cerrar la ventana de forma que las acciones que haya podido hacer no lleguen a
tener efecto (típico en el sentido de un botón Cancelar), será importante establecer la propiedad
Cancel a True.

Al establecer esta propiedad permite que el usuario pueda uti1izar tanto el botón Cancelar
como la tecla [Esc].

Sin embargo, si desea que se lleven a cabo las acciones realizadas en la ventana, utilice un
botón Aceptar y establezca su propiedad Defauf a True. De esta forma permitirá utilizarla tecla
[Intro] como si pulsara en dicho botón.

El botón Cerrar suele encontrarse en ventanas donde se realizan acciones sin necesidad de
cerrar la ventana. Su propósito es el de permitir cerrar la ventana cuando el usuario lo decida.
También suele responder a la tecla [Intro]

Recuerde la importancia que tienen los botones que permiten cerrar una ventana, aunque el
usuario también podría utilizaras el botón cerrar de la propia ventana. Este botón debe tener el
mismo sentido que pulsar un botón Cancelar en un cuadro de diálogo o un botón Cerrar x en otro
tipo de ventanas.

5.6. BLOQUEAR CONTROLES

C uando haya situado distintos controles en un formulario y le guste la disposición


obtenida, es una buena idea bloquear los controles para que no puedan moverse de
forma accidental.

Para ello, el menú Formato de Visual Basic facilita la opción Bloquear controles, cuya
presencia se justifica de esta forma.

PAG. 43
Visual Basic 6.0 Microsoft

Cuando active este botón y mientras no


desbloquee los controles pulsando de nuevo en el
mismo botón, no podrá mover ninguno de los controles
formulario activo.

Sin embargo, si abre otro formulario o crea uno


nuevo, sus controles no estarán bloqueados ya que este
botón sólo afecta a los controles del formulario que esté
activo en el momento de pulsarlo.

Además, si tiene un formulario con los controles


bloqueados y añade nuevos controles, estos también
permanecerán bloqueados y no podrá moverlos de la
posición en la que los dibuje.

PROPIEDAD PREDETERMINADA DE UN CONTROL

Los controles tienen, entre sus propiedades, una que actúa como predeterminada. Es decir,
si desea consultar o establecer el valor de esa propiedad, no será necesario hacer referencia a la
misma, sino simplemente utilizar el nombre del control.

Así, por ejemplo, los cuadros de texto tienen como propiedad predeterminada la propiedad
Text. Imagínese que tiene un cuadro de texto de nombre txtNombre, entonces serían equivalentes
las siguientes dos líneas de código:

txtNombre.Text = "Hola"
txtNombre = "Hola"

ya que en la segunda línea se establece la propiedad Text, que es la predeterminada para el control
cuadro de texto.

El uso de las propiedades predeterminadas puede reducir el código de sus aplicaciones,


pero hace que sea más difícil de leer. Deberá ser usted quien decida utilizar las propiedades
predeterminadas o no.

PAG. 44
Microsoft Visual Basic 6.0

Controles básicos II

6.1. CASILLAS DE VERIFICACIÓN

E n muchas ocasiones deseará proporcionar la posibilidad de elegir entre distintas


opciones a los usuarios.

En estas situaciones podrá incorporar a sus formularios distintos controles que presentan
opciones como pueden ser las casillas de verificación, botones de opción o a través de una lista.

Las casillas de verificación (CheckBox), permiten establecer opciones que no son


excluyentes entre sí, es decir, puede seleccionar una más de una, todas o incluso ninguna de las
opciones. Utilice el botón de la caja de herramientas.

Una casilla de verificación puede estar


activada (checked), indicando que dicha
opción ha sido seleccionada o desactivada
(unchecked), indicado lo contrario. Además la
casilla puede estar atenuada (grayed),
indicando que el objeto no está disponible al
tener un valor indeterminado. La propiedad
que tiene estos valores es Value.

El evento más utilizado en este tipo de


objetos es el momento en el que se pulsa en la
casilla. En esta situación el usuario quiere
indicar que desea activar o desactivar la
casilla, dependiendo de cuál sea su valor.

6.2. BOTONES DE OPCIÓN

tiempo.
L os botones de opción (OptionButton) también permiten presentar opciones al usuario,
pero con la particularidad que sólo podrá seleccionar una de dichas opciones al mismo

Por ello es importante establecer conjuntos de botones de opción. Si desea que en un


mismo formulario se pueda seleccionar más de un botón de opción, deberá crear distintos
conjuntos de botones de opción. Acceda a este control a través del botón de la caja de
herramientas.

Un botón de opción sólo puede presentar dos posibles valores en la propiedad Value:
False, que indica que el botón no está activado, y True, que representa la situación en el que el
botón está activado. El resto de propiedades de este control son similares a otros controles ya
vistos.

PAG. 45
Visual Basic 6.0 Microsoft

Así, por ejemplo, podría necesitar indicar si un producto está indicado para hombres o
mujeres y si el pedido está pagado o es contra reembolso.

Si este tipo de situaciones se presenta en su aplicación, tendrá que utilizar un control para
que haga de contenedor cada grupo de botones de opción. Como ya ha podido ver, este control
puede ser el control Marco (Frame) estudiado en la pasada lección.

Como ocurría en la anterior lección, para que esto funcione, es necesario dibujar los
botones de opción que configuren un grupo independiente en el interior del marco. Si no es así,
seguiría siendo el formulario el objeto contenedor, por lo que no podría seleccionar más de un
botón de opción.

Es importante utilizar los botones de opción sólo en aquellos casos en el que el número de
opciones posibles sea fijo a lo largo de la vida de la aplicación. En caso contrario, la inclusión de
una opción o modificación de alguna de las existentes podría implicar la modificación de partes de
la aplicación que trabajen con dichas opciones, algo no deseable.

6.3. CUADROS DE LISTA

O tra forma de presentar opciones al usuario es a través de una lista donde se sitúen
dichas opciones.

De forma predeterminada, las opciones que contiene el cuadro de lista (ListBox) se


presentan verticalmente en una única columna, aunque también puede establecerse más de una
columna. Además, si es necesario, aparecerán barras de desplazamiento. Para dibujar un cuadro de
lista en un formulario, utilice el botón .

Entre las propiedades que debe conocer de un cuadro de lista cabe destacar:

• ListIndex: indica el índice del elemento seleccionado en la lista. El primer elemento de la


lista tiene el valor 0 como índice.
• ListCount: indica el número de elementos existentes en la lista en todo momento.
• Text: texto del elemento seleccionado en la lista.

Todas estas propiedades son utilizadas en tiempo de ejecución, cuando se interactúa con la
lista. En tiempo de diseño, sin embargo, podrá indicar si desea que la lista se mantenga ordenada.
Para ello utilizará la propiedad Sorted que predeterminadamente está a False, lo que indica que no
se mantiene ordenada.

Para que pueda seguir mejor la explicación que se realiza en el curso, presentamos aquí un
gráfico donde puede ver el nombre de cada control que se utiliza.

PAG. 46
Microsoft Visual Basic 6.0

A la hora de agregar elementos a la lista es necesario utilizar un método de ésta. El


método AddItem se encarga de ello. Las siguientes líneas son el código escrito para el
procedimiento del botón Agregar del formulario utilizado en el curso en pantalla.

PrivateSubcmdAgregar_Click()
lstDeportes.Addltem txtDeportes.Text
IbICount = IstDeportes.ListCount
txtDeportes.Text = ""
txtDeportes.SetFocus
EndSub

En la primera línea del procedimiento está indicándole al objeto IstDeportes, que es el


cuadro de lista dibujado en el formulario, que añada a sus elementos el elemento que se encuentra
en el cuadro de texto de la parte superior (de nombre txtDeportes) y que es donde el usuario
introduce las entradas que se añaden a la lista.. Este texto es accesible a través de la propiedad
Text de dicho cuadro de texto.

El método AddItem añadirá el nuevo elemento al final de la lista si ésta no está ordenada o
en el lugar adecuado si está ordenada. También podría indicar en qué lugar (índice) debe
agregarse el nuevo elemento. En este caso la sintaxis completa sería:

NombreLista.AddItem elemento, índice

Además, como hemos añadido un elemento a la lista, tendremos que actualizar el número
de dichos elementos a través de la etiqueta situada en la parte inferior de nombre IstCount. Esto se
consigue con la línea lbICount=IstDeportes.ListCount, que consulta la propiedad ListCount del
cuadro de lista. Esta propiedad se actualiza al agregar o eliminar elementos de la lista.

PAG. 47
Visual Basic 6.0 Microsoft

Para eliminar un elemento de la lista, deberá utilizar el método RemoveItem. Sin


embargo, este método necesita que indique qué elemento desea eliminar de la lista. Aquí puede
ver el código asociado al procedimiento de evento Click del botón Eliminar.

PrivateSubcmdEliminar_Click0
Dim Indice As Integer
Indice=IstDeportes.ListIndex


If Indice >= 0 Then
IstDeportes.RemoveItem Indice
End If
IbICount.Caption = IstDeportes.ListCount
txtDeportes.SetFocus
EndSub

Como se ha dicho, RemoveItem necesita que se le indique qué elemento desea eliminar de
la lista. En este caso, dicho elemento será aquel que el usuario haya elegido en la lista y, que por
lo tanto, estará seleccionado en la misma.

Para conseguir dicho elemento, se utiliza la propiedad ListIndex de la lista. Esta


propiedad se guarda en la variable Indice y posteriormente se comprueba si realmente existe algún
elemento seleccionado en la lista. Así sólo en el caso de que Indice sea>=0 se borrará el elemento
(recuerde que el primer elemento de la lista tiene el índice 0).

Finalmente se actualiza la etiqueta que muestra el número de elementos de la lista y se da


el foco al cuadro de texto para permitir introducir más elementos.

Si desea el eliminar todos los elementos de una lista, no es necesario hacerlo de uno en
uno. Utilice el método Clear para hacerlo de una vez.

Aquí aparece el código asociado al procedimiento Click del botón Limpiar.

PrivateSubcmdLimpiar_Click()
IstDeportes.Clear
IbICount.Caption = IstDeportes.ListCount
txtDeportes.SetFocus
EndSub

Como puede observar, lo único que hace es limpiar la lista (utilizar su método Clear),
actualizar el número de elementos y permitir introducir nuevos elementos.

PAG. 48
Microsoft Visual Basic 6.0

Por otra parte, al utilizar el método AddItem en una lista ordenada, es decir, que tenga sus
propiedad Sorted establecida a True, no debe indicar el lugar en el que desea que se inserte el
nuevo elemento, ya que en ese caso puede provocar resultados con ordenaciones impredecibles.

6.4. CUADROS COMBINADOS

U n cuadro combinado (ComboBox),conjuga las características de un cuadro de lista y


de un cuadro de texto en un único control.

Generalmente el uso de un cuadro combinado en detrimento de un cuadro de lista ocurre


cuando el programador desea sugerir opciones al usuario, mientras que en el caso del cuadro de
lista no son sugerencias sino que el usuario está limitado a elegir una de las opciones que se le
presentan.

Un cuadro combinado ocupa menos espacio que un cuadro de lista ya que el usuario
deberá desplegarlo para poder elegir la opción deseada. Por otra parte, también podrá introducir
directamente dicha opción (por ello la presencia de un cuadro de texto como parte del objeto
cuadro combinado).

La principal propiedad que debe establecer para un objeto Cuadro combinado es Style.

El estilo 0-Dropdown Combo es el valor predeterminado. En este


tipo de objetos el usuario puede elegir un elemento de la lista, desplegándola
o introduciendo directamente el valor en el cuadro de texto.

El estilo 1-SimpleCombo es el menos utilizado y se caracteriza por


presentar en todo momento la lista en pantalla. El usuario, sin embargo,
también puede hacer uso del cuadro de texto para introducir un valor nuevo
o uno de los que aparecen en la lista.

Finalmente el estilo 2-DropdownList se comporta como un cuadro


de lista, pero en este caso el usuario deberá desplegar la lista para que se
muestren las opciones. Cuando utilice este estilo, el usuario no podrá hacer
uso del cuadro de texto, por lo que no podrá elegir un valor que no forme
parte de la lista.

Además, todas las propiedades y métodos mencionados para los cuadros de lista también
son válidos para los cuadros combinados.

PAG. 49
Visual Basic 6.0 Microsoft

PAG. 50
Microsoft Visual Basic 6.0

Fundamentos de Programación

7.1. INTRODUCCIÓN

E n las lecciones anteriores ha podido aprender a crear la interfaz de una aplicación


Windows utilizando Visual Basic.

Además ya conoce cuál debe ser la forma adecuada de programar una aplicación en este
entorno de desarrollo: crear la interfaz, establecer propiedades y finalmente escribir código.

Aunque ha sido inevitable utilizar estructuras de programación y conceptos que no habían


sido introducidos, el objetivo principal de dichas lecciones han que a estas alturas del curso
conozca el entorno de programación de Visual Basic y cómo crear la interfaz de una aplicación
Windows.

Es el momento de reforzar conceptos de programación que debe tener muy claros a la


hora de escribir código más complejo. Se introduce formalmente las variables, constantes,
procedimientos, funciones, estructuras de control, tipo de datos,…

En definitiva, el usuario poco establecido en estos temas agradecerá enormemente estos


fundamentos de programación y aquel que ya tiene cierta experiencia, conocerá cómo se aplican
en Visual Basic.

7.2. VARIABLES

U na variable es una ubicación temporal de memoria donde el programador almacena


datos que le interesa retener durante la ejecución de la aplicación.

Una variable puede contener texto, un valor numérico, una fecha o una propiedad de cierto
objeto. En definitiva, es una forma de dar nombre a una porción de datos con la que deseamos
trabajar en nuestro programa.

Las variables se caracterizan por un nombre que las identifica y por un tipo de datos, que
establece el conjunto de valores posibles que pueden contener y operaciones en las que puede
participar. El valor de una variable puede cambiar a lo largo de la vida de ésta (de ahí el nombre
de variable).

En la mayoría de lenguajes de programación es necesario declarar una variable para poder


utilizar en el programa. Sin embargo en Visual Basic esto no es obligatorio aunque sí
recomendable.

Al declarar una variable se reserva a memoria para ella y se le indica a Visual Basic qué
valores puede contener a través de su tipo de datos. Así Visual Basic podrá realizar comprobación
de tipos y establecer errores en tiempo de compilación.

PAG. 51
Visual Basic 6.0 Microsoft

Si desea establecer la declaración de una variable antes de ser utilizada en el código, puede
indicarlo en la ficha Editor del cuadro de diálogo Opciones en el menú Herramientas.

Al activar la casilla Declaración de variables requerida, Visual Basic introduce la


instrucción Option Explicit en la sección de declaraciones de cada módulo nuevo que se cree, no
de los ya existentes donde tendrá que introducirla manualmente. Esta instrucción obligará a
declarar las variables antes de utilizarlas, lo que es muy recomendable.

Utilizará variables por diversos motivos: almacenar una entrada del usuario, realizar
cálculos intermedios, establecer la salida en un formulario, etc.

Además, el uso de variables puede hacer más rápida su aplicación. Así, si utiliza en
muchas ocasiones un determinado resultado, es mejor guardarlo en una variable y utilizarla que
tener que volver a establecer dicho resultado, lo que puede implicar distintos cálculos.

Por otra parte, es más rápido el acceso a una variable que a una propiedad de un objeto,
por lo que en muchas ocasiones guardará el valor de una propiedad utilizando una variable.

Veamos un ejemplo.

Dim Variable
Variable= txtEntrada.Text
txtSalida.Text=Variable

La forma de declarar una variable es a través de la instrucción Dim. En la primera línea


está declarando la variable de nombre Variable y al mismo Visual Basic guarda espacio en
memoria para poder utilizarla.

En la segunda línea ya utiliza la variable. En este caso sirve para guardar el valor que
existe en un cuadro de texto llamado txtEntrada (representado por su propiedad Text)

En la tercera línea está haciendo justo lo contrario. Utiliza la variable para establecer el
valor de la propiedad Text del cuadro de texto txtSalida.

Si ahora introduce estas dos nuevas líneas de código:

Variable = 125
txtNúmero.Text =Variable

Fijase que ahora ha establecido Variable a un valor numérico. Sin embargo en las
anteriores líneas lo había establecido a un valor de texto ya que la propiedad Text es de ese tipo de
datos. Analizaremos después este asunto.

PAG. 52
Microsoft Visual Basic 6.0

7.3. TIPOS DE DATOS

E
operando.
l tipo de datos de una variable establece el conjunto válido de valores que ésta puede
tomar, así como el conjunto de operaciones en las que puede tomar parte como

En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se
guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos.

Es importante indicar el tipo de datos ya que no todos tienen la misma representación en


memoria, ocupando distinto espacio físico.

Sin embargo, de forma predeterminada y si usted no indica el tipo de datos, Visual Basic
establece el tipo Variant para todas las variables. Así, al utilizar una instrucción como
DimNombreVariable, está especificando implícitamente el tipo Variant para dicha variable.

Esto también se aplica cuando utiliza las variables sin haberlas declarado previamente.

El tipo Variant es un tipo especial de datos que puede contener cualquier clase de datos
excepto cadenas de longitud fija y tipos definidos por el usuario. Al utilizar variables de este tipo,
no tiene que preocuparse de efectuar conversiones entre tipos para utilizarlas en distintos
contextos, Visual Basic lo hace por usted.

Por ejemplo en el capítulo anterior declaró la variable con Dim Variable, por lo que su
tipo de datos es el Variant.

Pudo asignar texto a dicha variable (a través de la propiedad Text de un cuadro de texto) y
también pudo asignarle un valor numérico (a través de la sentencia Variables=125). Sin embargo,
cuando Variable almacenaba un valor numérico (125) pudo utilizarla para establecer el valor de la
propiedad Text del cuadro de texto (txtNumérico.Text = Variable), sin necesidad de realizar
ninguna conversión.

La flexibilidad del tipo Variant se tiene que pagar con el aumento en el consumo de
memoria y disminución de velocidad que implica dicho tipo de datos. Visual Basic escogerá
automáticamente la representación en memoria más eficiente para dicha variable, guardando la
memoria necesaria, cuando se le asigne un valor.

Esta representación puede variar a lo largo de la vida de la variable al ir asignando valores


distintos.
Por ello, es responsabilidad del programador establecer siempre que sea posible un tipo
para cada variable que utilice. La forma de hacerlo es indicándolo al final de la instrucción Dim de
la forma:

Dim Nombre Variable As Nombre Tipo.

PAG. 53
Visual Basic 6.0 Microsoft

A continuación indicamos los principales tipos de datos disponibles en Visual Basic:

Tamaño de Valores posibles


Nombre del tipo de datos almacenamiento
Entero (integer) 2 bytes -32.768 a 32,767
Entero largo (Long) 4 bytes -2. 147.483.648 a
2. 147.483.647
-3.402823E38 a
1.401 298E-45 para valores
Simple (Single) 4 bytes negativos. 1.401298E-45 a
3.402823E38 para valores
Positivos.
-1.79769313486231 E308a
-4.94065645841247F-324
para valores
Doble (Double) 8 bytes negativos.4.940656458412-
47E-324a
1,79769313486232E308
para valores positivos.
8 bytes -922337203685477,5808 a
Moneda ( Currency) 92237203685477,5807
Desde 0 hasta
aproximadamente 2.000
Cadena de millones (aproximadamente
Caracteres(String) 1 byte por carácter 65.400 para Microsoft
Windows versión 3.1 y
anteriores). Las cadenas de
Caracteres deben aparecer
entre comillas dobles (“)
Byte 1 byte 0 a 255
Verdadero (True) o Falso
Booleano (Boolean) 2 bytes (False).
Del 1 de Enero de 100 al
Fecha (Date) 8 bytes 31 de Diciembre de 9999.
Cualquier referencia a un
Objeto (Object) 4 bytes Objeto.
Nulo, Error, cualquier valor
Variant 16 bytes+1 byte por Numérico de rango Doble, o
cada carácter
cualquier texto de

PAG. 54
Microsoft Visual Basic 6.0

7.4. CONSTANTE

S i en su aplicación encuentra un valor que se repite frecuentemente, es posible que le


interese guardarlo en una constante.

Las constantes son semejantes a las variables, pero con la particularidad de que su valor no
puede cambiar a lo largo de la aplicación. Una constante es utilizada para aumentar la legibilidad
de su código. Por ejemplo en lugar de utilizar el valor3.1415 podría utilizar la constante Pi.

En definitiva deberá darle un nombre a la constante y establecer su valor, que no podrá ser
cambiado en el resto de código.

Para utilizar una constante, deberá declararla previamente, en este caso sí que es
obligatorio. La forma de declararla es a través de la instrucción ConstNombreConstante =
Expresión, donde Expresión será un valor literal (número, texto, fecha, etc.) o un conjunto de
palabras que se evalúen a un valor válido.

Por ejemplo:

Const FestivosSemana = 2

A partir de ahora podrá utilizar el identificador FestivoSemana en lugar del valor 2. Al


hacer esto podrá añadir legibilidad a sus programas, además de permitir la modificación de
opciones globales de una forma más sencilla.

Así, por ejemplo, si quiere cambiar el número de días festivos en una semana para su
aplicación, sólo necesitará modificar el valor en la declaración de la constante y esta modificación
se extenderá a todos los lugares donde se use.

Una constante puede ser utilizada en cualquier lugar donde su valor sea adecuado, así, por
e ejemplo podría utilizar la constante FestivosSemana en la siguiente línea:

Variable = 125+FestivosSemana, estableciendo el valor 127 para Variable.

Por otra parte, el lenguaje Visual Basic incorpora un gran número de constantes que puede
utilizar directamente en sus programas.

En el cuadro de diálogo Referencias (menú Proyecto) se sitúan aquellas aplicaciones o


librerías que están disponibles en nuestra aplicación. Estos componentes permiten el uso de sus
objetos en nuestras aplicaciones de forma automática, siempre que su casilla de activación esté
activada.

PAG. 55
Visual Basic 6.0 Microsoft

Cuando Visual Basic


encuentra un identificador
válido, comprueba primero
si está declarado en nuestra
aplicación y, en caso
negativo, comprueba si está
disponible en alguno de los
componentes que se sitúen
activados en este cuadro de
Referencias.

Recuerde, por e
ejemplo, que en la anterior
lección utilizó la constante
vbChecked para comprobar
el valor de una casilla de
opción. Dicha constante
pertenece a la librería
VBRUN Objetos y
procedimientos de la
biblioteca de tiempos de ejecución de Visual Basic.

EI Examinador de Objetos ,disponible a través del menú Ver, permite mostrar todos
los objetos que puede tener disponibles en su proyecto de programación y cuyos orígenes se
muestran activados en el cuadro de diálogo Referencias. También muestra aquellos objetos
creados en el propio proyecto.

En la lista de la derecha se muestran los objetos disponibles para la selección realizada.


Fíjese cómo una constante perteneciente a la clase CheckBoxConstants, es decir, constantes
referentes al control CheckBox o casilla de verificación, es justamente la constante utilizada en la
anterior lección, vbChecked.

PAG. 56
Microsoft Visual Basic 6.0

Recuerde que una constante no puede cambiar su valor después de haber sido declarada.
Intentarlo originaría un error en tiempo de compilación.

7.5. OPERADORES DE VISUAL BASIC

E n Visual Basic existe un gran número de operadores que puede utilizar para crear
formulas de cierta complejidad.

Estos operadores trabajan con los operados sobre los que se aplican siempre que el valor
que posean sea compatible con el operador. Hay que tener cuidado en este aspecto ya que Visual
Basic realiza conversiones de tipo implícitas cuando lo necesita, produciendo, en ocasiones,
resultados inesperados.

Los operadores más utilizados en una aplicación Visual Basic son los siguientes:

Operador Operación que realiza


+ Suma / Concatenación de cadenas de caracteres.
- Resta.
* Multiplicación.
/ División.
\ División entera.
Mod Resto de la división entera.
^ Exponenciación.
& Concatenación de cadenas de caracteres.

El operador + es un caso especial. Dicho operador puede actuar con operados de texto y
con operados numéricos, efectuando operaciones distintas (se dice que el operador está
sobrecargado).

En el primer caso realiza lo que se llama concatenación de cadenas, es decir, crea una
cadena nueva al situar la segunda cadena dada inmediatamente después de la primera. Por ejemplo
si realiza la operación "hasta " + “luego", el resultado sería "hasta luego" (fíjese que la primera
cadena contenía espacio en blanco al final).

En el caso de contener valores numéricos, + actúa como el operador suma normal. Es decir
una operación del tipo 1 +2 daría como resultado 3.

Por ello es conveniente utilizar el operador & para concatenar cadenas de caracteres en
lugar del operador +.

Visual Basic realizará conversiones implícitas de tipo para poder utilizar un determinado
operador siempre que los operados tengan una representación válida para este operando.

Así, por ejemplo la operación “4" - “2" no provocaría un error de compilación sino que
daría el resultado 2, ya que tanto la cadena de caracteres “4” como "2" tienen una representación
numérica válida, no así, por ejemplo, la cadena “hola”.

PAG. 57
Visual Basic 6.0 Microsoft

PAG. 58
Microsoft Visual Basic 6.0

Fundamentos de Programación II

8.1. ESTRUCTURAS DE DECISIÓN

E l lenguaje de Visual Basic incorpora estructuras de control que permiten controlar el


flujo de ejecución de un programa.

Si no existen tales estructuras en su código, éste se ejecutará de izquierda a derecha y de


arriba a abajo según lo haya escrito.

Sin embargo, en muchas ocasiones deseará ejecutar una línea u otra dependiendo de cierta
condición o deseará repetir un número de veces el mismo conjunto de líneas. En estos casos la
introducción de las estructuras de control modifican el flujo normal de la ejecución.

Entre las estructuras de control cabe citar las estructuras de decisión, estudiadas en este
capítulo y las estructuras de repetición, que son analizadas en el siguiente.

La instrucción If-Then-Else es la estructura clásica de decisión y presenta la siguiente


sintaxis:

If condición1 Then
[instrucciones1]
[ElseIf condición2 Then
[instrucciones2]]

[Else
[instruccionesN]]
End If

Donde los corchetes ([ ]) representan partes opcionales de la instrucción. Además es


posible que exista más de una cláusula ElseIf en la misma instrucción If-Then-Else, de ahí la
aparición de los puntos suspensivos (…).

Debe entender esta instrucción de la siguiente forma: Si condición1 se cumple entonces se


ejecuta el bloque instrucciones1, en caso contrario se ejecutaría el bloque de instrucciones(2…N-
1) de la primera cláusula EbeIf cuya condición se cumpla. Si finalmente no se cumple ninguna de
estas condiciones, se ejecutaría el bloque instruccionesN correspondiente a la cláusula Else.

Y donde condición es una expresión, es decir, cualquier conjunto de palabras, que se


evalúan a Verdadero o Falso, sin posibilidad de poder tener otro valor. Se dice que una condición
se cumple cuando se evalúa a Verdadero y que fracasa en caso contrario. Las condiciones también
se conocen como expresiones lógicas.

PAG. 59
Visual Basic 6.0 Microsoft

Veamos un ejemplo:

Dim idioma
idioma= Istldioma.ListIndex
lf idioma = 0 Then
MsgBox "Bienvenido"
ElseIf idioma = 1 Then
MsgBox "We1come"
ElseIf idioma = 2 Then
MsgBox "Bienvenue"
Else
MsgBox "Actualmente no hay más idiomas soportados"
EndIf

Se utiliza una variable para almacenar el


valor de la propiedad que indica qué opción del
cuadro de lista lstIdioma está seleccionada.

Una vez conocida la opción seleccionada,


debemos sacar el mensaje adecuado: necesitamos
una estructura de decisión.

La instrucción de la cláusula Else sólo se


ejecuta cuando el resto de condiciones han
fracasado. Es como si la cláusula Else tuviera una
condición implícita que se evalúa a Verdadero sólo cuando el resto de condiciones se evalúan a
Falso.

Por otra parte, es importante darse cuenta que cualquiera de los bloques [instrucción]
puede contener un número arbitrario de instrucciones, incluida la posibilidad de que existan
nuevas instrucciones If-Then-Else.

Cuando existe un gran número de condiciones evaluar, es posible que la instrucción If-
Then-Else se complique de gran manera. En estos casos Visual Basic permite el uso de otra
estructura de decisión: la instrucción Select Case.

Select Case no incorpora mayor potencia al lenguaje, pero hace que el código sea más
legible y eficiente. La sintaxis de la instrucción Select Case es la siguiente:

Select Case expresiónDeComparación


[Case listaExpresiones1]
[insrucciones1]

[Case Else
[instruccionesN]]
End Select

PAG. 60
Microsoft Visual Basic 6.0

Donde de nuevo los corchetes ([]) representan partes opcionales y donde puede existir un
número indeterminado de cláusulas [Case listaExpresiones].

Esta instrucción evalúa sólo una vez la expresión de comparación y ejecuta el bloque de
instrucciones de la primera cláusula [Case listaExpresiones] cuya listaExpresiones cumpla con
la expresión de comparación.

En caso de que no se pueda cumplir ninguna de las listas de expresiones, se ejecutaría el


bloque instruccionesN correspondiente a la cláusula [CaseElse], de forma similar a la instrucción
If-Then-Else.

Veamos como quedaría el código anterior utilizando la instrucción Select Case en lugar de
If-Then-FIse:

Select Case idioma


Case 0
MsgBox "Bienvenido"
Case 1
MsgBox "WeIcome"
Case 2
MsgBox "Bienvenue"
Case Else
MsgBox "Actualmente no hay más idiomas soportados"
End Select

Además, la 1ista de expresiones de cada cláusula Case puede ser mucho más complicada.
Así podría referirse a más de un valor, a un rango de valores, etc.

A continuación se muestra algún ejemplo:

Case 1 To 9: valores desde el 1 hasta el 9.


Case 1, 2, 3: valores 1, 2 y 3.
Case 1, 2, 5 To 12: valores 1, 2 y desde el 5 hasta el 12.

8.2. EXPRESIONES LÓGICAS

E l lenguaje de Visual Basic incorpora una serie de operadores de comparación que


son útiles a la hora de establecer condiciones.

Hasta ahora sólo ha usado el operador de igualdad(=) pero existen los siguientes:

PAG. 61
Visual Basic 6.0 Microsoft

= Igual a
<> Distinto a
> Menor que
< Mayor que
<= Menor o igual que
>= Mayor o igual que

Además de esto, puede utilizar los llamados operadores lógicos: And, Or, Not, Xor. Estos
permiten establecer condiciones que dependan de más de un criterio de selección.

Todos los operadores mencionados hacen que la expresión en la que se encuentren se


evalúe Verdadero o a Falso, sin posibilidad de cualquier otro valor.

Así, la expresión exp1 AND exp2 se evalúa a Verdadero sólo en el caso de que tanto exp1
como exp2 se evalúen a Verdadero. En cualquier otro caso se evalúa a Falso.

La expresión exp1 OR exp2 se evalúa a Verdadero cuando alguna de las expresiones exp1
o exp2 se evalúen a verdadero (fíjese cómo puede pasar que ambas se evalúen a Verdadero).

La expresión NOT exp1 se evalúa a Verdadero si exp1 se evalúa a Falso y se evalúa a


Falso si exp1 se evalúa a Verdadero.

Finalmente la expresión exp1 XOR exp2 se evalúa a Verdadero sólo en el caso de que una
y sólo una de las expresiones exp1, exp2 se evalúe a Verdadero.

8.3. MATRIZ DE CONTROLES

U n array o matriz de controles es un grupo de controles que comparten el mismo


nombre, tipo y conjunto de procedimientos de evento.

El número de controles que pueden pertenecer a tina matriz es indeterminado y depende de


los recursos y memoria de su ordenador. De todas formas el límite para plataformas de 32 bits
(Windows 95) se sitúa en 32767 controles.

Deberá crear la matriz de controles en tiempo de diseño, aunque en tiempo de ejecución,


podrá agregar más controles a la matriz.

Esta es la forma de crear nuevos controles en tiempo de ejecución, ya que en otro caso
dichos controles no tendrían procedimientos de evento. Sin embargo, al agregar nuevos controles
a una matriz, estos comparten los procedimientos del resto de controles de lar matriz.

Para crear una matriz de controles, debe crear dos controles con el mismo nombre,
entonces Visual Basic le indicará esta circunstancia y le preguntará si desea crear una matriz.

PAG. 62
Microsoft Visual Basic 6.0

Cuando se crea una matriz de controles, usted puede seguir trabajando con cada uno de los
controles de forma individual. Para referirse a un control en particular deberá utilizar la propiedad
Index de dicho control. Dicha propiedad se establece al valor 0 para el primer control creado y se
va incrementando a medida que se crean los nuevos controles.

En la figura anterior puede ver cómo el procedimiento de evento Click posee un parámetro
especial, Index, que determina qué botón se ha pulsado. Recuerde que todos los controles
comparten los mismos procedimientos, por lo que tendrá que usar dicho parámetro para
diferenciar uno de otro.

Si quiere crear nuevos controles en tiempo de ejecución deberá utilizar la instrucción


Load. La sintaxis correcta sería: Load objeto(índice), donde objeto se refiere al nombre del
control original que dio paso a la creación de la matriz e índice es el lugar que ocupará en la
matriz.

Deberá mantener en alguna variable el número de controles que existen en la matriz. Por
ejemplo, para la matriz de botones utilizada en el curso, el siguiente botón debería tener el índice
3, por lo que una forma de crearlo, en tiempo de ejecución sería a través de la instrucción Load
Command1(3).

También puede eliminar un control que haya sido creado en tiempo de ejecución, a través
de la instrucción Unload objeto(índice). Esta instrucción no permite eliminar controles creados
en tiempo de diseño, independientemente de que pertenezcan o no a una matriz de controles.

PAG. 63
Visual Basic 6.0 Microsoft

8.4. ESTRUCTURA DE REPETICIÓN

E n esta lección ya ha podido utilizar estructuras de decisión para controlar el flujo de


ejecución de un programa.

Otro tipo de estructuras que pueden modificar dicho flujo de ejecución son las estructuras
de repetición, también llamadas bucles. Estas estructuras sirven para repetir una y otra vez un
conjunto de instrucciones.

En este sentido puede querer repetir un número determinado de veces el conjunto de


instrucciones o no conocer dicho número y desear repetirlas hasta que se cumpla cierta condición
(o mientras se cumpla otra).

En definitiva existirán dos tipos de estructuras de repetición: aquellas en las que se conoce
el número de repeticiones y aquellas que dicho número se establece en la propia ejecución.

La estructura de repetición For ... Next es adecuada cuando conocemos el número de


veces que debe repetirse un conjunto de instrucciones y deseamos disminuirla cantidad de código
escrito.

La sintaxis completa de esta estructura de repetición es la siguiente:

For contador = principio To fin [Step incremento]


[Instrucciones]
[ExitForl
[Instrucciones]
Next [contador]

Donde contador es el nombre de una variable que sirve como contador de las veces que se
ha de ejecutar el bucle. A dicha variable se le asigna un valor inicial y se indica el valor final o
aquel en el que, una vez superado, el bucle no volverá a repetirse.

En el cuerpo del bucle se sitúan el conjunto de instrucciones que deben ejecutarse cada
vez, existiendo la posibilidad de introducir una instrucción Exit For para salir del bucle antes de
que se repita el número de veces establecido.

Finalmente, una vez ejecutada cada una de las instrucciones del cuerpo del bucle se ejecuta
la línea Next contador, en la que se aproxima el valor del contador hacia el valor final en el
número de unidades indicado en el incremento.

Aproximarse puede ser incrementar el valor, si el valor inicial es menor que el valor final,
o decrementarlo, si el valor inicial es mayor que el final. Si no se determina ningún incremento,
Visual Basic toma como valor predeterminado una unidad.

PAG. 64
Microsoft Visual Basic 6.0

El ejemplo utilizado en el curso es:

Dim i As Integer
For i = 3 To 5
LoadCommand1(i)
Command1 (i).Visible = True
Command1(i).Top = Command1(i-l).Top + 600
Next i

En este caso se utiliza la variable i, de tipo entero, como contador del bucle. Dicho bucle
se ejecutará 3 veces, en las que el valor de i será 3, 4 y 5.

Las instrucciones que forman el cuerpo del bucle crean, en tiempo de ejecución, un botón
de comando nuevo en la matriz de controles. Fíjese cómo el índice de cada uno de los nuevos
botones será justamente el valor del contador en cada pasada del bucle.

Por otra parte se sitúa el nuevo botón de forma que aparezca debajo del botón anterior en
600 unidades.

En muchas ocasiones desconocerá cuántas veces debe repetir un bucle. En estos casos
deberá utilizar una estructura de repetición que dependa de una condición.

En este sentido puede interesarle repetir un bucle mientras se cumpla o hasta que se
cumpla una condición. En ambas situaciones Visual Basic presenta estructuras adecuadas.

La estructura de repetición genérica es Do...Loop. Dicha estructura es utilizada cuando no


conocemos cuantas veces debe ejecutarse el bucle.

La sintaxis de esta instrucción es:

Do [{While / Until} condición


[Instrucciones]
[ExitDo]
[Instrucciones]
Loop

Puede usar esta sintaxis válida equivalente:

Do
[Instrucciones]
[Exit Do]
Instrucciones]
Loop [{While / Until} condición]

PAG. 65
Visual Basic 6.0 Microsoft

Fíjese cómo puede usar bien la palabra While o bien la palabra Until. En el primer caso el
bucle se repite mientras la condición se cumpla; en el segundo caso el bucle se repetirá hasta que
la condición dé el valor Verdadero.

Por otra parte en la primera sintaxis, la condición es comprobada al principio del bucle,
por lo que si no se cumple al iniciarse, entonces el cuerpo del bucle no se ejecutará. Sin embargo,
en la segunda sintaxis, la condición es comprobada a la salida del bucle por lo que por lo menos
una vez es seguro que el cuerpo del bucle se va a ejecutar.

Existen otras estructuras de repetición en el lenguaje que no son tratadas en este capítulo.
Es recomendable utilizar el sistema de ayuda y buscar información sobre repetir instrucciones.

PAG. 66
Microsoft Visual Basic 6.0

Fundamentos de programación III

9.1. TIPOS DE PROCEDIMIENTOS

E n esta lección finalizaremos en el repaso de conceptos propios de programación y en


su aplicación en el entorno de desarrollo particular de Visual Basic.

Como ya sabe, los procedimientos son unidades de código en las que puede dividir su
programa para facilitar la programación. Un procedimiento es un conjunto de líneas de código que
deben realizar operaciones o tareas bien definidas.

En Visual Basic existen cuatro tipos de procedimientos: Sub, Function, Property y


Event.

Los procedimientos Sub ya son conocidos por usted, al haber trabajado con los
procedimientos de evento que son de este tipo.

Los procedimientos Function se distinguen de los primeros en que siempre devuelven un


valor asociado al nombre del procedimiento. Este valor puede ser usado en el código que lo ha
llamado.

Finalmente los procedimientos Property sirven para crear y manipular propiedades


personalizadas de los objetos y los Event para declarar eventos definidos por el usuario en un
módulo de clase y no los veremos en este curso.

9.2.CREAR PROCEDIMIENTOS SUB

E n este capitulo aprenderá a crear procedimientos Sub. Para ello utilizaremos el


proyecto Videoclub. vbp, en el que estuvo trabajando en pasadas lecciones.

Estudiaremos el caso en el que un socio del videoclub desea llevarse una determinada
película, es decir, cuando se produce un préstamo.

Así. El usuario introducirá una película, el socio que se la lleva y pulsará el botón Prestar.
La aplicación guardará dicho préstamos y mostrará un mensaje indicando el día de la devolución.

Puede imaginar que necesitaremos calcular el día de devolución. Este proceso puede
depender de muchas circunstancias o ser tan sencillo como el que vamos a mostrar.

PAG. 67
Visual Basic 6.0 Microsoft

Podría realizar el cálculo de dicho día en el procedimiento de evento Click del botón
Prestar, pero esto no es muy buena idea.

Piense, por ejemplo, que dicho cálculo puede ser necesitado en otras partes de la
aplicación. Si es así, necesitaría escribir el código correspondiente en cada lugar que se necesite.

¿Qué sucedería si posteriormente se modifican los criterios de dicho cálculo? Tendría que
realizar la modificación en todos y cada uno de los lugares donde se realiza.

En estos casos es donde el uso de procedimientos facilita la labor de programación y de


mantenimiento de su aplicación.

Para crear un procedimiento tiene dos alternativas igualmente válidas: utilizar la opción
Procedimiento del menú Insertar de Visual Basic o escribirlo completamente en la ventana de
código.

En la definición de un procedimiento Sub puede diferenciar dos partes: la cabecera y el


cuerpo del procedimiento.

En la cabecera del procedimiento se indica el ámbito (si es público o privado) del mismo,
su tipo mediante la palabra Sub, su nombre y la lista de parámetros entre paréntesis.

La lista de parámetros sirve para poder comunicar el procedimiento con el resto del código
de la aplicación. Por ejemplo en el procedimiento que se encarga de calcular el día de devolución
al realizar un préstamo de una película, necesitamos indicarle si la película aprestar es una
novedad o no.

Para ello se utilizará un parámetro que indique de alguna forma dicha circunstancia. Un
parámetro se comporta corno una variable en el cuerpo del procedimiento, pudiendo simplemente
utilizar su valor o incluso modificarlo.

Además, el procedimiento debe ser capaz de comunicar el día de la devolución a aquel


código que lo llame.

PAG. 68
Microsoft Visual Basic 6.0

Cuando un procedimiento quiere comunicar algún dato a la aplicación, deberá utilizar un


parámetro para ello. Es decir, un parámetro puede servir bien para comunicar un valor al
procedimiento o bien para que éste lo comunique a la aplicación.

En la figura puede ver cómo quedaría el procedimiento y cuáles son las partes del mismo:

Recapitulemos: se utiliza el parámetro novedad para indicarle al procedimiento si la


película es o no es una novedad y hemos utilizado el parámetro día para que el procedimiento
pueda indicar o devolver el día calculado de la devolución de la película. Ambos parámetros han
sido utilizados en el cuerpo del procedimiento como dos variables más.

Además, el propósito del procedimiento Sub ha sido claramente definido: calcular el día de
devolución. Este procedimiento no hace ni más ni menos que lo que debe hacer.

9.3. LLAMAR A PROCEDIMIENTOS SUB

E n el anterior capítulo aprendió a crear procedimientos y a especificar tanto el código


del mismo como la lista de parámetros que tenga definida.

En este capítulo vamos a aprender a utilizarlos procedimientos Sub. En la terminología de


programación cuando en una parte del código desea utilizar un procedimiento se dice que realiza
una llamada al mismo.

La llamada aun procedimiento Sub es igual que cualquier otra instrucción del lenguaje.
Así, para llamar al procedimiento mostrado en el capítulo anterior debería escribir la siguiente
línea.

Calcular Préstamo argnovedad, argdía

Como este procedimiento tiene dos parámetros, es necesario llamarlo con dos argumentos:
argnovedad y argdia.

Estos argumentos deben coincidir en la llamada en número y tipo con la definición del
procedimiento. Tanto si especifica en la llamada un número distinto de argumentos corno si
alguno de éstos no pueden convertirse al tipo declarado en la definición del procedimiento, se
creará un error de compilación.

PAG. 69
Visual Basic 6.0 Microsoft

Al realizar la llamada CalcularPréstamo argaovedad, argdia, está indicando que se


ejecute el código situado en el cuerpo de dicho procedimiento con los valores que tenga
almacenados en los argumentos argnovedad y argdia. Es decir el parámetro novedad declarado en
la definición del procedimiento tomará el valor de argnovedad y el parámetro día el valor del
argumento argdía.

Por lo tanto necesitará declarar dos variables, del tipo adecuado, en el procedimiento de
evento Click del botón Prestar, para poder llamar al procedimiento CalcularPréstamo.

Recuerde que el procedimiento CalcularPréstamo guardaba el día de devolución en su


parámetro día. Una vez se ha realizado la llamada dicho valor estará en la variable argdía,
declarada en el procedimiento de evento y utilizada como argumento para llamar al
procedimiento.

Para resumir diremos que cuando cree un nuevo procedimiento escribirá las líneas de
código necesarias para llevar a cabo el propósito del mismo y especificará la lista de argumentos
que utilizará en su cuerpo.

Sin embargo la llamada al procedimiento será como una instrucción más del lenguaje,
donde se especificará el nombre del procedimiento seguido, sin paréntesis, de una línea de
argumentos que deberá coincidir en número y tipo con los parámetros de la definición y que darán
valora los parámetros para que se ejecute el cuerpo del procedimiento.

Una vez se llega a la instrucción End Sub del procedimiento, el flujo de ejecución vuelve a
la línea siguiente a la que ocasionó la llamada.

Es posible que alguno de los argumentos utilizados en la llamada, haya sido modificado en
su valor, pudiendo utilizar el nuevo valor en las líneas de código que siguen a la llamada al
procedimiento.

9.4.CREAR PROCEDIMIENTOS FUCTION

El concepto de procedimiento es válido para un procedimiento Function, pero a


diferencia de los procedimientos Sub, un procedimiento Fuction siempre debe
devolver un valor asociado al nombre del mismo.

Por lo tanto, en el cuerpo del procedimiento aparecerá una asignación del valor a devolver
con el nombre del procedimiento.

El uso de los procedimientos Function suele estar más restringido que el de los
procedimientos Sub.

Un procedimiento Function es utilizado cuando necesitamos obtener un único valor,


resultado de un cálculo o proceso a realizar. Un procedimiento de este tipo no debería realizar más
que lo que se le pide: ni mostrar mensajes, ni devolver más valores en los parámetros, etc.

PAG. 70
Microsoft Visual Basic 6.0

Vamos a sustituir el procedimiento Sub Calcular Préstamo por un procedimiento Function


equivalente. En este caso es casi más lógico utilizar un procedimiento Function ya que único que
debe hacer es realizar un cálculo y devolver un único valor.

Las diferencias en la definición de un procedimiento Sub y otro Function comienzan por la


propia cabecera. Así, aunque el procedimiento Function también puede tener su lista de
parámetros, no debe aparecer ninguno que sirva para devolver el valor que calcula, ya que dicho
valor debe asociarse con el mismo nombre del procedimiento Function.

Además, al tener que devolver un valor asociado al nombre del procedimiento Function, el
procedimiento tiene que tener un tipo de datos. Esto se especifica indicando la cláusula As Tipo al
final de la cabecera del procedimiento, una vez indicada la lista de parámetros. Si no especifica
ningún tipo de datos, se aplicará la misma regla que con las variables, es decir, tendrá el tipo
Variant.

Public Function CalcularPréstamo (novedad AS Bolean) As Date


If (novedad = Ture) Then
CalcularPréstamo = (Date + préstamonovedad)
Else
Calcular Préstamo = (Dare + préstamospelícula)
Endd If
End Function

En la siguiente figura puede ver cómo quedaría el procedimiento Function equivalente:

En este capítulo ha podido crear un procedimiento Furiction que realiza el mismo proceso
que un procedimiento Sub. Ha conocido las diferencias entre uno y otro tipo de procedimientos en
cuanto a su definición.

En el próximo capítulo aprenderá las diferencias en cuanto a su llamada.

9.5. LLAMAR A PROCEDIMIENTOS FUNCTION

A sí como la llamada a un procedimiento Sub es como una instrucción más del lenguaje,
la llamada a un procedimiento Function suele estar situada como parte de una
expresión y no como una línea independiente de su código.

Ya que el procedimiento Function devuelve un valor asociado a su nombre, este valor


suele asignarse a alguna variable para poder utilizarlo en el código que ha realizado la llamada.

Así, una sentencia como argdía= CalcularPréstamo (argnovedad) será la forma normal
de llamar al procedimiento Function CalcularPréstamo.

Fíjese cómo ya no necesitamos el segundo argumento, ya que la definición del


procedimiento Function sólo presenta un parámetro.

PAG. 71
Visual Basic 6.0 Microsoft

Si desea utilizar el valor que devuelve el procedimiento Function, como es el caso, deberá
encerrar la lista de argumentos, en la llamada, con paréntesis. Recuerde que esto no es así en el
caso del procedimiento Sub.

Por ejemplo sería correcto utilizar la llamada al procedimiento Function de la siguiente


forma:

mensaje = "El día de devolución es: " & CalcularPréstamo (argnovedad)


Esto no podría haberlo hecho utilizando el procedimiento equivalente Sub, ya que éste
actúa como una instrucción más del lenguaje.

Por otra parte, el lenguaje de Visual Basic incorpora un gran número de funciones que
puede utilizar directamente en sus proyectos. En este caso no será necesario realizar la definición
de las mismas, sino que lo único que deberá hacer es llamarlas correctamente.

Utilice el si sistema de ayuda para conocer las numerosas funciones que tiene disponible.
Algunas de ellas, como MsgBox,InputBox, Date, etc. ya las ha utilizado a lo largo del curso.

9.6. PASO DE PARÁMETROS

A
referencia.
la hora de escribir la definición de un procedimiento Sub o Function puede
especificar como se pasan los parámetros de su lista de parámetros: por valor o por

Cuando el paso es por valor, se utiliza la palabra clave ByVal antecediendo al nombre del
parámetro en la definición del procedimiento. En este caso el procedimiento recibe una copia del
argumento utilizado en la llamada y no el mismo argumento. Si realiza cambios en su valor, estos
cambios podrán ser utilizados en el interior del procedimiento, pero no afectarán para nada a la
variable que actúa como argumento en la llamada.

Así, si en la definición del procedimiento Sub CalcularPrestámo, hubiera insertado la


palabra ByVal: Sub CalcularPréstamo(argnovedad As Boolean, By Val argdía As Date), no
podría haber comunicado el día de devolución, ya que al final del la ejecución del procedimiento
argdía mantendría el mismo valor que tenía antes de utilizarse como argumento en la llamada a
dicho procedimiento.

La otra forma de realizar el paso de parámetros es por referencia. En este caso no se


necesita especificar ninguna palabra clave, aunque también puede hacerlo con la palabra ByRef.

9.7. ÁMBITO DE ACTUACIÓN

E s una buena estrategia de programación la ocultación de datos, en el sentido de que


no todas las partes del código escrito deben conocer las interioridades de otras partes
de código, sino sólo lo que necesitan utilizar.

PAG. 72
Microsoft Visual Basic 6.0

Cuando su proyecto esté compuesto por distintos módulos, ya sean de formulario, de clase
o módulos generales de Visual Basic, es importante delimitar dónde se pueden utilizar y dónde no,
los procedimientos, variables y constantes que tenga definidos o declaradas.

El nivel de ocultación es establecido por el programador al declarar variables y constantes


o al de definir procedimiento, utilizando las palabras Public y Private.

Una declaración de variables del tipo Public NombreVariable As Tipo indica que dicha
variable puede ser utilizada tanto en el módulo donde se realiza la declaración como en el resto de
módulos de la aplicación.

Sin embargo, si la declaración fuera como PrivateNombreVariable AsTipo, dicha


variable sólo podría ser conocida y por lo tanto utilizada, en el mismo módulo donde se declara.

El uso de las palabras Public y Private también puede aplicarse a la definición de los
procedimientos: Public [Sub/Function] NombreProcedimiento () o Private [Sub/Function]
NombreProcedimiento(). El significado es el mismo.

Un caso especial se encuentra cuando declaramos variables en el interior de un


procedimiento. En estos casos, dichas variables sólo pueden ser conocidas por el propio
procedimiento, por lo que no es válida la declaración Public de éstas.

Además, si existe conflictos de nombre, al haber declarado dos variables con el mismo
nombre, una a nivel de módulo y otra a nivel del procedimiento, siempre tendrá preferencia la más
local, es decir, la declarada a nivel de procedimiento.

Al utilizar Dim en la declaración de variables, en lugar de Private o Public, la visibilidad


de dichas variables es la que deban tener por defecto: a nivel de módulo está visible para todos los
procedimientos del módulo y a nivel de procedimiento sólo para éste.

Finalmente, puede utilizar variables, constantes y procedimientos que estén declaradas o


definidos en distintos módulos. Para ello deberá utilizar el nombre del módulo para que no exista
confusión. Si la variable o procedimiento deseado se encuentra en un módulo general, no será
necesario incluir el nombre del módulo a no ser que desee evitar conflictos de nombre.

Así, si ha declarado la variable x en el módulo Form1 y la variable x en el módulo Form


2, deberá utilizar el nombre Form.x o Form2.x para poder utilizar una u otra variable, siempre
que sean públicas. El mismo razonamiento es aplicable a los procedimientos situados en distintos
módulos.

PAG. 73

Вам также может понравиться