Manual Visual Basic 6.0

214
Visual Studio 6.0. Visual Basic Lenguajes de Programación

Transcript of Manual Visual Basic 6.0

Page 1: Manual Visual Basic 6.0

Visual Studio 6.0. Visual Basic Lenguajes de Programación

Page 2: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 2

Page 3: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 3

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

Page 4: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 4

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

Page 5: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 5

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

Page 6: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 6

Page 7: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 7

Introducción a Visual Basic

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.

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.

S

N

1.1. LA PRIMERA APLICACIÓN

1.2. LA INTERFAZ DE VISUAL BASIC

Page 8: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 8

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.

Page 9: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 9

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.

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

V 1.3. PROYECTOS

Page 10: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 10

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.

Page 11: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 11

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.

C 1.4. ADMINISTRAR POYECTOS

Page 12: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 12

n 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.

E1.5. ESTABLECER OPCIONES DE VISAL BASIC

Page 13: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 13

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.

Page 14: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 14

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.

Page 15: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 15

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.

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.

O

E

1.6. TIEMPOS DE DESARROLLO

1.7. EL SISTEMA DE AYUDA

Page 16: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 16

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.

Page 17: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 17

Programación en Visual Basic

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).

E 2.1. ESTRUCTURA DEL CÓDIGO

Page 18: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 18

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.

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.

A 2.2. OBJETOS EN VISUAL BASIC

Page 19: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 19

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.

C 2.3. ESTABLECER PROPIEDADES

Page 20: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 20

• 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

Page 21: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 21

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

Page 22: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 22

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.

E2.4. UTILIZAR MÉTODOS

Page 23: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 23

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.

E 2.5. EXTENDER LOS EVENTOS

Page 24: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 24

Page 25: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 25

Trabajar con Menús

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.

U 3.1. EL EDITOR MENÚS

Page 26: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 26

• 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.

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 .

U 3.2. ELEMENTOS DE MENÚ

Page 27: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 27

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.

Page 28: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 28

l 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.

A 3.3. TECLAS DE MÉTODO ABREVIADO

Page 29: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 29

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

del menú.

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.

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.

C

S

3.4. EVENTOS DE MENÚ

3.5. MENÚS CONTEXTUALES

Page 30: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 30

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.

Page 31: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 31

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).

E 3.6. OPCIONES DE MENÚ CONTEXTUAL

Page 32: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 32

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.

Page 33: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 33

Cuadro de Diálogo

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.

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:

E

V

4.1. INTRODUCCÓN

4.2. CUADROS PREDEFINIDOS

Page 34: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 34

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.

Page 35: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 35

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)

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.

U 4.3. CONTROL DIÁLOGO COMÚN

Page 36: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 36

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.

Page 37: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 37

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.

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.

A 4.4. CUADROS PERSONALIZADOS

Page 38: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 38

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.

Page 39: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 39

Controles básicos

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.

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.

L

D

5.1. INTRODUCCIÓN

5.2. ENTRADA DE DATOS

Page 40: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 40

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.

Page 41: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 41

• 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.

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.

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

(Frame).

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.

E

S

5.3. ETIQUETAS + CUADRO DE TEXTO

5.4. CONTROL MARCO

Page 42: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 42

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.

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.

E5.5. BOTONES DE COMANDO

Page 43: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 43

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.

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.

C5.6. BLOQUEAR CONTROLES

Page 44: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 44

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.

Page 45: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 45

Controles básicos II

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.

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

tiempo.

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.

E

L

6.1. CASILLAS DE VERIFICACIÓN

6.2. BOTONES DE OPCIÓN

Page 46: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 46

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.

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.

O 6.3. CUADROS DE LISTA

Page 47: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 47

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.

Page 48: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 48

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.

Page 49: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 49

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.

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.

U 6.4. CUADROS COMBINADOS

Page 50: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 50

Page 51: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 51

Fundamentos de Programación

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.

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.

E

U

7.1. INTRODUCCIÓN

7.2. VARIABLES

Page 52: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 52

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.

Page 53: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 53

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

operando.

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.

E 7.3. TIPOS DE DATOS

Page 54: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 54

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

cada carácter Numérico de rango Doble, o

cualquier texto de

Page 55: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 55

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.

S 7.4. CONSTANTE

Page 56: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 56

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.

Page 57: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 57

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.

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”.

E 7.5. OPERADORES DE VISUAL BASIC

Page 58: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 58

Page 59: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 59

Fundamentos de Programación II

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.

E 8.1. ESTRUCTURAS DE DECISIÓN

Page 60: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 60

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

Page 61: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 61

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.

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:

E 8.2. EXPRESIONES LÓGICAS

Page 62: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 62

= 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.

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.

U 8.3. MATRIZ DE CONTROLES

Page 63: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 63

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.

Page 64: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 64

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.

E 8.4. ESTRUCTURA DE REPETICIÓN

Page 65: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 65

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]

Page 66: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 66

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.

Page 67: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 67

Fundamentos de programación III

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.

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.

E

E

9.1. TIPOS DE PROCEDIMIENTOS

9.2.CREAR PROCEDIMIENTOS SUB

Page 68: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 68

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.

Page 69: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 69

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.

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.

E 9.3. LLAMAR A PROCEDIMIENTOS SUB

Page 70: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 70

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.

l 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.

E9.4.CREAR PROCEDIMIENTOS FUCTION

Page 71: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 71

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.

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.

A 9.5. LLAMAR A PROCEDIMIENTOS FUNCTION

Page 72: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 72

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.

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

referencia.

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.

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.

A

E

9.6. PASO DE PARÁMETROS

9.7. ÁMBITO DE ACTUACIÓN

Page 73: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 73

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.

Page 74: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 74

Page 75: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 75

Efectos Gráficos

a incorporación de elementos gráficos a sus aplicaciones, harán que éstas sean más agradables a los usuarios.

La impresión externa de su aplicación es muy importante, sobre todo al estar inmersa en

un sistema operativo cuya interfaz de usuario es gráfica.

Visual Basic incorpora una serie de controles gráficos que permiten la incorporación de elementos de este tipo a sus formularios. En este capítulo aprenderá a utilizar el control Line para dibujar líneas.

Si desea agregar líneas a sus formularios, Visual Basic le facilita el control Line en la caja de herramientas.

Este control tiene pocas propiedades, pudiendo establecer el grosor mediante la propiedad Border With o el color de la misma mediante BorderColor.

También podrá cambiar el estilo de línea, de forma que aparezca discontinua o a puntos mediante la propiedad BorderStyle.

El resto de propiedades son poco interesantes. En (X1, Y1) tiene el punto inicial y en (X2,Y2) el punto final de la línea.

isual Basic permite dibujar distintas formas a través del control Shape (Forma). Utilizando dicho control podrá dibujar un círculo, un óvalo, un rectángulo, un

cuadrado, etc.

Aunque no existe un gran número de posibilidades, es recomendable utilizar estos elementos con el objetivo de destacar aquello que más le interese o por simple carácter estético.

Podrá dibujar formas en sus formularios a través del botón de la caja de herramientas.

La apariencia inicial del objeto Shape es la de un rectángulo. Dicha característica se establece a través de la propiedad Shape.

Utilizando la propiedad Shape podrá dibujar cinco formas distintas: rectángulo (Rectangle), cuadrado (Square), óvalo (Oval), círculo (Circle), rectángulo con esquinas redondeadas (Rounded Rectangle) y cuadrado con esquinas redondeadas (Rounded Square).

L

V 10.2. EL CONTROL SHAPE

10.1. EL CONTROL LINE

Page 76: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 76

Otras propiedades interesantes de este control se refieren al relleno de las formas. Con la propiedad FillStyle podrá indicar un patrón de relleno, es decir, si desea que la forma dibujada aparezca rellena de líneas verticales, horizontales, etc.

También, mediante FillColor podrá establecer el color de dicho relleno. O cambiar el color del borde de la forma, mediante BorderColor, como si fuera un control Line

n muchas ocasiones habrá podido practicar el arrastre de objetos en las aplicaciones Windows. Esta es una característica muy utilizada que permite la realización, de una

forma rápida, de procesos que de otra forma pueden necesitar varias acciones para llevarse a cabo.

Visual Basic permite que el programador indique cuándo y cómo un control puede ser arrastrado con el ratón por la ventana en la que se encuentra.

Los controles situados en dicha ventana podrán darse cuenta que un determinado control está siendo arrastrado por encima de ellos, presintiéndoles responder de la forma adecuada.

Si desea permitir que el usuario pueda arrastrar un control en tiempo de ejecución tiene dos posibilidades: realizar un arrastre automático o controlar cuándo debe empezar dicho arrastre. Esto se controla mediante la propiedad DragMode del objeto que desea arrastrar.

Esta propiedad tiene dos valores: manual y automático. En el primer caso deberá ser usted quien controle cuándo debe permitirse arrastrar un control. Normalmente esto dependerá de alguna circunstancia que será comprobada cuando se pulse en dicho control, es decir, en el evento MouseDown.

Si DragMode se establece a automático, el usuario podrá arrastrar el control sin necesidad de que usted programe nada más. En este caso, perderá control sobre el arrastre, pero será mucho más sencillo de programar.

Otra circunstancia que debe tener en cuenta al arrastrar un objeto por la ventana en tiempo de ejecución, es el aspecto que tendrá el puntero del ratón cuando lo haga.

Si no especifica nada en la propiedad DragIcon, Visual Basic muestra un icono como puntero del ratón que es el contorno del objeto arrastrado. Normalmente le interesará mostrar un icono distinto, indicando la acción de arrastrar el objeto.

DragMode y DragIcon son las dos propiedades que debe tener en cuenta a la hora de permitir el arrastre de objetos en su aplicación. Por otra parte, el evento a tener en cuenta es DragOver.

El evento DragOver sucede cuando el usuario arrastra un objeto por encima de otro. Es este último, es decir, el destino, el que reconoce el evento DragOver.

E10.3. ARRASTRAR CON EL RATÓN

Page 77: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 77

El procedimiento de evento DragOver trabaja con cuatro parámetros: Source, X, Y y State. El parámetro Source representa el control que está siendo arrastrado, siendo X e Y la posición exacta en la que se encuentra.

El parámetro State indica si el movimiento del ratón, al realizar el arrastre, es para entrar en el objeto destino o para salir del mismo. Todos estos parámetros están situados en la cabecera del procedimiento DragOver.

Si State tiene el valor 0, entonces el movimiento del objeto que está siendo arrastrado es para entrar en el objeto que reconoce el DragOver. En el caso de que State sea igual a uno, el movimiento de arrastre es hacia afuera, es decir, saliendo. Utilizando el valor de este parámetro podrá decidir que debe ocurrir. Por ejemplo, le puede interesar cambiar el icono de un control imagen destino, etc.

Por lo tanto recuerde: establezca la propiedad DragMode y DragIcon del objeto que va a ser arrastrado y utilice el evento DragOver del objeto destino del arrastre.

IDENTIFICAR OBJETOS MEDIANTE LA PROPIEDAD TAG

En muchas ocasiones le interesará poder identificar un determinado objeto en tiempo de ejecución. Para ello, existe una propiedad que, establecida en tiempo de diseño le permite identificar los objetos en ejecución, dicha propiedad es Tag.

Al establecer una cadena descriptiva en tiempo de diseño en la propiedad Tag, usted podrá consultar dicha propiedad y dependiendo de su valor, realizar una acción u otra.

uando el usuario pulsa con el ratón en un objeto y lo mueve, está haciendo un arrastre o drag del objeto.

Cuando decide soltar el botón del ratón se dice que está colocando el objeto o que está

haciendo un drop del mismo. Cuando esto sucede, el evento DragDrop es generado y reconocido por el objeto sobre el que se ha soltado.

Es posible que el usuario suelte el botón del ratón sobre otro objeto dibujado o que lo haga

en una zona del formulario vacía. En este último caso es el formulario el que reconoce el evento DragDrop, mientras que en el primer caso, es el objeto sobre el que se ha soltado. El procedimiento DragDrop posee en su cabecera tres parámetros que tienen el mismo significado que en el caso de DragOver Source X e Y. Usted debe decidir qué sucede cuando el usuario arrastra un objeto y lo suelta sobre otro. El hecho de soltarlo en una posición distinta a la que se encontraba no implica absolutamente nada, es decir, el objeto lo cambiará de posición si no lo indica usted expresamente a través de la programación.

C 10.4. COLOCAR CON EL RATÓN

Page 78: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 78

En el siguiente procedimiento de evento DragDrop se indica qué debe ocurrir cuando soltamos el objeto identificado con la cadena “Disquete” en su propiedad Tag:

Private Sub imgDestino_DragDrop (Source As Control, X As Single, Y As Single) If Source.Tag = "Disquete" Then imgDestino.Height = imgDestino.Height + 150 imgDestino.Width = imgDestino.Width + 150 Source.Visible = False End If End Sub

En este caso se aumentará el tamaño del control destino, haciéndolo a través de sus propiedades Height (altura) y Width (anchura) y no se mostrará en pantalla el objeto arrastrado, al poner su propiedad Visible a False..

Para Finalizar, vale la pena comentar que puede desear mover un objeto en tiempo de ejecución arrastrando y soltándolo en la nueva posición. Para ello podrá utilizarlos parámetros del procedimiento DragDrop y el método Move. Así podría incluir una instrucción del tipo Source.MoveX,Y en el procedimiento DragDrop, con lo que movería el objeto arrastrado a la nueva posición especificada por (X,Y).

Page 79: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 79

El Administrador Visual de Datos

on esta lección comienza el tratamiento de las bases de datos en Visual Basic. Este entorno de desarrollo está especialmente enfocado a la creación de aplicaciones de

bases de datos. Si usted ha elegido Visual Basic como lenguaje de programación habrá sido, fundamentalmente, por la facilidad que presenta en el control de distintos orígenes de bases de datos.

Visual Baste puede acceder a distintos formatos de bases de datos. El acceso más sencillo es a una base de datos creada con el Motor Jet que incorpora Visual Basic y que es compartido por Access. Es decir, sí usted crea una base de datos en Access o en el Administrador visual de datos de Visual Basic, el acceso a la misma será inmediato.

Otro tipo de bases de datos a las que podrá acceder sin más en Visual Basic, son las llamadas bases de datos ISAM (Método de Acceso Secuencial Indexado) entre las que se incluyen bases de datos de Btrive, dBASE, FoxPro y Paradox.

El otro tipo de acceso más común es a una base de datos compatible con ODBC (Conectividad abierta de bases de datos), en las que es necesario un controlador ODBC para el tipo específico de base de datos. Si posee dicho controlador, el acceso también será inmediato a través del mismo.

En esta lección aprenderá a trabajar con el Administrador de datos incorporado en Visual Basic para crear nuestra base de datos. En lecciones posteriores aprenderá a utilizar dicha base de datos tanto para mostrar la información que almacena como para extraer resultados de la misma.

A partir de ahora se supone que el alumno ya tiene ciertos conocimientos sobre bases de datos, en especial con la tecnología de bases de datos relacionales. Si no es así, debería pensar hacer el curso sobre Access que tenemos disponible.

n el resto del curso accederemos a un sólo tipo de bases de datos: las creadas con el Motor Jet incorporado en Visual Basic y compartido por Access.

Visual Basic 6.0 incorpora la versión 3.51 del Motor Jet de bases de datos (para 32 bits).

Este Motor Jet es un completo Sistema Gestor de Bases de Datos con el que podrá crear y manipular una base de datos.

C

E

11.2. DISEÑAR LA BASE DE DATOS

11.1. INTRODUCCIÓN

Page 80: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 80

La creación de una base de datos es un proceso en el que se pueden diferenciar dos partes: el análisis y el diseño.

Usted realizará el análisis de la base de datos cuando piense qué necesita almacenar para tenerlo disponible siempre que lo desee. Piense por ejemplo en la aplicación del videoclub: necesitará guardar información sobre los socios, sobre las películas, sobre los préstamos, etc. Dicha información debe permanecer aunque usted salga de la aplicación o apague el ordenador.

El segundo paso es el diseño de la base de datos. Este proceso es dependiente del tipo de base de datos que vaya a utilizar. En la actualidad no existen dudas: utilizará el tipo relacional.

Al crear una base de datos relaciona tendrá que trabajar con tablas, registros, campos, índices, relaciones, etc.

isual Basic incorpora el Administrador visual de datos con el que podrá crear y establecer las propiedades de las tablas que con formen su base de datos.

Sin embargo, si posee Microsoft Access es recomendable utilizarlo en lugar del

Administrador de datos, ya que generará el mismo tipo de bases de datos pero con una facilidad y flexibilidad mucho mayor.

Para acceder al Administrador visual de datos utilice la opción de mismo nombre en el menú Complementos.

A través de esta opción accede al Administrador de datos, que es una aplicación independiente, pudiendo utilizarla desde fuera de Visual Basic.

El Administrador de datos permite modificar una base de datos ya creada o crear una nueva.

Una base de datos creada con el Motor jet está compuesta por un único archivo, de extensión .MDB. Tanto si la crea con el Administrador de datos como con Access el resultado será el mismo.

Una base de datos, MDB se compone de un conjunto de tablas y de QueryDef. Las tablas sol la estructura fundamental de la base de datos, formadas por los distintos

V 11.3. CONOCER EL ADMINISTRADOR

Page 81: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 81

campos y sus valores en los registros introducidos.

Las QueryDef son instrucciones SQL, que veremos posteriormente, que han sido guardadas con un nombre al tener interés en utilizarlas en futuras ocasiones.

En una lección posterior aprenderá más sobre el lenguaje de consulta SQL, por ahora sepa que SQL es un lenguaje que permite, entre otras cosas, extraer resultados de una base de datos.

Para ver o modificar el diseño o de una determinada tabla, pulse con el botón derecho del ratón sobre el nombre de la tabla y seleccione Diseñar..., entonces estarán disponible el conjunto de campos que posee la tabla, además de las principales propiedades de estos campos.

Podrá crear nuevos índices para la tabla o modificar los ya existentes. Utilice el botón Agregar índice de esta ventana.

Otro aspecto importante en la estructura de la base de datos es el conjunto de relaciones que se hayan establecido.

Page 82: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 82

o primero que debe hacer al crear una base de datos es indicar donde se guarda el archivo de la misma y darle un nombre válido.

Es una buena idea tener todos los archivos que vaya generando su proyecto de Visual

Basic en la misma carpeta, incluyendo el archivo de base de datos que respalde la aplicación.

Una vez ha creado el archivo de base de datos, es el momento de ir creando las tablas que constituirán la misma.

Utilice el menú contextual de la Ventana de base de datos para crear nuevas tablas.

Deberá introducir el nombre de la nueva

tabla, los campos que la constituyen así como su tipo y tamaño. Puede utilizar más de una palabra para los nombres de los campos, de forma que el nombre sea lo suficientemente descriptivo. Es mejor Registro película que RegPel, por ejemplo.

En cuanto a los tipos de datos disponibles, decir que aparecen los típicos de las bases de datos

como: Booleano (verdadero/falso), numérico, flecha, texto, etc.

Es posible, por ejemplo, que desee crear un campo de tipo contador. Estos campos son de tipo numérico, pero es el sistema el que se encarga de generarlos, asegurando así la unicidad de dichos valores. Deberá seleccionar un campo de tipo Long y activarla casilla AutoIncrField.

L 11.4. CREAR LA BASE DE DATOS

Page 83: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 83

También podrá establecer propiedades más avanzadas como: reglas de validación, valores por defecto (predeterminado), etc.

l siguiente paso a dar debe ser la creación de índices. Sobre todo es muy importante establecer la clave principal de la tabla, es decir, aquella cuyo valor será único para

todos los registros de la misma.

Utilice el botón Agregar índices del cuadro Estructura de tabla de la base de datos y agregue o elimine los índices necesarios.

Al crear un índice, debe indicar el nombre con el que se conocerá y podrá ser utilizado en el código escrito en Visual Basic, los campos de la tabla que constituirán dicho índice y otras características como la necesidad de introducir un valor en un campo siempre que se cree nuevo registro (casilla Required)o la obligatoriedad de que no existan dos o más registros con el mismo valor en dicho campo (casilla Único).

Es importante que se dé cuenta de la jerarquía que existe al crear una base de datos. Una base de datos está constituida por un conjunto de tablas y de QueryDef. Y las tablas, a su vez, están constituidas por conjuntos de campos. Además cada tabla tiene su correspondiente conjunto de índices...

E 11.5. CREAR ÍNDICES

Page 84: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 84

A continuación se muestra el esquema de la base de datos Videoclub.mdb, utilizada a lo largo del curso. TABLA ACTORES

- Campos: Nombre del campo Tipo de datos Tamaño Nombre actor Texto 100 Registro película Entero largo 4

- Índices: Nombre del índice Campos que intervienen Clave principal Clave principal (Nombre actor,

Registro película) Sí PELICULASACTORES Registro película No

TABLA PELÍCULAS

- Campos: Nombre del campo Tipo de datos Tamaño Registro película Entero largo (contador) 4 Título Texto 150 Director Texto 100 Productor Texto 100 Público Texto 25 Género Texto 50 Año Texto 4

- Índices: Nombre del índice Campos que intervienen Clave principal Clave principal Registro película Si

Page 85: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 85

TABLA PRÉSTAMO

- Campos:

Nombre del campo Tipo de datos Tamaño Registro película Entero largo 4 Nif Texto 13 Fecha préstamo Fecha/Hora 8 Fecha devolución Fecha/Hora 8 Devuelto Booleano 1

- Índices: Nombre del índice Campos que intervienen Clave principal Clave principal (Registro película, Nif

Fecha préstamo) Si PELÍCULASPRÉSTAMO Registro película No Préstamo Nif Nif No Préstamo Registro Registro película No SOCIOSPRÉSTAMO Nif No

TABLA SOCIOS

- Campos: Nombre del camp Tipo de datos Tamaño Nif Texto 13 Nombre Texto 100 Apellidos Texto 100 Dirección Texto 255 Teléfono Texto 25 Fecha introducción Fecha/Hora 8

- Índices: Nombre del índice Campos que intervienen C lave principal Clave principal Nif Si

Page 86: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 86

Page 87: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 87

Acceso a base de datos

n este capítulo aprenderá a utilizar el control Data para crear sencillas aplicaciones de bases de datos.

Con dicho control podrá acceder a una base de datos, mostrar la información que ésta

posea, modificarla e incluso introducir nuevos registros en alguna de sus tablas. Todo sin programar ni una línea de código.

El control Data permite establecer la conexión con la base de datos a utilizar y a partir de entonces cualquier tabla o consulta de dicha base de datos está disponible en su aplicación.

Los pasos a seguir para utilizar una base de datos en su aplicación Visual Basic son:

1. Dibujar un control Data y establecer la conexión a la base de datos apropiada.

2. Utilizar otros controles para manejar la información almacenada en la base de datos. Estos controles son conocidos corno controles enlazados, al depender del control Data como origen de los datos que muestran.

Para dibujar un control Data en su formulario, utilice el botón situado en la caja de herramientas de Visual Basic.

El control Data tiene cuatro botones al estilo de un reproductor de vídeo. Con los botones podrá acceder al anterior y posterior registro, respectivamente. Con los botones

accederá al primer y último registro.

Las propiedades del control Data que debe establecer para crear la conexión con la base de datos son:

• Connect: indica el tipo de base de datos a la que vamos a acceder. Por omisión este tipo es Access, es decir, una base de datos creada con el Motor jet como aprendió en la lección anterior.

• DatabaseName: en esta propiedad se indica el archivo de bases de datos a la que se quiere

acceder. Indicando la ubicación exacta de dicho archivo.

• RecordSource: permite indicar el conjunto de datos específico, de la base de datos indicada en la anterior propiedad, al que queremos acceder. Normalmente será el nombre de una tabla de la base de datos o una instrucción SQL.

Estableciendo adecuadamente el valor de estas tres propiedades se crea la conexión con la

base de datos, no es necesario absolutamente nada más.

E 12.1. EL CONTROL DATA

Page 88: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 88

Si conoce la base de datos y el conjunto de datos a los que desea acceder en tiempo de diseño, podrá utilizar la ventana Propiedades para establecer estas propiedades, en caso contrario lo podrá hacer en el código que escriba.

CUIDADO CON LA PROPIEDAD DATABASENAME

Hay que tener mucho cuidado al establecer la propiedad DatabaseName. Si indica en esta propiedad una ubicación específica del disco duro, entonces esta propiedad seguirá teniendo ese valor al crear el fichero ejecutable de la aplicación.

Fíjese que la aplicación será ejecutada en los equipos de los usuarios finales, por lo que seguramente se producirá un error en tiempo de ejecución al no poder encontrar la ubicación especificada en DatabaseName.

Por ello, cuando vaya finalizando la aplicación, es conveniente utilizar el nombre del directorio donde se instalará la aplicación en la propiedad DatabaseName, en lugar de un valor específico. Esto lo podrá conseguir de la siguiente forma en su código:

DatabaseName = App.path & "\" & NombreBasedeDatos donde se utiliza el directorio en el que se encuentra la aplicación (se supone que no es el directorio raíz), representada aquí por el objeto App. El archivo de bases de datos especificado deberá estar en este directorio.

Al instalar la aplicación en el equipo del usuario final, dicho directorio se actualizará con la elección efectuada por el usuario. En la última lección del curso podrá encontrar más detalles sobre los programas de instalación.

na vez establecida la conexión a la base de datos e indicado el conjunto de datos a los que vamos a acceder mediante el control Data, es necesario utilizar otros controles

para mostrar o introducir dicha información.

Estos controles son conocidos como controles enlazados, ya que el origen de la información que muestran está ligado (o enlazado) a un determinado control Data.

Existen dos propiedades que deberá modificar para enlazar controles con el control Data: DataSource y DataField.

• DataSource: en esta propiedad indicaremos el control Data que actuará como origen de datos.

• DataField: campo específico al que se enlazan el control.

U 12.2. CONTROLES ENLAZADOS

Page 89: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 89

Por ejemplo: txtNif.DataSource = datSocios txtNif.DataField = "Nif"

indica que se ligue el control txtNif al campo Nif de la tabla SOCIOS, a la que se accede mediante el control Data datSocios. Este control deberá tener correctamente establecidas las propiedades Connect, DatabaseName y RecordSource.

l utilizar un control Data y establecer la conexión con la base de datos, está indicando el conjunto de datos sobre los que quiere tener acceso. En Visual Basic a dicho

conjunto de datos se llama Recordset, siendo una propiedad del control Data.

En Visual Basic 6.0 existen tres tipos de Recordscts: Table, Dynaset y Snapshot. Dicho tipo se establece mediante la propiedad RecordsetType del control Data, que predeterminadamente tiene el valor Dynaset.

Un recordset del tipo Dynaset es un conjunto dinámico de registros que representa una determinada tabla o el resultado de una consulta, según se haya establecido la propiedad RecordSource del control Data. Puede agregar nuevos registros, modificar los existentes e incluso eliminar registros y todos estos cambios se reflejarán en la base de datos afectada.

Un recordset de tipo Table representa una determinada tabla de la base de datos. Al crear un recordset de este tipo estará representando dicha tabla, cargándose en memoria un sólo registro, que se corresponde con el registro actual. Toda modificación que realice, incluida la eliminación o introducción de nuevos registros, se verá reflejada en la tabla.

Finalmente el tipo Snapshot crea una copia estática del conjunto de datos al que se accede mediante el control Data. En este caso no podrá actualizar la base de datos sino sólo mostrar los datos accedidos.

Tanto el tipo Dynaset como el Snapshot permiten acceder a datos de más de una tabla, no así el tipo Table en el que sólo podrá trabajar con una tabla.

A 12.3. RECORDSETS

Page 90: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 90

i crea un recordset ya sea del tipo Dynaset o del tipo Table, podrá realizar modificaciones en la base de datos subyacente sin tener que programar una línea de

código. Al ejecutar la aplicación, podrá desplazarse a través de los registros utilizando el control Data y, cualquier modificación que realice en dichos registros se verá reflejada en la base de datos al acceder a un nuevo registro. Además, podrá comprobar, mediante la propiedad DataChanged de un control enlazado, si el valor mostrado por dicho control ha sufrido modificaciones respecto al valor original. En caso afirmativo, dicha propiedad tendrá el valor True.

ambién podrá agregar nuevos registros a una base de datos sin tener que programar para ello. En este caso deberá situarse en el último registro y moverse al siguiente.

Si establece correctamente la propiedad EOFAction, al realizar dicha acción, se creará un nuevo registro en el que podrá introducir la nueva información. La propiedad EOFAction del control Data de Visual Basic 6.0 que puede tener tres valores: Move Last, EOF o Add New. Esta propiedad permite establecer lo que ocurre cuando se llega al final del recordset del control Data.

Si EOFAction tiene el valor MoveLast, entonces mantiene el último registro como registro actual, sin desplazarse al siguiente, que no existe, aunque pulsemos el botón del control Data para desplazarnos al próximo registro.

Si el valor es EOF, deja el registro actual invalidado (ya que dicho registro todavía no existe) y desactiva el botón que permite desplazarnos al siguiente registro. Deberá controlar esta situación en su código ya que cualquier intento de acceder a la información del registro actual producirá un error al no ser un registro válido.

Si posee el valor AddNew entonces cuando se desplace más allá del último registro, Visual Basic creará un registro nuevo en la base de datos, donde podrá introducir la nueva información.

Este último valor, Add Nex es el que permite añadir registros a la base de datos (específicamente a una tabla de la base de datos) sin tener que programar para ello. Recuerde que para crear un nuevo registro deberá sobrepasar el último registro que tenga en esos momentos entonces Visual Basic limpiará el valor de los controles enlazados permitiéndole introducirla información del nuevo registro. Cuando se mueva a otro registro, se añadirá a la base de datos.

S

T

12.4. MADIFICAR LA BASE DE DATOS

12.5. AÑADIR REGISTROS

Page 91: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 91

Al igual que se puede indicar qué debe ocurrir cuando se llega al final de un recordset también podrá hacerlo cuando se llega al principio mediante la propiedad BOFAction del control Data.

Utilice el sistema de ayuda para informarse al respecto.

En esta lección ha aprendido a utilizar el control Data para modificar y añadir datos a una base de datos sin tener que programar ni una línea de código. En la próxima lección aprenderá a programar el control Data para realizar dichas operaciones de una forma más controlada y flexible.

Page 92: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 92

Page 93: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 93

Programar con la base de datos

En la lección anterior aprendió a acceder a una base de datos sin necesidad de programar,

sólo estableciendo las propiedades oportunas del control Data.

En esta lección aprenderá a escribir código para realizar procesos que ya hizo en la anterior lección, pero de una forma más flexible y potente.

El control Data nos permite movernos por el Recordset de una forma rápida y sencilla a través de sus botones. Sin embargo, en muchas ocasiones deseará escribir código en el que es necesario moverse a un determinado registro rápidamente.

Para ello es necesario entender que aunque un Recordset es una propiedad de un control Data, también tiene carácter de objeto como sí mismo, por lo que serán aplicables otras propiedades y métodos.

La forma de hacerlo será con la sintaxis estándar:

Nombre.ControlData.Recordset.NombrePropiedad NombreControlData.Recordset.NombreMétodo

donde tanto NombrePropiedad como NombreMétodo son del Recordset y no del control Data.

A continuación resumimos los métodos que puede utilizar para desplazarse por el Recordset.

• MoveFirst: nos desplazamos al primer registro del recordset. Este método es equivalente a pulsar en el botón del control Data.

• MovePrevious: permite desplazarse al registro anterior del Recordset. Equivalente a pulsar en el botón del control Data.

• MoveNext: permite desplazarse al registro siguiente del recordset. Equivalente a pulsar en el botón del control Data.

• MoveLast: nos desplazamos al último registro del recordset. Este método es equivalente a pulsar en del control Data.

• Move filas [,inicio]: permite desplazarnos un número específico de registros hacia delante o hacia atrás respecto del marcador inicio.

Podrá utilizar dichos métodos del Recordset para desplazarse por los registros que

muestran los controles enlazados.

13.1. MOVERSE POR EL RECORDSET

Page 94: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 94

El Recordset contiene un registro actual que es aquel cuya información se muestra en los controles enlazados.

Al utilizar los métodos comentados anteriormente o al hacer uso de los botones equivalentes del control Data, desplaza el registro actual, moviéndose en el recordset. Por ello cada vez que desplace el registro actual deberá consultar las propiedades BOF y EOF del recordset para comprobar si el registro al que se mueve es un registro válido. Como puede comprobar en la figura, existe un marcador BOF que le india que se encuentra al principio del recordset y otro EOF que le indica que está al final del recordset.

Si sitúa el registro actual en dichos marcadores, no se producirá error pero no deberá intentar acceder a la información del registro actual ya que no es un registro válido.

Si sobrepasa dichos marcadores, producirá un error en tiempo de ejecución. Utilice las propiedades BOF y EOF para prevenir este tipo de errores.

La acción indicada por el valor de las propiedades BOFAction y EOFAction del control Data, se ejecutan cuando el registro actual se sitúa en los marcadores BOF y EOF, respectivamente.

n muchas ocasiones deseará encontrar un registro determinado. Para localizar registros puede utilizar los métodos Find cuando trabaje con recordsets de los tipos Dynaset o

Snapshot, o utilizar el método Seek para un recordset del tipo Table.

Todos estos métodos son métodos del objeto Recordset.

El método Find presenta cuatro variantes: FindFirst, FindLast, FindNext y FindPrevious.

FindFirst busca el primer registro que cumpla un determinado criterio; FindLast busca el último que lo cumpla; FindNext y FindPrevious siguen la búsqueda hacia delante o hacia atrás.

Para que pueda seguir mejor el curso en pantalla, en la figura siguiente se muestra el formularlo (y el nombre de cada control) que es utilizado en este y el próximo capítulo. El formulario permite prestar películas.

E 13.2. BUSCAR REGISTROS

Page 95: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 95

Como podrá imaginar. Cuando se realiza un préstamo de cierta película, será necesario controlar que la persona que se la lleva existe en nuestra base de datos. Es decir, necesitaremos buscar un registro específico en la tabla SOCIOS. Por ello se ha insertado en el formulario el control Data datSocios, que permite acceder a la tabla SOCIOS de la base de datos (estableciendo las propiedades DatabaseName y RecordSource).

Es recomendable consultar el manual, en la lección 12, para ver la estructura de la tabla SOCIOS.

Antes de hacer todo esto, necesitare lleva la película es un socio válido.

Para ello se utiliza el siguiente código:

With datSocios .Recordset.FindFirst ¨Nif =´¨& txtNumsocio.Text&¨`¨ lf. Recordset.NoMatch Then MsgBox “Lo siento, no es un socio válido." ExitSub End If EndWith

Mediante el uso de la estructura With se ahorra el tener que teclear mucho código. Así, en este caso y hasta que se indique el fin de la estructura con End With, no será necesario incluir la palabra datSocios en el código.

En la línea. Recordset.FindFirst¨Nif='¨& txtNumsocio.Text ¨´¨ es donde se realiza la búsqueda de un determinado registro del recordset.

Fíjese cómo, si no hubiese utilizado la estructura With, tendría que haber escrito el nombre del control data: datSocios.Recordset.FindFirst¨Nif= `¨ & txtNumsocio.Text &¨´¨

Page 96: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 96

Al utilizar el método FindFirst del recordset, está indicando que se busque el primer registro del recordset cuyo valor en el campo Nif coincide con el valor que se ha introducido en el cuadro de texto txtNumsocio, donde el usuario de la aplicación introducirá el Nif del socio. Si comprueba la estructura de la tabla SOCIOS, verá cómo el campo Nif es un campo de texto, por lo que es necesario que al realizar el criterio de comparación, en cerremos entre apóstrofos(') el valor buscado. Si el valor de comparación fuera numérico, no haría falta utilizar estos apóstrofos. El criterio en si encierra entre comillas dobles(¨). Por otra parte, fíjese en el uso del operador concatenación & para crear el criterio de búsqueda. Si por ejemplo, se hubiera introducido el Nif 00.000.001-A en el cuadro de texto, esta línea quedaría de la siguiente forma: datSocios.Recordset.FindFirst¨Nif ='00.000.001-A’” Seguidamente se utiliza el método Nomatch del Recordset para comprobar, una vez realizada la búsqueda, si se ha encontrado algún registro o no. Si no se ha encontrado, el método Nomatch devolverá True por lo que se mostrará un mensaje mediante MsgBox y se saldrá inmediatamente del procedimiento, utilizando ExitSub. En este caso es lógico que si el número de socio no existe en nuestra base de datos, salgamos inmediatamente del procedimiento, sin realizar el préstamo de la película. Fíjese cómo no ha sido necesario utilizar el nombre del control datSocios en las líneas situadas entre With y End With. En el caso de encontrar el socio, el método Nomatch devolverá el valor False, por lo que no entraremos en la estructura If-Then sino que seguiremos con el resto del procedimiento.

i recuerda la lección anterior, podía utilizar el valor AddNew propiedad EOFAction del control Data para agregar nuevos registros a una tabla.

Esta forma, aunque muy sencilla, sólo es adecuada cuando estamos accediendo a una única

tabla en el recordset.

El objeto Recordset contiene el método AddNew que permite la creación de un registro nuevo (en blanco) donde podrá asignar los valores a sus campos.

Una vez introducida dicha información, deberá hacer uso del método Update del Recordset, con el objetivo de que el nuevo registro se actualice en la tabla. Si no utiliza Update, el nuevo registro no se agregará finalmente.

En el formulario Prestar películas se ha dibujado un control Data que nos permite tener acceso a la tabla PRÉSTAMO de la base de datos. El control tiene el nombre datPréstamo y será

S 13.3. AÑADIR REGISTRO

Page 97: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 97

utilizado para agregar los préstamos que se vayan sucediendo. Estudie la estructura de la tabla PRÉSTAMO si es necesario.

Veamos qué código debe añadir al procedimiento de evento CIick del botón Prestar para agregar un nuevo registro a la tabla PRÉSTAMO.

Una vez calculado el día de devolución de la película y validado el socio que se la lleva, es el momento de realizar el préstamo en sí:

'Agregar a la tabla PRÉSTAMO el nuevo registro datPréstamo.Recordset.AddNew datPréstamo.Recordset("Registro pelicula") = Val(txtCódigo Película.Text)

datPréstamo.Recordset("Nif “) = txtNumsocio.Text datPréstamo.Recordset("Fecha préstamo") = CDate(txtFecha préstamo.Text) datPréstamo.Recordset("Fecha devolución")=argdía datPréstamo.Recordset("Devuelto") = False

datPréstamo.Recordset.Update

Una vez creado el nuevo registro del recordset mediante el método AddNew, deberemos dar el valor adecuado a los campos de dicho registro. La forma de acceder aun determinado campo es mediante la sintaxis siguiente:

NombreControlData.Recordset("Nombre Campo")

En definitiva, cada uno de los campos actúa como una propiedad del Recordset, a la que tenemos que acceder mediante el uso de paréntesis.

En el código anterior se van rellenando el valor de cada campo del nuevo registro de PRÉSTAMO. En dos ocasiones se ha tenido que utilizar una función para convertir el texto, que es el tipo de datos de todo cuadro de texto, en el tipo adecuado para que coincida con el tipo de datos de los campos de la tabla. Una vez introducidos todos los datos, se utiliza Update y el registro queda insertado en la tabla. Debe tener en cuenta que el hecho de añadir un nuevo registro no implica que éste se convierte automáticamente en el registro actual del recordset. Si desea que el nuevo registro sea el registro actual puede utilizar la propiedad del Recordset, LastModified, para indicar el desplazamiento al registro que haya sido el último en modificarse, que será el nuevo registro añadido.

Page 98: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 98

En esta línea de código lo puede ver: datPréstamo.Recordset.Bookmark = datPréstamo.Recordset. LastModified. donde se utiliza la propiedad Bookmark para saltar rápidamente al nuevo registro (indicado por el marcador LastModified). Bookmark le permite guardar el puntero del registro actual y colocarse rápidamente en un registro específico: Dim registroActual registroActual = datPréstamo.Recordset.Bookmark 'Se guarda el registro actual datPréstamo.Recordset.MoveFirst 'Desplazamos el registro actual datPréstamo.Recordset.Bookmark=registroActuaI 'Vuelve al marcador guardado En este capítulo ha aprendido a añadir nuevos registros en una base de datos. Cuando se añaden nuevos registros o se modifican los ya existentes, es necesario establecer la corrección de los nuevos valores de los campos. Es decir, deberá introducir en sus aplicaciones de bases de datos, controles de validación de todo aquello que introduzca el usuario. Este proceso no se ha visto reflejado en este capítulo, ya que será tratado en la siguiente lección.

ediante el método Delete podrá eliminar un registro entero de recordset. En este caso deberá haberse situado en dicho registro y hacer uso del método.

Tenga cuidado después de eliminar un determinado registro, ya que el registro actual sigue

siendo el registro eliminado, por lo que cualquier intento de acceder a la información del registro actual provocará un error de ejecución.

Por ello es conveniente desplazarse a un registro válido una vez haya utilizado el método Delete. Por otra parte, no será necesario utilizar Update para hacer efectiva la eliminación.

A continuación se muestra el código que permite eliminar el registro actual del recordset:

If datPelículas.Recordset.EOF = False Then 'No borrar si está vacío datPelículas.Recordset.Delete If datPelículas.Recordset.EOF = True Then cmdEliminar.Enabled=False End If datPeliculas.Recordset.MoveLast

End If

M 13.4. ELIMINAR REGRISTROS

Page 99: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 99

En la primera línea se comprueba si el recordset está vacío es decir, si su propiedad EOF tiene valor True. Esta comprobación no debería ser necesaria ya que si permite eliminar un registro es porque esta acción debe poder llevarse acabo, si no, a nivel de interfaz de usuario debería haberlo impedido. Sin embargo es conveniente establecer más de un sistema de validación por si alguno falla, sobre todo cuando esté interactuando con la base de datos.

Finalmente nos movemos al último registro mediante MoveLast, ya que el registro actual no es válido al haber sido eliminado. En el caso de no existir ningún registro válido, MoveLast nos situará en el marcador EOF.

uando utiliza un control Data y otros controles enlazados para mostrar la información de la base de datos, puede modificar el valor de los campos y, al trasladarse a otro

registro, dicha modificación se actualiza en la base de datos.

Esto sucede si el tipo de recordset no es Snapshot, que no es actualizable.

Esta situación la puede reflejar en el código mediante primero el método del recordset Edit y después la actualización mediante el método Update.

De la misma forma que en el caso del método AddNew, si no se realiza la actualización, los cambios no se llevarán a cabo en la base de datos asociada.

Para permitir una mejor comprensión del curso en pantalla, se muestra aquí el formulario en el que se está trabajando en este capítulo de la lección. Este formulario refleja la situación en la que un determinado socio devuelve una película que tenía en préstamo.

En esta situación, el usuario introduce el código de la película devuelta y se lleva acabo la devolución. Es necesario, por lo tanto, encontrar el registro de la tabla PRÉSTAMO que lo refleja e indicar en el campo Devuelto el valor True, es decir, que se ha devuelto.

Veamos el código que permite editar el registro adecuado:

C13.5. EDITAR REGISTRO

Page 100: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 100

‘Edición del registro .Recordset.Edit .Recordset("Devuelto") = True 'Cambiamos el valor .Recordset.Update 'Actualizamos el registro en la BD

Fíjese cómo primero se utiliza el método Edit, después se cambia el valor del campo Devuelto y finalmente se utiliza Update.

A continuación y con carácter ilustrativo, se muestra el código completo del procedimiento:

Private Sub cmdAceptar_ Gick() Dim criterio As String, mensaje As String Dim retraso As Integer

‘criterio de búsqueda con dos condiciones criterio = "[Registro película]=" & txtCódigo.Text & “and Devuelto=False"

‘Buscar el primero, que cumpla el criterio. Debe ser el único. With datPréstamo .Recordset.FindFirst criterio

If.Recordsct.No Match Then 'no se ha encontrado MsgBox “Película no prestada o inexistente.”

Else 'se ha encontrado retraso = Date -. Recordset(" Fecha devolución") If (retraso > 0) Then mensaje = “ La película debería haber sido devuelta hace”_ & retraso & " días por el socio " &.Recordset("Nif) &”.” respuesta = MsgBox(mensaje, vbYesNo) Else mensaje= ” Esta película la tiene en alquiler el socio “_ &.Recordset( “Nif”) & "." respuesta = MsgBox(mensaje, vbYesNo) End If

Edición del registro If (respuesta = vbYes) Then .Recordset.Edit .Recordset(" Devuelto") = True’Cambiamos el valor .Recordset. Update ‘Actualizamos el registro en la BD MsgBox "Realizando actualización...” End If

End If EndWith txtCódigo.Text="” txtCódigo.SetFocus cmdAceptar.Enabled = False 'volvemos a deshabilitar el botón

EndSub

Page 101: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 101

CERRAR UN RECORDSET

El método Close del objeto Recordset cierra un recordset que haya sido previamente creado, liberando los recursos que tenga asignados. Si después de utilizar este método, intenta acceder a algún elemento del recordset, se producirá un error de ejecución.

No es necesario cerrar explícitamente el Recordset ya que esta circunstancia también se producirá cuando el formulario que contenga el control Data se descargue de memoria (método Unload) o se ejecute la instrucción End.

Page 102: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 102

Page 103: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 103

Opciones Avanzadas de Bases de Datos

sta lección finaliza el tratamiento de las bases de datos desde Visual Basic. En las últimas tres lecciones ha aprendido a crear bases de datos mediante el Administrador

visual de datos, a crear sencillas aplicaciones de bases de datos sin necesidad de escribir código y a utilizar el objeto Recordset mediante código para realizar aplicaciones más complejas.

En esta lección aprenderá a utilizar un control especializado en el acceso a bases de datos: el control Cuadrícula enlazada a datos. También se realizará una introducción a la creación de consultas de selección mediante el lenguaje SQL y se le mostrará alguna forma de validar los datos que introduce el usuario en una aplicación de bases de datos.

Si desea ampliar conocimiento sobre el mundo de las bases de datos relacionales, le recomendaremos realizar el curso de Microsoft Access que tenemos disponible.

n ocasiones deseará mostrar un conjunto de registros a la vez, con sus correspondientes campos, al estilo de un informe. En esta situación, Visual Basic

incorpora un nuevo control llamado FlexGrid.

El control FlexGrid permiten mostrar información de forma tabular, es decir, como un conjunto de filas y columnas.

Al utilizar dicho control podrá mostrar en cada una de sus columnas un campo y en cada una de las filas un registro, del recordset al que haya sido enlazado.

El control Cuadrícula enlazada a datos no aparece en la caja de herramientas estándar de Visual Basic ya que es un control personalizado (ActiveX estandar).

Deberá agregarlo expresamente a la caja de herramientas mediante la opción Componentes del menú Proyecto.

El control FlexGrid aparece inicialmente con dos filas y dos columnas. Esta característica se puede modificar en tiempo de diseño o esperar a que en tiempo de ejecución, cuando se enlace con un determinado recordset, se ajuste al mismo.

La propiedad que establece el enlace con el correspondiente control Data es, al igual que en el resto de controles enlazados, DataSource. Sin embargo, no presenta la propiedad DataField ya que cuando utilice una cuadrícula para mostrar un conjunto de registros, que seguramente tendrán más de un campo.

E

E

14.1. INTRODUCCIÓN

14.2. CUADRÍCULA ENLAZADA A DATOS

Page 104: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 104

Otras propiedades interesantes de dicho control son Row y Col que especifican la celda actual del control.

Otra propiedad interesante es WordWrap, que establecida a True hace que el texto que es demasiado largo se ajuste a la línea siguiente dentro de la misma celda.

Cuando un control FlexGrid se enlaza a un control Data, los datos se muestran en sólo lectura, por lo que no es posible modificar o eliminar directamente los datos mostrados.

En este capítulo ha conocido un nuevo control, la Cuadrícula enlazada a datos. En el Siguiente aprenderá a utilizar el lenguaje SQL para establecer el recordset que se mostrará en dicho control. En este caso dicho recordset será fruto de una consulta en la que se involucre más de una tabla.

uando desee mostrar información que provenga de más de una tabla, no tendrá más remedio que utilizar el lenguaje SQL para establecerla correspondiente consulta en la

propiedad RecordSource de un control Data.

SQL es un lenguaje que pretende ser estándar en el acceso a bases de datos relacionales, de forma que, independientemente del origen de la información, usted pueda acceder a ella a través de instrucciones SQL.

Este capítulo introduce una pequeña parte de dicho lenguaje, con el que podrá realizar consultas que permitan mostrar información de tablas de bases de datos. Estas consultas se conocen como consultas de selección.

Puede establecer la propiedad RecordSource del control Data en tiempo de ejecución y darle el valor de una determinada consulta SQL. De esta forma el usuario podría especificar lo qué quiere extraer de la base de datos.

Una vez establecida la propiedad RecordSource, debe utilizar el método Refresh del control Data para crear el objeto Recordset, al haber cambiado la propiedad RecordSource.

En las líneas siguientes se realiza este proceso. Fíjese cómo el usuario habrá introducido una instrucción SQL en el cuadro de texto Text1, estableciendo el valor de RecordSource:

Data1.RecordSource = Text1.Text Data1.Refresh

La instrucción que utilizará para crear consultas de selección SQL es SELECT. Aquí puede ver la sintaxis de esta instrucción (esta sintaxis está reducida al no presentar la cláusula GROUP BY).

C14.3. CONSULTAS EN SQL

Page 105: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 105

SELECT <columnas>

FROM <tablas> [WHERE <condiciones>] [ORDER BY <columnas>]

Como puede observar, la instrucción SELECT empieza con dicha palabra y un conjunto

de columnas, es decir, el conjunto de campos que queremos que muestre la consulta como resultado de la misma.

Seguidamente aparece la cláusula FROM, que identifica las tablas sobre las que se realiza la consulta. Los campos especificados en la cláusula SELECT deben pertenecer a las tablas especificadas en FROM.

Posteriormente aparecen dos cláusulas opcionales, como indican la presencia de corchetes. La cláusula WHERE especifica los criterios que se deben cumplir para que un determinado registro aparezca en el resultado de la consulta.

Normalmente serán expresiones de comparación del tipo NombreCampo = Valor o usando ciertas funciones del SQL.

Finalmente la cláusula opcional ORDER BY especifica en qué orden aparecerán el resultado de la consulta. Debe especificar el campo o conjuntos de campos por los que se ordenarán los registros resultado de la consulta. También puede indicar si el orden será ascendente o descendente.

Veamos algunos ejemplos:

SELECTTítulo FROMPELÍCULAS

En este caso ha indicado que se muestre el campo Titulo de los registros situados en la tabla PELÍCULAS.

Si desea que se muestren más de un campo, deberá separarlos por comas. Y si desea que se muestren todos los campos de una tabla puede utilizar el carácter*. Así, la siguiente consulta devolvería todos los campos de la tabla PELICULAS:

SELECT* FROMPEÚCULAS

Otro ejemplo:

SELECT SOCIOS.Nombre, SOCIOS. [Fecha introducción] FROM SOCIOS, PRÉSTAMO WHERESOCIOS.Nif=PRÉSTAMO.Nif

Page 106: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 106

Esta consulta es un poco más compleja. En este caso se está indicando que se muestren los

campos Nombre y Fecha introducción de 1os registros situados en la tabla SOCIOS cuyo Nif exista en algún registro de la tabla PRÉSTAMO.

Fijase en varios detalles:

Primero: si utiliza más de una tabla en la consulta es conveniente indicar el nombre de la tabla en la cláusula SELECT junto al nombre del campo que desea mostrar, así no podrá existir ambigüedad. Piense, por ejemplo que dos tablas podrían tener el mismo nombre para uno o más campos.

Segundo: si el nombre de un campo está compuesto por más de una palabra, deberá utilizar corchetes para delimitarlo como puede ver en el campo Fecha introducción.

Tercero: todas las tablas implicadas aparecen en la cláusula FROM separadas por comas.

Cuarto: la cláusula WHERE presenta el criterio de comparación. En este caso se elegirán aquellos registros de SOCIOS cuyo Nif están presentes en la tabla PRÉSTAMO. Fíjese cómo tanto SOCIOS como PRÉSTAMO poseen un campo Nif, en el que se estableció una relación 1 a muchos.

Finalmente, ¿qué pasa si un socio ha alquilado más de una película? Entonces aparecerá

más de una vez en el resultado de la consulta.

Para evitar esta circunstancia puede utilizar el predicado DISTINCTROW de la siguiente forma:

SELECT DISTINCTROW SOCIOS. Nombre, SOCIOS. [Fecha introducción] FROM SOCIOS, PRÉSTAMO WOERE SOCIOS.Nif = PRÉSTAMO.Nif AND PRÉSTAMO.Devuelto = False

Se ha creado un criterio en el que se incluye más de una condición. Al utilizar el operador

AND está indicando que se cumplan las dos condiciones, que sean iguales el valor del Nif y que el campo Devuelto presente el valor False, es decir, que no se haya devuelto la película.

Finalmente, si desea ordenar de alguna forma los registros resultado de la consulta, puede utilizar la cláusula ORDER BY:

SELECTPELÍCULAS.Título,PRÉSTAMO.[Fecha préstamo] FROM PELICULAS, PRÉSTAMO WHEREPELÍCULAS.[Registropelicula=PRÉSTAMO.[Registro película] ORDER BY PRÉSTAMO.[Fecha préstamo]

En este caso se muestran el Título y la Fecha de préstamo de las películas prestadas,

ordenadas, de forma ascendente, por la fecha de préstamo. Puede ordenarlas de forma descendente, para ello escriba la palabra DESC al final de la cláusula ORDER BY.

Page 107: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 107

El lenguaje SQL es mucho más amplio de lo que se ha mostrado en este capítulo. Puede utilizar el sistema de Ayuda de Visual Basic para aprender más, si así lo desea.

n el curso en pantalla se muestra en ese capítulo el uso de una consulta SQL para permitir mostrar la fecha de devolución, junto al nombre y apellidos del socio y el

registro de la película de todos los préstamos cuya fecha de devolución ha pasado.

Esta consulta SQL es utilizada para establecer la propiedad RecordSource de una cuadrícula enlazada a datos, de forma que se completan el segundo y tercer capítulo de la lección: en el segundo se presenta el nuevo control Cuadrícula y en el tercero cómo crear consultas de selección en el lenguaje SQL

En la figura puede ver cómo quedaría el procedimiento de evento donde se establece la propiedad RecordSource a la consulta SQL:

Se ha utilizado el carácter _ para poder utilizar más de una línea en la instrucción. Debe utilizar siempre un espacio en blanco antes de este carácter para que Visual Basic entienda que la instrucción sigue en la siguiente línea.

Mediante el operador de concatenación & se crea la instrucción SELECT correctamente en más de una línea.

Repasemos la consulta SQL:

En las tres primeras líneas, correspondientes ala cláusula SELECT, se establece lo que queremos que se muestre. Fíjese en que el nombre del campo aparece junto a la correspondiente tabla en la que se encuentra, para evitar cualquier confusión.

En la cláusula FROM se indica las tablas a las que deseamos acceder: SOCIOS y PRÉSTAMO.

E 14.4. CRITERIOS COMPLEJOS

Page 108: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 108

En la cláusula WHERE se establece el criterio de búsqueda. Fíjese cómo deben coincidir el Nif, la fecha de devolución debe ser mayor que el día en el que se realiza la búsqueda y la película no debe haber sido devuelta. El operador And indica que deben cumplirse todas y cada una de estas condiciones.

En la cláusula ORDER BY se indica el ordenen el que aparecerán los registros de la consulta. Fíjese cómo uno de los campos que establece dicho orden es el Nif, campo que no aparece en el resultado de la consulta.

En la siguiente figura puede ver el resultado que produce esta consulta SQL en el estado de la base de datos utilizada en la aplicación que ha estado diseñando en gran parte del curso.

n toda aplicación que utilice datos introducidos por el usuario es fundamental validar dichos datos y asegurarse así de que sean correctos.

Esta necesidad es mayor si la aplicación interactúa con una base de datos. No debe permitir que se escriban datos incorrectos en una base de datos, sino que antes de actualizarla deberá establecer el correspondiente nivel de validación.

El primer nivel de validación que debe ofrecer en sus aplicaciones es a nivel de la propia interfaz de usuario.

La regla a seguir es la de no permitir realizar una acción si la situación no es la adecuada. El uso de la propiedad Enabled consigue que el usuario sólo lleve a cabo aquellas acciones que el programador le permita realizar en cada momento.

E14.5. VALIDAR LA ENTRADA

Page 109: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 109

Si establece el valor de la propiedad Enabled de un objeto a False, entonces será responsabilidad suya el activar dicho objeto (poner Enabled a True) cuando la situación lo permita. En otro caso el usuario no podrá utilizar el objeto en ningún momento.

Este primer nivel de validación no suele ser suficiente, también deberá comprobar la corrección de los datos en sí. No debe permitir que el usuario introduzca lo que quiera sino que tenga sentido.

Existen numerosas formas de establecer validaciones en sus formularios. La más sencilla es a nivel de formulario. En este caso suele encontrarse un botón Aceptar o similar que permite al usuario pulsarlo cuando ha introducido la información necesaria y, por lo tanto, ya se pueda realizar la operación que desea.

Es cuando se pulsa en dicho botón, cuando el código escrito en Visual Basic actúa para validar la entrada producida.

Sin embargo, podría establecer validación en cada una de las pulsaciones de tecla que se realice sobre un determinado cuadro de texto, permitiendo, por ejemplo sólo la introducción de números.

De esta última forma no sería necesario que el usuario pulsara en un determinado botón para detectar que la información introducida no es correcta, sino que esta validación se haría mucho antes. Lógicamente esta forma es más costosa en términos de programación.

uando directamente con un control Data en un formulario, puede utilizar alguno de sus eventos para establecer niveles de validación de los datos que ha introducido o

modificado el usuario.

El evento más utilizado en este aspecto es Validate. Dicho evento sucede en un gran numero de ocasiones, siempre antes que el registro actual cambie.

Así, el evento Validate sucede:

• • Al movernos a un registro distinto mediante un método Move. • • Al utilizarlos métodos AddNew, Update, Delete o Find • • Al cerrarla base de datos. • • Al descargar el formulario.

C 14.6. VALIDAR CON EL CONTROL DATA

Page 110: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 110

En las siguientes líneas puede ver un procedimiento de evento Validate típico:

Private Sub datSocios_Validate(Action As Integer Save As Integer) Dim respuesta As Integer

If Save = True Then respuesta = NsgBox(“¿Desea guardar los cambios?", vbYesNo) If respuesta = vbNo Then Save = False EndIf Endlf End Sub

El procedimiento de evento Validate contiene dos parámetros: Action indica por qué se ha producido el evento y Save indica si se debe o no modificar la base de datos.

Así, el código utiliza el parámetro Save y permite confirmar, por parte del usuario. que se lleve a cabo la modificación que ha realizado. Si se responde No, los cambios no tienen electo al establecer el valor False del parámetro Save. Recuerde, por otra parte, que al crear una tabla de una base de datos, puede establecer algunos criterios de validación. Así, podrá introducir reglas de validación junto al mensaje que debe aparecer si se infringen, reglas de integridad referencial, etc.

Pida información sobre los eventos Error y Reposition si desea ampliar sus conocimientos sobre la validación con el control Data.

Page 111: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 111

Trabajar con Archivos

n la mayoría de aplicaciones Windows existe una o más opciones en las que el usuario tiene que interaccionar con el sistema de archivos de su equipo.

Abrir, guardar o buscar un determinado archivo, son situaciones en las que debe ser el

usuario el que se sitúe en el lugar correspondiente en el sistema de archivos.

Usted ya ha aprendido a utilizar el control Diálogo Común para utilizar los cuadros de diálogo predefinidos Guardar como o Abrir. En esta lección conocerá otros controles que permiten también tener acceso al sistema de archivos de una forma menos “prefabricada”.

Visual Basic proporciona una serie de controles especializados en el acceso al sistema de

archivo de Windows.

Estos controles son el Cuadro de lista de unidades, el Cuadro de lista de directorios y el Cuadro de lista de archivos. Cada uno de estos controles permite acceder a los correspondientes elementos del sistema de archivos. Para dibujar un cuadro de lista de unidades (DriveListBox) utilice el botón situado en la caja de herramientas.

Al dibujar el cuadro de lista de unidades, deberá darle un tamaño adecuado para que se pueda mostrar cualquier unidad que tenga en su ordenador. En tiempo de diseño se muestra la etiqueta de la unidad del disco duro de forma que pueda ajustar el control al tamaño de la misma.

Sin embargo, esto no nos asegura que en el equipo del usuario final el tamaño sea adecuado.

El control Cuadro de lista de unidades incluye las unidades de disco duro, disco flexible, CD-ROM, etc.

Con el botón situado en la caja de herramientas puede utilizar controles Cuadro de lista de directorios (DirListBox).

Este tipo de control permite mostrar los directorios del sistema de archivo de su ordenador. Recuerde que en terminología de Windows un directorio es equivalente a una carpeta.

Es conveniente permitir que dicho control muestre tres o cuatro carpetas. Visual Basic, le muestra en tiempo de diseño, la carpeta en la que se inicia la aplicación y en la que por defecto, guardará el proyecto.

E 15.1. CONTROLES ESPECIALIZADOS

Page 112: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 112

Visual Basic incorpora autamáticamente una barra de desplazamiento vertical cuando existen más subcarpetas de las que se pueden ver en el control.

Finalmente el tercer control que permite interaccionar con el sistema de archivos es el Cuadro de lista de archivos (FileListBox). En este cuadro es donde aparecen los archivos que posee en el sistema de archivos del ordenador. Utilice el botón de la caja de herramientas para dibujar estos controles en sus formularios.

Visual Basic también incorporará automáticamente una barra de desplazamiento si el tamaño del control no permite ver completamente los archivos.

Este último control tiene una propiedad que suele ser interesante establecer. La propiedad Pattern permite especificar qué tipos de archivos son mostrados en el cuadro de archivos. En muchas ocasiones sólo deseará mostrar determinados archivos y no todos, como es la opción predeterminada (*.*).

Puede utilizar los caracteres comodín * y ? al establecerla propiedad Pattern. Estos caracteres tienen el mismo significado que en el MS-DOS o Windows, para especificar nombres de archivos. Estableciendo la propiedad Pattern, por ejemplo, con la cadena *.txt, estará indicando que se muestren sólo los archivos que tengan dicha extensión (archivos de texto en este caso).También puede mostrar más de un tipo de archivos, simplemente sepárelos con ;

Page 113: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 113

n tiempo de diseño, al dibujar los distintos controles del sistema de, archivos, estos muestran la unidad y carpeta en la que se crea el proyecto por omisión. También

muestra en el cuadro de archivos, aquellos archivos situados en esta carpeta y que cumplen con la propiedad Pattern.

Esto tiene el objetivo de permitirle dibujar con más facilidad dichos controles, estableciendo el tamaño adecuado de los mismos.

Sin embargo, en tiempo de ejecución, el usuario puede cambiar de unidad o de carpeta y esta situación no se verá reflejada si no se indica en el código.

Para que los controles estén sincronizados, es decir, cuando cambie de unidad de disco se muestren las carpetas adecuadas y cuando cambie de carpeta, se muestren los archivos existentes en la nueva carpeta, es necesario conectar los controles.

Fíjese como un cambio en la unidad de disco debe implicar el cambio de carpeta y, por lo tanto, de la lista de archivos. Sin embargo cambiar de carpeta sólo implicará que debemos mostrar la lista de archivos actualizada.

El evento predeterminado del control Cuadro de lista de unidades es Change. Este evento sucede cada vez que el usuario despliega la lista y selecciona una unidad distinta a la actual, por lo que es el evento adecuado para actualizar la lista de directorios de la siguiente forma:

Private Sub Dir1_Change() Dir1.Path = Drive1.Drive End Sub

Mediante esta línea de código está actualizando la ruta de acceso del cuadro de directorios, de forma que muestre las carpetas correspondientes a la unidad seleccionada y que está especificada en su propiedad Drive.

Pero ¿qué sucede si lo que cambia es el directorio actual mostrado en el cuadro de directorios? Fíjese que esto puede suceder tanto si se cambia la unidad en la que está trabajando como si se cambia directamente en el cuadro de directorios.

Deberá entonces actualizar también la lista de archivos del cuadro de archivos para que muestren los archivos situados en el nuevo directorio. Esto se realiza de la siguiente forma en el evento Change del cuadro lista de directorios:

E 15.2. CONECTAR LOS CONTROLES

Page 114: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 114

Private Sub Dir1_Change() File1.Path = Dir1.Path EndSub

De esta forma se actualiza la lista de archivos. Fíjese cómo estamos conectando la unidad con el directorio y el directorio con el archivo. Y esta conexión se establece en el momento en que cambia el elemento de nivel superior. La propiedad Path sólo está disponible en tiempo de ejecución, cuando el usuario interactúa con los objetos de la misma forma que puede hacer en cualquier aplicación Windows donde tenga que trabajar con archivos.

uando está escribiendo código en tiempo de diseño, Visual Basic puede detectar errores sintácticos y avisarle de ellos.

Posteriormente, se pueden detectar más errores en tiempo de compilación. Estos errores

son de carácter semántico, como puede ser la aplicación de un método a un objeto que no lo posee.

Sin embargo, también pueden suceder errores en tiempo de ejecución. Este tipo de errores son sucesos inesperados que Visual Basic no puede controlar por sí mismo sino que usted debe o bien prevenirlos o bien manejarlos. En el curso en pantalla ha podido comprobar que se producía un error en tiempo de ejecución. Estaba interactuando con la unidad de disco flexible, pero no existía ningún disco en ésta. Fíjese como este error no puede ser detectado por Visual Basic hasta que ocurre, ya que su código debe permitir que el usuario utilice la unidad de disquete. Ante este tipo de errores, Visual Basic presenta la posibilidad de incorporar lo que se llama un manejador o controlador de error. Los manejadores de error son un conjunto de líneas de código que sólo debe ejecutarse cuando se produce un error que es interceptado por Visual Basic.

Entonces, en lugar de proceder de la forma estándar, que en la mayoría de ocasiones será mostrar un mensaje y terminar la aplicación, usted deberá escribir código para que la aplicación actúe de una forma más robusta y no finalice ante dichos errores. Escriba manejadores de error siempre que pueda preveer la ocurrencia de un error en tiempo de ejecución. Normalmente tendrá que hacerlo en todas las situaciones donde el programa permita acceder a elementos externos del ordenador como unidades de disco, impresoras, etc. En la siguiente lista se muestran algunas de estas situaciones:

C 15.3. MANEJADORES DE ERROR

Page 115: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 115

• Problemas con unidades de disco flexible: discos no formateados, la puerta de la unidad está abierta, etc.

• Desbordamiento: cálculos demasiado complejos. • Falta de memoria. • Problemas con la red. • Impresoras no disponibles. • Errores lógicos: nombre de archivo mal escrito. etc.

La instrucción que permite detectar un error en tiempo de ejecución y trasladarlo a un

manejador de error es On Error. Dicha instrucción tiene la siguiente sintaxis: On Error Go To etiqueta, donde etiqueta

representa el nombre del manejador del error, que debe estar situado en el mismo procedimiento que la instrucción On Error. Cuando suceda un error en el procedimiento donde coloca On Error, Visual Basic dará el control al manejador de error escrito en dicho procedimiento. En las siguientes líneas puede ver el código de un manejador de error.

ManejadorError: IfErr.Number = 68 Then resp = MsgBox(“El dispositivo no está preparado", vbAbortRetryIgnore) If resp = vbRetry Then

Resume Elself resp = vbAbort Then

Drive1.Drive = Dir1.Path Resume Next End If End If

La primera línea es la etiqueta que representa el nombre del manejador, fíjese como debe incluir dos puntos al final de la misma. Nuestro código pregunta si dicho error es el 68 y en ese caso presenta un cuadro de diálogo en el que se le indica al usuario que el dispositivo no está preparado, dándole la opción de reintentar, cancelar o ignorar el error (fíjese en el uso de la constante vbAbortRetrylgnore en la función MsgBox). Si desea utilizar el mensaje estándar, puede utilizar la propiedad Description de la siguiente forma: resp = MsgBox(Err.Description, vbAbortRetrylgnore)

Page 116: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 116

Una vez interceptado el error y ejecutado el código asociado al manejador es necesario indicar qué sucede una vez se salga del manejador. En este caso esto dependerá de lo que desee hacer el usuario. Si desea reintentar la operación (resp será igual a vbRetry) entonces se ejecuta la instrucción Resume, que vuelve a ejecutar la misma instrucción que provocó el error. Si lo que desea es anular la operación (resp será igual a vbAbort), entonces se ejecuta Resume Next, que lo que hace es devolver él control a la siguiente instrucción que provocó el error. En otro caso (resp = vbIgnore), se lleva a cabo la acción aunque sea incorrecta y se sigue, terminando el procedimiento de evento. Recuerde: Resume vuelve a ejecutar la línea que provocó el error y ResumeNext lleva el control a la siguiente de dicha línea. Debe tener cuidado al escribir el código del manejador de error. Sí sitúa este código al final del procedimiento, dicho código se ejecutará aunque no se produzca ningún error. Utilice la instrucción Exit Sub para impedir que esto ocurra cuando no se ha producido ningún error. A continuación se muestra el código completo del procedimiento:

Private Sub Drive1_Change() Dím resp As Integer On Error GoTo ManejadorError Dir1.Path=Drive1.Drive Exit Sub ManejadorError: IfErr. Number = 68Then resp = MsgBox("El dispositivo no está preparado", vbAbort RetryIgnore) If respuesta= vbRetry Then Resume EIself respuesta= vbAbort Then Drive1.Drive= Dirl.Path Resume Next Endlf EndIf EndSub

Page 117: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 117

n los anteriores capítulos ha estado trabajando para programar lo que debería ocurrir cuando el usuario interacciona con el cuadro de unidades y el directorio. Es decir,

permiten que se muestren las listas de directorios y archivos actualizadas.

Sin embargo aún no ha indicado qué debe pasar cuando se elige un archivo de la lista de archivos, que en definitiva, debe ser la acción que desea realizar el usuario.

En este capítulo escribiremos código para que, cuando el usuario haga doble clic en un determinado archivo de la lista, su contenido se muestre en un cuadro de texto.

Esto es posible porque los archivos que permitimos mostrar son archivos de texto, en los que sólo aparece texto sin formato.

Aquí puede ver el contenido del procedimiento de evento DblClick de la lista de archivos: Private Sub File1_DbIClick() Dim nuevalínea As String, LTexto As String Dim Texto As String, Archivo As String nuevalínea = Chr$(13) + Chr$(10) Archivo = File1.Path & "\" & File1.filename Open Archivo For Input As #1 Do Until EOF(1) Line Input #1, LTexto Texto = Texto & LTexto & nuevalinea Loop Textl.Text = Texto Close 1 EndSub

Cuando el usuario selecciona un determinado archivo de la lista, su nombre se especifica en la propiedad filename del cuadro lista de archivos. Sin embargo, deberá indicar la ruta de acceso completa, para lo que se concatena el directorio, que se encuentra en la propiedad Path y el carácter \, separador de directorios.

Una vez tenemos en la variable Archivo el nombre y ruta completa del archivo que deseamos mostrar es necesario abrir dicho archivo. Para ello se utiliza la instrucción Open La instrucción Open necesita el nombre del archivo a abrir, el modo en el que se va a abrir dicho archivo, que entre otros valores puede ser en modo lectura o en modo escritura y un número que se asocia con el archivo para el resto del código.

E 15.4. ARCHIVOS DE TEXTO

Page 118: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 118

En la línea Open Archivo For Input As #1 el archivo a abrir está situado en la variable Archivo, el modo es de lectura, especificado mediante la palabra Input y el número asociado es el 1. Una vez tenemos abierto el archivo en modo lectura, se utiliza la variable LTexto para ir almacenando cada una de las líneas del archivo de texto. Para ello se utiliza la instrucción Line Input, donde se indica el número del archivo y la variable en la que se guarda la línea de texto. Esta instrucción se sitúa en un bucle DoUntil…Loop, repitiéndose hasta que se llega al final del archivo de texto, especificado por la condición EOF(1). Seguidamente vamos guardando todo el texto en otra variable, Texto, donde se van concatenando cada una de las líneas que consta el archivo. En la línea Text1.Text= Texto es donde se asocia el contenido del archivo con el cuadro de texto del formulario, a través de su propiedad Text. Finalmente se cierra el archivo mediante la instrucción Close. No debe olvidar realizar dicha instrucción cuando finalice con un archivo.

Resumiendo, podemos decir que la secuencia correcta del tratamiento de un archivo de texto es abrirlo, trabajar con él y finalmente cerrarlo.

Por otra parte, el proceso que ha realizado en este capítulo sólo sirve para los archivos de texto sin formato. Este tipo de archivos no almacena ninguna cabecera ni códigos especiales y además no deben sobrepasar las 64Kb de tamaño.

Page 119: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 119

ara finalizar en el estudio de temas relacionados con el sistema de archivos de Windows y el trabajo con archivos, vamos a comentar el uso de una instrucción muy

potente, FileCopy, que permite realizar la copia de un determinado archivo.

La sintaxis de esta instrucción es FileCopyfuente, destino. Como se imaginará fuente indica el archivo del que queremos hacer la copia y destino el archivo que será resultado de la copia.

Deberá haber cerrado el archivo fuente antes de utilizar la instrucción FileCopy, ya que en caso contrario se producirá un error en tiempo de ejecución. Con la instrucción FileCopy podrá copiar cualquier archivo, independientemente de su tipo.

Por otra parte es conveniente controlar si la ubicación del archivo destino tiene suficiente espacio disponible para realizar la copia del archivo. En caso contrario se producirá un error al intentar hacer la copia, error que debería ser manejado por su código.

P 15.5. LA INSTRUCCIÓN FILECOPY

Page 120: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 120

Page 121: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 121

Utilización de OLE

ompartir información entre distintas aplicaciones es una de las características más potentes que presenta el sistema Windows. La pieza fundamental para conseguir esta

característica es el concepto de objeto, que ya ha sido tratado en este curso. Al compartir información, lo que realmente está haciendo es compartir objetos que son creados por dos o más aplicaciones Windows distintas. Es aquí donde entra en juego el estándar OLE, que sienta las bases para crear y compartir objetos entre distintas aplicaciones. Visual Basic actúa como nexo entre aplicaciones Windows al permitir el uso de objetos OLE en sus aplicaciones. Usted podrá tener en un mismo formulario de Visual Basic una hoja de calculo de Excel, un documento de Word, una imagen de Corel o cualquier objeto proveniente de una aplicación que cree objetos OLE.

Pero además de todo ello, en Visual Basic podrá utilizar los objetos de otras aplicaciones de la misma forma que cualquier otro objeto de Visual Basic. Podrá establecer o le sus propiedades, utilizara sus métodos, etc., en lo que es la llamada Automatización OLE.

Esta lección sólo es una pequeña introducción al mundo OLE. La complejidad de dicho

sistema es tal que requeriría de un curso entero para abordarlo, necesitando conocimientos avanzados en la programación orientada a objetos.

ediante el uso del control Contenedor OLE, podrá crear formularios de Visual Basic en los que incluya información proveniente de distintas aplicaciones

Windows.

Estos formularios son conocidos como documentos compuestos, en los que la funcionalidad que se necesita no la proporciona la aplicación creada con Visual Basic, sino que se aprovecha la de las aplicaciones que crean los objetos insertados.

Así, si el equipo donde se ejecuta la aplicación posee aplicaciones Windows como la hoja de cálculo Excel o el procesador de textos Word, no necesitará programar para conseguir que su aplicación presente la funcionalidad de dichas aplicaciones, sino que podrá utilizarlas desde su aplicación.

Fíjese en la importancia que esto representa, al poder crear auténticos sistemas empresariales en Visual Basic utilizando aplicaciones tan avanzadas como las ya mencionadas.

C

M

16.1. INRODUCCIÓN

16.2. El CONTENEDOR OLE

Page 122: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 122

Al crear un contenedor OLE mediante el botón de la caja de herramientas, Visual Basic presenta el cuadro de diálogo Insertar objeto, que seguramente habrá utilizado en más de una aplicación Windows.

En este cuadro de diálogo aparecen los distintos tipos de objetos que puede insertar en el formulario. Estos objetos provienen de las aplicaciones compatibles con OLE que tenga instaladas en su equipo.

Cuando una aplicación se instala en el ordenados, Windows anota dicha aplicación en lo que es llamado el Registro de Windows. Este Registro es como una base de datos donde Windows guarda información referente a las aplicaciones que tiene en su equipo. Entre otras cosas, se guardan los objetos insertables que ofrecen dichas aplicaciones y que después aparecen en el cuadro de diálogo Insertar objeto.

Puede insertar en su formulario un objeto nuevo utilizando la opción Crear nuevo o utilizar uno ya existente mediante la opción Crear desde archivo. Este último caso deberá especificar el archivo que posee el objeto a insertar.

Si desea que el objeto insertado aparezca en el formulario como un icono, puede activar la casilla Mostrar como icono del cuadro de diálogo Insertar objeto.

Por otra parte, puede indicar que el objeto sea incrustrado o vinculado. Como ya debe conocer, al incrustrar un objeto, se crea una copia y se guarda en la aplicación Visual Basic, por lo que sólo podrá usarse en ésta.

Sin embargo, si vincula el objeto, éste sigue estando almacenado en el archivo original, guardándose en nuestra aplicación una referencia al mismo y no el objeto en sí. Tenga en cuenta que en este caso cualquier otra aplicación podría utilizar el mismo objeto y modificarlo.

Además de utilizar el cuadro de diálogo Insertar objeto también puede usar un objeto OLE en un formulario a través del comando Pegado especial.

Page 123: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 123

Dibuje el contenedor OLE, cancele el cuadro diálogo Insertar objeto y utilice el comando Pegado especial a través del menú contextual del contenedor OLE. Lógicamente habrá tenido que trasladar el objeto a pegar al Portapapeles de Windows a través de un comando cortar o copiar.

El cuadro Pegado especial es semejante al de Insertar objeto, pero en este caso sólo permite insertar un tipo de objeto, el que se corresponda con la información situada en el Portapapeles.

También puede incrustar un objeto, para lo que utilizará la opción Pegar, o vincularlo, utilizando la opción Pegar vínculo.

En este capítulo ha insertado objetos OLE en un formulario de Visual Basic en tiempo de diseño, ya sea utilizando el cuadro de diálogo Insertar objetos o a través del comando Pegado especial.

Para ello deberá mostrar, en tiempo de ejecución, el cuadro de diálogo Insertar objeto o Pegado especial mediante métodos del objeto contenedor OLE y establecer las propiedades oportunas del nuevo objeto insertado.

Fíjese cómo en este caso debe escribir código, que no es necesario al insertar objetos en tiempo de diseño.

uando insertas un objeto a través del control Contenedor OLE, está en disposición de editar el objeto con la aplicación creadora del mismo. Para ello lo único que tiene que

hacer, en tiempo de ejecución, es doble clic sobre el objeto. Al activar el objeto haciendo doble clic, la aplicación servidora, o aquella en la que se creó el objeto, es iniciada y el usuario puede interactuar con ella utilizando toda la funcionalidad que presente.

C 16.3. EDICIÓN DE OBJETO

Page 124: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 124

En este sentido es importante indicar que existen aplicaciones que permiten que la edición sea en el propio control contenedor (conocido como Edición visual) y otras en las que la edición se produce en un ventana independiente. Para que la edición del objeto sea en el propio control contenedor OLE, es necesario haber incrustrado el objeto, ya que toda vinculación producirá que la aplicación servidora se muestre en una ventana independiente. Por otra parte, si el objeto se representa como un icono en nuestro formulario, también se presentará en una ventana independiente la aplicación servidora. Cuando la aplicación servidora se muestra en una ventana independiente, no existen problemas para presentar los menús y barras de herramientas de la misma. Sin embargo, si el formulario donde ha insertado un objeto posee menús o barra de herramientas y la edición del objeto se produce en el propio contenedor, deberá negociar dicho elementos. Es decir, deberá indicar cómo se debe mostrar. Si desea que los menús de la aplicación servidora se muestren al editar el objeto, es necesario que el formulario donde está insertado el objeto posea un elemento de menú, aunque está no visible. Además, en el editor de menús puede especificar en qué posición deben mostrarse cuando se edite el objeto en el contenedor OLE. La propiedad NegotiatePosition que aparece en el Editor de menús, establece la posición de los elementos del menú de nuestro formulario. Esta propiedad puede tener los siguientes valores:

• .0: indica que dicho elemento de menú no se verá cuando se edite el objeto, mostrándose únicamente el menú de la aplicación servidora.

• . Los valores 1, 2 y 3 establecen dónde se mostrará, pudiendo ser a la izquierda, centro o

derecha. Así, si elige 1, se mostrará a la izquierda del menú, donde normalmente aparece el elemento Archivo.

Por otra parte, independientemente de la propiedad NegotiatePosition del menús, es necesario establecer la propiedad NegatiateMenus del formulario a True. En otro caso, la negociación de menús no se llevará a cabo. Toda vinculación o uso de la opción Mostrar como icono implicarán que el objeto se edite en una ventana independiente.

n los anteriores capítulos se ha utilizado el contenedor OLE para insertar objetos en un formulario. Sin embargo algunas aplicaciones proporcionan objetos que pueden

utilizar como controles personalizados ( ActiveX) en Visual Basic. Así, podrá agregarlos a la caja de herramientas y utilizarlos como un control más de Visual Basic sin tener que usar el control OLE.

E16.4. OBJETOS INSERTABLES

Page 125: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 125

Para ello puede utilizar el menús contextual de la caja de herramientas o elegir

Componentes en el menú Proyecto. Aparecerá el cuadro de diálogo que se muestra en la figura, en el que, además de los

controles personalizados, también se pueden ver aquellos objetos insertables que tenga disponible en su equipo seleccionando la ficha Objeto insertables.

Active las casillas de aquellos objetos que utilice normalmente en su aplicación y ya no será necesario utilizar el Control contenedor OLE, insertando el objeto específico de una forma directa a través de los botones de la caja de herramientas que aparecen para ello.

Además, es posible que una misma aplicación aporte más de un tipo de objetos insertables.

Por ejemplo Excel permite la inserción de objetos hoja de cálculo y gráficos. Sin embargo, tenga en cuenta que, al utilizar un objeto insertable como control

personalizado en la caja de herramientas, sólo podrá incrustar un objeto nuevo ya que no tendrá la opción de utilizar un archivo existente. Pero sí podrá editarlo, en tiempo de ejecución aplicándose las mismas reglas que en el caso del Control contenedor OLE.

Page 126: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 126

na de las características más potentes de la utilización del estándar OLE es la Automatización OLE.

La Automatización OLE permite, mediante programación integrar varias aplicaciones

Windows en una aplicación creada en Visual Basic. El estándar OLE permite que las aplicaciones actúen bien como servidores OLE o como

clientes OLE. Un servidor OLE proporciona objetos que puede utilizar en otras aplicaciones. Un cliente OLE es una aplicación que utiliza objetos creados en una aplicación distinta, como se ha mostrado en esta lección.

Visual Basic permite crear aplicaciones que actúen como clientes OLE, pero también, en

su ediciones Profesionales y Empresariales, como servidores OLE. Al utilizar Automatización OLE, usted puede utilizar los objetos de otras aplicaciones

como si fuera objetos de Visual Basic, estableciendo propiedades y utilizando sus métodos. Así, puede crear objetos como documentos de Word, hojas de cálculo de Excel o cualquier

otro objeto proveniente de un servidor OLE y utilizarlos en su código.

Dim X As Object Set X = CreateObject ( “ Word . Basic “ ) X . ArchivoNuevo X . TamañoFuente 24 X . Insertar “Uso de la Automatización OLE”

En estos casos, el uso del Examinador de objetos permite conocer y pedir ayuda sobre los componentes de dichos objetos, facilitando la utilización de sus métodos y propiedades de la forma correcta.

En la figura anterior puede observar un fragmento de código donde se crea un objeto de

Word, se utiliza un método para crear un nuevo archivo, se establece la propiedad tamaño de fuente a 24 puntos y se inserta texto en el punto de inserción. Fíjese cómo no existen diferencia con cualquiera de los objetos que ha utilizado en el curso y, sin embargo, es un documento del procesador de textos Microsoft Word.

U 16.5. AUTOMACIÓN OLE

Page 127: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 127

Aplicaciones MDI

n muchas aplicaciones habrá tenido la posibilidad de trabajar en más de un archivo a la vez, situándose cada uno de ellos en una ventana independiente.

Este tipo de aplicaciones son conocidas como aplicaciones orientadas a documentos a

nivel de usuario y como aplicaciones MDI a nivel de programación.

En una aplicación MDI, como puede ser Microsoft Excel, existe una ventana principal, que posee su propio menú y barras de herramientas, y una o más ventanas secundarias, donde se sitúan los documentos con los que está trabajando.

Estas ventanas secundarias siempre se muestran en el interior de la principal, sin poder salir de ella.

Además, cuando no existe ninguna ventana secundaria abierta, el menú que presenta la ventana principal cambia, aportando normalmente menos opciones que cuando existen ventanas secundarias abiertas.

E 17.1. UNA APLICACIÓN MDI

Page 128: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 128

Esto es así porque realmente el menú más completo pertenece a la ventana secundaria y es el menú que se presenta, cuando no hay ventanas secundarias abiertas, el que pertenece a la ventana principal.

Cuando una ventana secundaria posee un menú, éste se muestra en el área de menús de la ventana principal.

La mayoría de aplicaciones MDI ofrecen un menú Ventana, en el que se listan todas aquellas ventanas secundarias abiertas y en el que existen opciones para organizarlas.

Otra característica de las aplicaciones MDI es que, cuando se cierra la ventana principal, también se cierran las ventanas secundarias. Sin embargo, esto no sucede al revés, es decir, el hecho de cerrar una ventana no afecta a la principal. En definitiva una aplicación MDI se caracteriza por presentar una ventana principal, que a partir de ahora llamaremos ventana MDI, y una o más ventanas secundarias que se muestran en el interior de la ventana MDI.

n un proyecto Visual Basic sólo puede existir un formulario MDI en el que se situarán, en tiempo de ejecución, los formularios secundarios. En tiempo de diseño los

formularios secundarios se muestran independientes del MDI pudiendo incluso tener un tamaño mayor a éste. Sin embargo, en tiempo de ejecución siempre se mostrarán en el interior del MDI. Para introducir un formulario MDI, deberá utilizar el menú Insetar y elegir Formulario MDI ya que el botón que se sitúa en la barra de herramientas para crear nuevos formularios inserta formularios no MDI. El formulario MDI puede contener su propia barra de menús, creada en el editor de menús, pero sólo se mostrará cuando no existan formularios secundarios abiertos que tengan su propio menú. Normalmente el menú del formulario MDI es un menú con menos opciones que el presentado al mostrarse visible un formulario secundario.

Si desea que los formularios secundarios se muestren al cargarse en memoria, deberá establecer el valor True en la propiedad AutoShowChidren del formulario MDI. En caso contrario, deberán mostrarse explícitamente mediante el código (utilizando, por ejemplo, el método Show). Otra de las características de un formulario MDI es la de que sólo podrá dibujar controles en su interior que posean la propiedad Align. Si intenta dibujar un control que no posee esta propiedad, Visual Basic le indicará con un mensaje que no es posible. El Control Data o el Cuadro de imagen (PictureBox) que se utiliza por ejemplo, para crear barras de herramientas en las aplicaciones MDI, son controles que presentan esta propiedad

E 17.2. FORMULARIOS MDI

Page 129: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 129

ara que un formulario no MDI se comporte, en tiempo de ejecución, como un formulario secundario, es necesario establecer su propiedad MDIChild a True.

El valor inicial de dicha propiedad es False, pudiendo mantenerlo así, lo que significaría,

en una aplicación MDI, que dicho formulario será una ventana independiente ( posiblemente un cuadro de diálogo) o cambiarlo a True, indicando que será un formulario secundario.

En la ventana Proyecto cada tipo de formulario se identifica con un icono especial. Hay uno para los formularios MDI, otro para los secundarios y otro para los formularios independientes.

Como ya se ha indicado, un formulario secundario puede poseer su propio menú, que se mostrará en el área de menús del formulario MDI.

Dicho menú debe contener todas las opciones que presente la aplicación, completando de esta forma el menú del formulario MDI. Sin embargo es necesario que las opciones del menú MDI que desee mantener en el secundario también aparezcan en este último ya que lo que realmente se hace es reemplazar un menú por otro y no completarlo.

Si desea que sea el formulario MDI el formulario inicial del proyecto, utilice el cuadro de diálogo Opciones del menú Herramientas de Visual Basic. En la ficha Proyecto se puede establecer esta característica del proyecto.

Elegir el formulario inicial de una aplicación MDI no es una característica sin importancia. Si el formulario inicial es el formulario secundario, entonces al cargarse este formulario, fruto de iniciarla aplicación, también se cargará el formulario MDI.

Pero esto no sucede al revés, es decir, al cargarse el formulario MDI no se cargan los formularios secundarios, proceso que deberá realizar en el código.

Diferencie claramente entre lo que sucede al cargarse un formulario secundario, que carga automáticamente el formulario MDI, si no lo estaba, y la propiedad del formulario MDI AutoShowChildren, que permite mostrar automáticamente los formularios secundarios cuando se cargan.

P 17.3. FORMULARIOS SECUNDARIOS

Page 130: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 130

Recuerde que al cargarse un formulario (evento Load) no se muestra en pantalla, sino que debe hacerlo en el código (por ejemplo mediante el método Show).

Por otra parte, en tiempo de ejecución, al maximizar el formulario secundario, se sigue mostrando en el interior del MDI, pero con la característica de que la barra de título de este último cambia, combinando el título del formulario MDI con el del secundario.

lo largo de este curso usted ha estado continuamente trabajando con objetos, tanto a nivel visual, dibujándolos, como a nivel de código, estableciendo propiedades y

utilizando métodos.

Sin embargo, el curso no ha abordado la creación de objetos en tiempo de ejecución, es decir, mediante código (a excepción del capítulo matriz de controles).

En este capítulo se hace inevitable mostrar cómo se pueden crear objetos en tiempo de ejecución, lo que es la base de la programación orientada a objetos, metodología de programación que está fuera del propósito de este curso.

Piense que en tiempo de diseño usted no puede conocer cuántos formularios secundarios se van a crear, ya que esto lo decidirá el usuario en tiempo de ejecución.

Deberá escribir código que permita al usuario de una aplicación MDI crear un nuevo formulario, seguramente para trabajar con otro documento. Esta opción suele aparecer en el menú Archivo.

Este código debe ser escrito en un procedimiento que permita realizar este proceso. Fíjese cómo dicho procedimiento deberá estar disponible tanto para el formulario MDI como para los formularios secundarios, ya que ambos deben permitir crear formularios nuevos a través de su menú Archivo.

Este es el código que se utiliza en el curso en pantalla para crear nuevos formularios secundarios:

Public Sub NuevoFormulario() Dim nuevo As New Form1 Dim nombre As String Do

nombre = InputBox("Introduzca el nombre del nuevo archivo.") Loop Until nombre <>”” 'Alacceder a una propiedad se carga el formulario.

'También se muestra ya que AutoShowChildren está a True. nuevo.Caption = nombre

EndSub

A 17.4. INSTANCIAS DE FORMULARIO

Page 131: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 131

El procedimiento es púb1ico y está situado en un modulo estándar de Visual Basic. de esta forma se puede utilizar tanto en el formulario MDI como en los secundarios.

En la primera línea del procedimiento (Dim nuevo As New Form1) es donde se encuentra la declaración y creación del nuevo formulario.

En esta línea se está declarando (Dim) la variable nuevo indicando que es un nuevo objeto (New) de la clase Form1 (As Form 1).

Es decir, estamos indicando que deseamos crear una copia del formulario Form1, que es el formulario secundario de la aplicación. A dicha copia del formulario Form1 también se la llama instancia de la clase Form1.

Al insertar un formulario en tiempo de diseño, está creando una nueva clase que puede utilizar en su código para crear objetos de la misma (o instancias).

Repase la lección Programación en Visual Basic o acuda al manual del producto si desea más información.

Sigamos repasando el código. Al declarar la variable nuevo como nueva instancia de Form1, el nuevo formulario se crea, pero no llega a mostrarse. Es cuando se hace referencia a una propiedad del nuevo formulario cuando se carga en memoria. También llega a mostrarse gracias a la propiedad AutoShowChildren del formulario MDI.

Fíjese cómo el usuario deberá introducir el título del nuevo formulario para que se muestre en pantalla, ya que en ese momento es cuando se utiliza su propiedad Caption.

Al crear una nueva instancia de la clase Form1, está creando un formulario totalmente independiente de los que ha creado en tiempo de diseño, pero con la facultad de compartir o heredar las características de la clase, es decir, sus propiedades, métodos y eventos.

Programando código para los procedimientos de evento del formulario secundario y de los controles que se hayan dibujado en él, se asegura que el mismo código será ejecutado por cada nueva instancia que se cree en ejecución.

El resultado del código se aplicará al formulario que tenga el foco cuando sucede el evento para el que ha sido programada una determinada respuesta.

omo pudo observar en el primer capítulo de la lección, en la mayoría de aplicaciones MDI existe un menú Ventana en el que se listan las ventanas secundarias que están

abiertas y además permite organizarlas en el área de la ventana principal.

Esta funcionalidad la puede conseguir al crear una aplicación Visual Basic con muy poco esfuerzo de programación.

C 17.5. EL MENÚ VENTANA

Page 132: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 132

Utilizando el Editor de menús simplemente tiene que activar la casi1la WindowList del

elemento de menú que desea que funcione como un menú Ventana.

En tiempo de ejecución, Visual Basic automáticamente administra y muestra la lista de títulos de las ventanas abiertas y, además, indica con una marca de verificación cuál es la activa o aquella que tiene el foco. Fíjese que no tiene que programar nada de código para conseguir toda esta funcionalidad.

Por otra parte, si desea introducir opciones para organizar las ventanas secundarias en el interior del Formulario MDI, simplemente debe utilizar el método Arrange de este formulario. Fíjese que Arrange es un componente del formulario MDI y, sin embargo, afecta a los formularios secundarios que estén abiertos.

• MDIForm1.Arrange vbCascade: en este caso se mostrarán en cascada, es decir, una superpuesta a la otra pero permitiendo verlas todas a la vez.

• MDIForml.Arrange vbTileHorizontal: de esta forma los formularlos secundarios se mostrarán todos, dividiendo el espacio disponible en horizontal.

• MDIForml.ArrangevbTileVertical: igual que el caso anterior pero dividiendo el espacio

del formulario MDI en vertical.

Page 133: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 133

omo ya se ha comentado, al cerrar el formulario MDI, también se cierran los formularios secundarios. Sin embargo, este enunciado no es del todo exacto. Lo que

sucede al cerrar el Formulario MDI es que el evento QueryUnload es recibido primero por el formulario MDI y después por cada uno de los formularlos secundarios que estén abiertos en ese momento.

Es en este evento, QueryUnload, donde nosotros podemos agregar código para permitir que el usuario confirme el deseo de cerrar los formularios secundarios. Esta circunstancia es muy útil si, por ejemplo, el contenido de algún formulario secundario ha cambiado y desea guardar dichos cambios.

El evento QueryUnload ocurre antes de que el formulario se cierre. Si ha sido fruto de cerrar el formulario MDI, entonces primero lo recibe este formulario y después los secundarios. Si ningún formulario cancela el evento QueryUnload, entonces ocurre el evento Unload en cada uno de los formularios y finalmente en el MDI cerrándolos definitivamente.

En el procedimiento de evento QueryUnload existen dos parámetros: Cancel permite cancelar el evento y UnloadMode indica por qué ha ocurrido dicho evento.

Utilizando UnloadMode podrá diferenciar si el evento es fruto de cerrar el formulario MDI, si es una petición de cerrar la ventana secundaria expresamente o por algún otro motivo como el cierre de Windows95.

Vamos a permitir que el usuario confirme el cierre de los formularios secundarios. Para ello se le preguntará si realmente desea cerrar el formulario en el momento que ocurra el evento

C 17.6. EL EVENTO QUERYUNLOAD

Page 134: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 134

QueryUnload. Si no desea cerrarlo, se cancelará dicho evento por lo que no se llegará a producir el evento Unload. En las siguientes líneas puede ver el código que consigue esta circunstancia:

PrivateSubForm_QueryUnload(CancelAslnteger, UnloadMode As Integer) Dim respuesta As Integer respuesta=MsgBox("¿Desea cerrar este formulario?, vbYesNo, Me.Caption)

lf respuesta=vbNo Then ⏐ ⏐ Cancel=True End If End Sub

Con estas líneas conseguimos que el usuario tenga la posibilidad de confirmar el cierre del formulario. Fíjese que este código será compartido por cada instancia de Form1 (la clase del formulario secundario) que se cree en tiempo de ejecución.

Para diferenciar un formulario de otro, se utiliza la palabra clave Me, que se adaptará en cada caso al formulario activo (el que tiene el foco).

Se comprueba cuál ha sido la respuesta del usuario. En el caso de que éste haya pulsado el botón No del cuadro de mensaje, entonces debernos cancelar el evento QueryUnload simplemente estableciendo el parámetro Cancel a True.

Al hacer esto, impedimos que suceda el evento Unload, por lo que no se cierra el formulario. Tenga en cuenta que, si decide no cerrar un formulario secundario, se cancela el evento Unload del mismo y del resto de formularios abiertos, incluido el formulario MDI. Deberá escribir más código para permitir cerrar un formulario y mantener otros abiertos.

Por otra parte seuti1iza en su código la instrucción End, al ejecutarse dicha instrucción, la aplicación finaliza inmediatamente sin que ocurra ningún evento más, por lo que no suceden los eventos QueryUload ni Unload.

Page 135: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 135

Depurar la Aplicación

isual Basic proporciona herramientas que le permiten depurar su aplicación. Al hablar de la depuración de una aplicación, nos referimos a la búsqueda, localización

y corrección de los errores que ésta presente.

En toda aplicación puede encontrar tres tipos de errores: errores en tiempo de compilación, errores en tiempo de ejecución y errores lógicos.

Los errores en tiempo de compilación suelen ser los más sencillos de solucionar. Se deben, en la mayoría de casos, a escribir incorrectamente el nombre de alguna variable o a utilizar propiedades y métodos sobre objetos que no los poseen. En la ficha Editor del cuadro de diálogo Opciones ( menú Herramientas) puede observar la presencia de la casilla Comprobación automática de sintaxis Si dicha casilla está activada, Visual Basic estará “pendiente” del código que escriba, avisándole de errores sintácticos. Seguro que ya lo ha “sufrido” al realizar las prácticas que complementan el curso.

Si la opción Verificación automática de sintaxis no está activada, Visual Basic no le informa de los errores que puede detectar en tiempo de diseño, sino que es en el momento en que la aplicación se compila, cuando lo hace

Otro tipo de errores que pueden suceder al programar una aplicación son los errores en tiempo de ejecución. Dichos errores se producen cuando Visual Basic encuentra una instrucción en su código que realiza una operación imposible de ejecutar.

Fíjese cómo la instrucción puede estar correctamente escrita según la sintaxis del lenguaje, por lo que no se ha detectado en tiempo de compilación y, sin embargo, provocar un error en tiempo de ejecución.

Puede escribir manejadores de error para controlar este tipo de errores, como ya ha hecho en una lección anterior.

Finalmente, los errores más difíciles de depurar son los errores lógicos. Estos errores ocurren cuando una aplicación no funciona de la forma que esperamos. No se produce ningún error detectable por Visual Basic, sino que simplemente el resultado no es el que pretendemos que se produzca.

Deberá utilizar las herramientas de depuración de Visual Basic para seguir el código al ejecutarse y, de esta forma, localizar el error que produce que el resultado no sea el esperado.

V 18.1. TIPO DE ERROR

Page 136: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 136

l primer paso a seguir una vez detectado que se ha producido un error (en el caso de un error de carácter lógico deberá ser usted mismo quien detecte el error al ejecutar la

aplicación), es encontrarlo en el código escrito.

Si la aplicación es de un tamaño apreciable, el tener que revisar todo el código puede resultar una tarea excesivamente costosa. Es aquí donde el entorno de desarrollo de Visual Basic proporciona herramientas para buscar un error.

Para buscar un error en tiempo de ejecución, tiene dos posibilidades: iniciar la ejecución y cambiar al modo de interrupción cuando lo crea oportuno o introducir puntos de interrupción en aquellos lugares del código donde sospeche que se produce el error.

Un punto de interrupción es una línea del código en la que se indica que la ejecución debe detenerse y pasara al modo Interrumpir, donde usted puede utilizar el entorno de desarrollo. La línea donde introduzca el punto de interrupción no llegará a ejecutarse, sino que se interrumpirá antes de hacerlo.

Una vez entra en el modo Interrumpir, Visual Basic presenta la ventana de código donde introdujo el punto de interrupción, rodeando con un rectángulo la línea que va a ejecutarse y que lógicamente se corresponde con aquella en la que situó un punto de interrupción.

Otra forma de cambiar al modo interrumpir al ejecutar una aplicación es a través de la instrucción Stop. Introducir dicha instrucción antes de la línea o fragmento de código sospechoso, producirá el mismo efecto que introducir un punto de ruptura.

Sin embargo, debe acordarse de eliminar dichas instrucciones antes de realizar el fichero ejecutable de su aplicación, tarea ésta que veremos en la próxima lección.

na vez ha entrada en modo Interrumpir, tiene a su disposición un gran número de herramientas que le facilitarán la localización de errores.

Una de las herramientas más útiles es poder continuar la ejecución del código línea a

línea. De esta forma podrá localizaren qué línea se produce el error o, si es un error lógico el que está buscando, cómo se comporta la aplicación paso a paso.

Existen tres modalidades distintas en la ejecución paso a paso: paso por instrucciones, paso por procedimientos y paso hasta salir.

E

U 18.3. SEGUIR PASO A PASO

18.2. BUSCAR EL ERROR

Page 137: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 137

Para ejecutar la aplicación paso a paso por instrucciones, deberá pulsas en dicha opción situada en el menú Depuración. En este caso el código se ejecuta una instrucción cada vez. Recuerde que en una misma línea puede haber más de una instrucción, por lo que, al usar el paso por instrucciones, no tiene porqué ejecutarse una línea completa.

Paso a paso por procedimientos es similar al paso por instrucciones, excepto cuando la instrucción que vaya a ejecutarse sea la llamada a un procedimiento: en el caso del paso por instrucciones, la siguiente instrucción a ejecutar será la primera del cuerpo del procedimiento; mientras que en el caso del paso por procedimientos, la llamada al procedimiento será tratada como una instrucción única, ejecutándose completamente.

En cualquiera de estas dos formas de ejecutar una aplicación, si en alguna de las instrucciones se necesita la interacción del usuario, como puede ser para introducir algún dato, Visual Basic esperará a que se produzca.

Con Paso a paso para salir se ejecuta las demás líneas de una función en laque reside el punto de ejecución actual. La siguiente instrucción mostrada es la instrucción que sigue a la llamada a procedimiento. Todo el código se ejecuta entre los puntos de ejecución actual y final. Sólo está disponible en modo de interrupción.

n la mayoría de ocasiones tendrá que analizar el valor que van tomando las variables y las propiedades de los objetos que aparecen en su código para comprender por qué se

produce el error que está depurando.

Hay tres tipos de ventanas de depuración: la de inmediato, la de inspección y la de locales.

El uso más común de la ventana de inspección es el de agregar expresiones de inspección. Estas expresiones permiten controlar el valor que toman las variables o expresiones más complejas.

E 18.4. LA VENTANA DEPURACIÓN

Page 138: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 138

La forma de agregar una expresión de inspección a la ventana es muy sencilla: seleccione la expresión en la ventana de código y utilice la opción Agregar inspección del menú Depuración. Entonces aparecerá el cuadro de diálogo de la figura.

En este cuadro de diálogo podrá especificar la expresión que desea controlar, además de indicar el ámbito de la misma.

Por otra parte en la sección Tipo de inspección podrá indicar si es una expresión de inspección, caso en el que tendrá que haber entrado en el modo Interrumpir para poder comprobar su valor, o una expresión de ruptura, que cambia automáticamente al modo Interrumpir una vez se cumple dicha expresión.

Existen dos tipos de expresiones de ruptura, como puede comprobar en la sección Tipo de

inspección. La diferencia es la condición que debe cumplirse para que Visual Basic entre en el modo Interrumpir y poder así comprobar el valor de la expresión.

En la figura anterior se está creando una expresión de inspección para la variable Archivo, es decir, cuando entremos en el modo Interrumpir (a través de un punto de i interrupción por ejemplo), usted podrá ver el valor en ese instante que tiene almacenado la variable Archivo. Dicho valor aparecerá en la ventana Inspecciones.

La ventana Inmediato le permite introducir comandos de Visual Basic que le ayuden a localizar el error.

Para introducir estos comandos, deberá estar en el modo interrumpir. Dichos comandos son independientes del código que haya escrito, no afectando al mismo.

xiste una forma más sencilla de comprobar el valor de una determinada expresión cuando está en el modo Interrumpir, sin necesidad de agregar una expresión de

inspección.

Una vez está en el modo Interrumpir la opción Inspección rápida está disponible en el menú Depuración. Dicha opción sirve para comprobar el valor de la expresión que tenga seleccionada en la ventana de código.

Cuando pulse este botón, Visual Basic le informará del valor de dicha expresión en ese momento, de ahí el nombre de inspección rápida. Si lo desea, podrá agregar esa expresión como una expresión de inspección más, mostrándose en la ventana Depuración.

E 18.5. INSPECCIÓN INSTANTANEA

Page 139: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 139

Otra forma de inspección instantánea se realiza pulsando sobre la variable que queremos inspeccionar, en la ventana de código. Visual Basic muestra, al cabo de un instante, una pequeña ventana amarilla con el valor de dicha variable.

al vez la característica más potente que presenta Visual Basic en el aspecto de la depuración de una aplicación, es la posibilidad de corregir el error y continuar con la

ejecución como si nada hubiese ocurrido. Es decir, en muchas ocasiones no necesitará terminar la aplicación para poder corregir un error.

Sin embargo, esto no es siempre posible, teniendo, en ocasiones, que iniciar de nuevo el proyecto para que la modificación tenga efecto. Visual Basic se lo indicará cuando sea necesario.

Cuando se produce el error, Visual Basic permite pasar al modo Interrumpir. Podrá utilizar la ventana Inspección y la de código para corregir el error. Si después, al pulsar el botón Continuar, Visual Basic puede continuar, solucionando el problema, lo hará. En otro caso le indicará que debe iniciar de nuevo el proyecto.

1 último punto que vamos a tratar referente a la depuración de una, aplicación es la posibilidad de observar las llamadas a los procedimientos que se realizan en la

ejecución de la misma.

El cuadro de diálogo Pila de llamadas muestra una lista, en tiempo de interrupción, con todas las llamadas a procedimientos que todavía están activos, es decir, aquellos procedimientos cuya ejecución ha comenzado pero que todavía no ha terminado.

Para mostrar las llamadas a procedimientos activos, utilice la opción Pila de llamadas del menú Ver.

En la siguiente figura se muestra la situación de la ventana Llamadas en un determinado momento del curso en pantalla.

T

E

18.6. CORREGUIR Y SEGUIR

18.7. LLAMADAS A PROCEDIMIENTOS

Page 140: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 140

Debe entender este cuadro de la siguiente forma: el procedimiento cmdIniciar_Click

realizó una llamada al ProcedimientoA y éste, a su vez, al ProcedimientoB. Fíjese cómo la lista de llamadas actúa como una pila, en el sentido que el último procedimiento llamado es el que se sitúa en la parte superior de la lista.

Page 141: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 141

Finalizar la Aplicación

na vez ha concluido el diseño de la aplicación y depurados los errores que ha podido detectar, es el momento de realizar unos cuantos pasos necesarios para finalizar la

aplicación.

Entre estos pasos cabe destacar: compilar completamente la aplicación, crear un archivo ejecutable y preparar los medios de distribución para la instalación de la aplicación en un equipo que ejecute Windows 95/98 o Windows NT.

Estos temas serán tratados en esta última lección del curso. Esperamos que este curso haya servido como una buena introducción a la programación en Visual Basic y que le permita crear aplicaciones Windows de cierta complejidad, de una forma organizada.

isual Basic proporciona la posibilidad de especificar opciones del entorno de desarrollo que permiten iniciar una aplicación de forma rápida, sin complicar

completamente el proyecto.

Estas opciones, aunque interesantes mientras está diseñando su proyecto, pueden impedir encontrar todos los errores que se hayan producido en su aplicación ya que no se ha compilado por completo.

En la ficha General del cuadro de diálogo Opciones (menú Herramientas) se presentan unas cuantas opciones que afectan al modo en el que se compila un proyecto.

La opción Compilara petición, cuando está activada, permite iniciar rápidamente la aplicación ya que la compilación del código de la misma se produce cuando es necesario y no completamente antes de iniciarla.

Esta circunstancia puede producir que existan errores sin detectar, al no ejecutar todo el código de la aplicación.

Si esta casilla está activada, la casilla Compilar en segundo plano sirve para que la compilación del proyecto continúe en tiempo de ejecución cuando la aplicación esté esperando algún evento.

Aunque estas opciones son muy interesantes en la fase de diseño de la aplicación, es conveniente, una vez desee finalizar la aplicación, compilarla completamente, de forma que se asegure haber detectado todos los errores de compilación.

U

V

19.1. INTRODUCCIÓN

19.2. COMPILAR LA APLICACIÓN

Page 142: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 142

Existe una opción en el menú Ejecutar que permite esta circunstancia. En lugar de elegir

Iniciar, elija Iniciar con compilación completa y el proyecto será completamente compilado antes de que se inicie, independientemente del valor que tengan las opciones anteriormente mencionadas.

Al compilar completamente el proyecto, se asegura que los errores de compilación sean totalmente detectados. Lógicamente esto no puede aplicarse para los errores en tiempo de ejecución o errores lógicos, para los que la única forma de asegurar su depuración es realizando pruebas sobre el proyecto.

Utilice la compilación a petición mientras vaya diseñando el proyecto y la compilación total en las fases finales de dicho diseño. Además, al crear un archivo ejecutable de la aplicación, también se compilará totalmente el proyecto.

oda aplicación Windows será ejecutada al hacer doble clic en un determinado archivo ejecutable o a través de un acceso directo a dicho archivo.

Hasta ahora usted ha ejecutado la aplicación desde el entorno de desarrollo de Visual

Basic, pero cuando distribuya su aplicación al usuario final, éste debe ejecutarla como una aplicación más de Windows, por lo que es necesario crear un archivo ejecutable.

Visual Basic permite la creación de archivos ejecutables a través de la opción Generar proyecto EXE... del menú Archivo, donde proyecto aparece como el nombre del proyecto ejecutable (en el ejemplo del curso será VideoClub.exe).

Al crear el archivo ejecutable, Visual Basic compila completamente el proyecto, por lo que si no lo había hecho antes, es posible que encuentre nuevos errores de compilación.

Será necesario especificar el nombre que desea dar al archivo ejecutable de la aplicación y la ubicación de éste. Además, a través del botón Opciones, podrá establecer ciertos valores descriptivos sobre la versión del archivo ejecutable.

T 19.3. CREAR EJECUTABLES

Page 143: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 143

Unas de las opciones que puede especificar es la versión del ejecutable, de la misma forma que hacen la mayoría de empresas de software (Word 7.0, Visual Basic 6.0, etc.) Si activa la opción Incremento automático, Visual Basic incrementará el número de revisión automáticamente cada vez que utilice al opción Crear Archivo EXE. En la sección Aplicación, puede indicar el nombre de la aplicación y especificar un icono identificativo de la misma. Este icono será aquel que se utilice cuando la ventana principal de la aplicación sea minimizada. Finalmente, puede agregar información descriptiva de la aplicación en la sección Información de versión. Una vez cree el archivo ejecutable, puede utilizarlo como cualquier otro archivo de estas características. Haga doble clic sobre él, por ejemplo desde el Explorador de Windows y la aplicación debe iniciarse, independientemente de Visual Basic. Por otra parte, toda la información que ha introducido en el cuadro de diálogo Propiedades del proyecto, aparecerá en el panel de propiedades de archivo ejecutable, accesible por ejemplo, a través del menú contextual de archivo.

Page 144: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 144

na vez a creado el archivo ejecutable de su aplicación Windows y habiendo comprobado que funciona como cualquier otro archivo ejecutable, es el momento de

preparar la distribución de su aplicación Para distribuir su aplicación al usuario final, necesita crear un programa de instalación que se encargue de copiar los archivos necesarios en el equipo del usuario. En este caso es muy posible que el usuario final no posea Visual Basic por lo que tendrá que distribuirle todos los ficheros necesario para ejecutar su aplicación. Visual Basic incorpora un asistente que le facilite la creación del programa de instalación, preguntándole en cada uno de los pasos la información que necesite. El Asistente de empaquetado y distribución creará los disquetes u otros medios de distribución con los archivos necesarios para que instale la aplicación correctamente, además de comprimirlos con el objeto de que ocupen menos espacio en su medida de distribución. El asistente de instalación es una aplicación autónoma, y puede ser agregada desde el Administrador de complementos del menú Complemento, o bien, iniciarla desde fuera de Visual Basic. Este componente de l paquete Visual Basic aparecerá en el grupo d programas que se crea al instalar Visual Basic. Si utiliza el menú Inicio de Windows, lo podrá encontrar en el grupo Programa – Microsoft Visual Basic 6.0 –Herramientas de Microsoft Visual Basic 60. En el primer paso del Asistente de instalación, se le pide que introduzca la ruta y el nombre del archivo de proyecto.

U 19.4. EL ASISTENTE DE INSTALACIÓN

Page 145: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 145

Es, sin embargo, recomendable, haber creado el archivo ejecutable previamente y no encontrar errores inesperados en estos momentos. En el siguiente paso del asistente se le pregunta el tipo de paquete que desea crear. Utilizaremos Paquete de instalación estándar para crear nuestro programa de instalación. Siguiendo con la instalación el asistente le pregunta por la carpeta donde se almacenarán los archivos empaquetados (.CAB) y el programa de instalación. Para ello crearemos una nueva carpeta a la que llamaremos Instalación de VideoClub. En el siguiente paso del asistente se le muestra los archivos que serán incluido en el paquete de instalación. Podrá agregar otros archivos necesarios, como archivos de imagen, base de datos, etc., Pulsando el botón Agregar. Siguiendo con la instalación deberá indicar las opciones de empaquetado de los archivos (,CAB). Si va a distribuirla utilizando disquetes, la opción a elegir será la de Múltiples archivos.

Page 146: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 146

Si el medio de instalación es, por ejemplo, CD.ROM, entonces le interesa guardar los archivos en un Único archivo .CAB. A continuación se le pregunta el nombre que desea darle a la aplicación.

Page 147: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 147

Seguidamente podemos indicar el lugar que ocupará el acceso a la aplicación, en el menú de inicio de Windows y nos informa de donde se instalarán cada uno de los archivos de la aplicación. En este paso es posible también modificar la ubicación de los archivos. A continuación se le pregunta por la posibilidad del uso compartido del archivos. Finalmente el Asistente ya tiene toda la información necesaria para general el programa de instalación de su aplicación. Como ha podido observar, existen un gran número de archivos que usted no ha creado en su proyecto y que, sin embargo, es “necesario” distribuir para que la aplicación funcione correctamente en cualquier equipo que ejecute Windows. Estos archivos se corresponden con archivos de bibliotecas de tipos, controles Actives y otros archivos necesarios para que una aplicación Visual Basic se pueda ejecutar como desarrollo de Visual Basic.

El Asistente de instalación de Visual Basic:

• Crear un programa de instalación de nombre SETUP .EXE que utilizan los usuarios finales para instalar la aplicación en su equipo. Este programa realizará las preguntas necesarias al usuario para instalar en el directorio donde desee hacerlo.

• Genera un archivo ejecutable actualizado.

19.5. ¿ QUÉ CREA EL ASISTENTE ?

Page 148: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 148

• Comprime los archivos de forma que ocupen menos espacio en el medio de distribución.

• Informa del número de discos si éste es el medio de distribución y del espacio libre que

necesitarán tener el usuario en su disco duro para la instalación.

• El programa de instalación generado al utilizar el Asistente:

• Crea un elemento en el menú Inicio que le permite acceder a la aplicación.

• Registra la aplicación en el Registro de Windows.

• Permite la desinstalación de la aplicación a través del elemento Agregar o quitar programas del Panel de control de Windows.

Page 149: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 149

Page 150: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 150

Objetos de Datos Activos ADO

1 control de datos ADO es la más moderna tecnología de Microsoft para trabajar con información almacenada en bases de datos. ADO utiliza la última tecnología de

acceso a datos denominada OLE DB, que ha sido diseñada para proporcionar acceso a un amplio rango de orígenes de datos, tanto locales como remotos, disponibles en su ordenador.

En esta lección aprenderemos su uso y el del control DataGrid 6.0 (OLE DB) con el que podremos mostrar y manipular de forma directa la información de una base de datos.

1 control Microsoft ADO Data Control 6.0 es un control ActiveX que tendrá que ser añadido a la caja de herramientas con la opción Componentes del menú Proyecto.

El control ADO al igual que el control Data visto en la lección 13 crea un control gráfico con los botones de Adelante y Atrás y una a interfaz fácil de usar que le permite crear aplicaciones para bases de datos con un mínimo código.

Con el control ADO puede crear de una manera rápida conexiones entre los controles de enlace de datos ( los que tienen la propiedad DataSource) y proveedores de datos (cualquier origen de datos escrito para OLE DB).

Con el control Data sólo teníamos que asignar a la propiedad DatabaseName el nombre de una ruta de una base de datos válida contenida en su sistema, para vincular el formulario con la base de datos.

En ADO tendrá que realizar un paso preliminar, establecer una conexión con un origen de datos.

Use la propiedad ConnectionString para especificar un origen de datos. Pulsando en aparece siguiente cuadro de propiedades donde podrá especificar el origen de la conexión.

E

E

20.1. INTRODUCCIÓN

20.2. EL CONTROL ACTIVEX ADO

Page 151: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 151

Si ha creado un archivo de vínculo de datos de Microsoft (.UDL) seleccione Usar archivo de vinculo a datos. Si usa un origen de datos OLE DB, debe crear el nombre del vínculo de datos de Microsoft en el equipo. En el siguiente capítulo aprenderemos a crear un archivo de vínculo de datos.

Si usa un DSN, haga clic en Usar nombre de origen de datos ODBC y seleccione un DSN del cuadro o haga clic en Nuevo para crear una nuevo.

Si lo que quiere es usar una cadena de conexión, seleccione Usar cadena de conexión y haga clic en Generar. Utilice el cuadro de diálogo Propiedades de vinculo de datos para crear una cadena de conexión.

Otra propiedad que deberá establecer es RecordSource, donde indicaremos el Origen de registros. Seleccione en la lista Tipo de comando el tipo Tabla (adCmdTable) y en la lista Tabla o nombre procedimiento almacenado la tabla que desee.

Page 152: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 152

Si modifica la propiedad RecordSource en tiempo de ejecución deberá utilizar el método Refresh para actualizar el nuevo conjunto de registros y los datos de los controles enlazados. Por otra parte puede utilizar los mismos métodos vistos para el control Data para añadir y eliminar registros así como aquellos que nos permiten movernos por el conjunto de registros. La modificación de registros se realiza directamente ya que el control ADO no posee el método Edit.

Veamos como quedaría el código que permite editar el registro: Adodc1.Recorset("Devuelto"9=True "Cambia el valor

Adodc1.Update "Actualiza el registro

La siguiente tabla resume los eventos más importante de del control de datos ADO. Para obtener más información, vea el tema de referencia de cada evento en particular, en el sistema de ayuda.

EVENTO CUANDO SE PRODUCE

WillMove Durante RecordSet. MoveNext,...,AddNew Delete, etc. WillChangeField Antes de que cambie la propiedad Value. WillChangeComplete Después de Wil IChangeField. WillChangeRecord Durante RecordSct.Update Delete, etc. WillChangeRecordset Durante RecordSet.Requery, , Close, Open, etc.

Como hemos visto anteriormente, la creación de un nombre de origen de datos OLE DB es

un paso esencial en el acceso a datos.

Para crear un origen de datos acceda al Explorador de Windows y seleccione la carpeta donde desee crearlo.

Seleccione Archivo - Nuevo - Microsoft Data Link.

Introduzca el nombre del archivo (p, ej ConexiónVideoCLub. UDL).

Al hacer doble clic sobre el archivo creado aparece el siguiente cuadro de propiedades.

En la ficha Proveedor seleccione Microsoft Jet 3.5 OLE DB Provider En la ficha Conexión debe de especificar la base de datos a la cual accedemos. Pulsando

en el botón aparecerá un cuadro de diálogo donde localizar la base de datos de Access.

Finalmente pulse el botón Probar conexión para comprobar que la conexión con la base de datos es satisfactoria.

Page 153: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 153

omo hemos visto anteriormente, la creación de un nombre de origen de datos OLE DB es un paso esencial en el acceso a datos.

Para crear un origen de datos, acceda al Explorador de Windows y seleccione la carpeta donde desee crearlo.

Como puede comprobar, aparece el cuadro de diálogo Propiedades de Data Link, donde estableceremos los parámetros de conexión con el origen de datos, que en nuestro ejemplo será Videoclub.mdb.

En esta ficha seleccionaremos el proveedor de OLE DB adecuado para el tipo de datos a los que desea tener acceso. No todas las aplicaciones le permite especificar un proveedor o modificar la selección actual, esta ficha se muestra únicamente si la aplicación, permite modificar la selección del proveedor de OLE DB.

En la ficha Conexión tiene que indicar el origen de datos que utilice en su aplicación, en este caso la base de datos Videoclub.

1 control DataGrid 6.0 es un control vinculado de tipo hoja de calculo que muestra una serie de filas y, columnas que representan registros y campos de un objeto

Recordset. Puede usar DataGrid para crear una aplicación que permita al usuario leer y escribir en la mayoría de las bases de datos. Puede configurar DataGrid rápidamente en tiempo de diseño sin ningún código.

Al establecer la propiedad DataSource del control DataGrid en tiempo de diseño, el control se rellena automáticamente y sus encabezados de columna se establecen automáticamente desde el conjunto de registros del origen de datos. Puede editar las columnas de la cuadrícula; eliminar, cambiar el orden, agregar encabezados de columna, o ajustar el ancho de las columnas a través de los comandos de su menú contextual. En tiempo de ejecución DataSource se puede cambiar mediante programación para ver una tabla diferente, o se puede modificar la consulta de la base de datos actual para que devuelva un conjunto de registros diferente.

El primer conjunto de propiedades interesantes de dicho control es el que establece su comportamiento en tiempo de ejecución. Así, las propiedades AllowAddNew, AllowDelete, AllowUpdate indican si, en tiempo de ejecución, se va a permitir añadir, eliminar o actualizar respectivamente registros en la cuadrícula.

C

E 20.4. CONTROL DATAGRID 6.0

20.3. CREAR ARCHIVO VÍNCULO DE DATOS

Page 154: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 154

Si modifica la propiedad RecordSource de un control ADO en tiempo de ejecución deberá utilizar el método ClearFic1dsy ReBind del control DataGrid para restaurar el nuevo conjunto de registros y los datos del control.

El método ClearFic1ds restaura la distribución predeterminada de la cuadrícula (con dos columnas en blanco) para que las subsiguientes operaciones ReBind deriven automáticamente los nuevos enlaces de la columna a partir del origen de datos.

Bookmarks y SelBookmarks proporcionan un medio para hacer un seguimiento de registros. Esto es necesario cuando programa una funcionalidad especial en una aplicación, como permitir que el usuario seleccione manualmente varios registros no contiguos y realizar una actualización en bloque de los registros seleccionados. En ese caso, necesitará hacer un seguimiento de qué registros se han seleccionado, y por tanto usaría la colección SelBookmarks y sus propiedades.

Page 155: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 155

PRÁCTICAS ADOBE PHOTOSHOP 6.0

ÍNDICE LECCIÓN 1: INTRODUCCIÓN A VISUAL BASIC 6.0 Práctica 1 LECCIÓN 2: EL ENTORNO DE DESARROOLLO. Práctica 2 LECCIÓN 3: PROGRAMACIÓN EN VISUAL BASIC. Práctica 3 LECCIÓN 4: TRABAJAR CON MENÚS. Práctica 4 LECIÓN 5: CUADROS DE DIÁLOGO. Práctica 5 LECCIÓN 6: CONTROLES BÁSICOS. Práctica 6 LECCIÓN 7: CONTROLES BÁSICOS (II). Práctica 7 LECCIÓN 8: FUNDAMENTOS DE PROGRAMACIÓN. Práctica 8 LECCIÓN 9: FUNDAMENTOS DE PROGRAMACIÓN (II). Práctica 9 LECCIÓN 10: FUNDAMENTOS DE PROGRAMACIÓN (III). Práctica 10 LECCIÓN 11: EFECTOS GRAFICOS.

Page 156: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 156

Práctica 11 LECCIÓN 12: ELAMINISTRADOR VISUAL DE DATOS. Práctica 12 LECCIÓN 13: ACCESO A BASE DE DATOS. Práctica 13 LECCIÓN 14: PROGRAMAR CON LA BASE DE DATOS. Práctica 14 LECCIÓN 15: OPCIONES AVANZADAS DE BASES DE DATOS. Práctica 15 LECCIÓN 16: TRABAJAR CON ARCHIVOS. Práctica 16 LECCIÓN 17: UTILIZACIÓN OLE. Práctica 17 LECCIÓN 18: APLICACIONES MDI. Práctica 18 LECCIÓN 19: DEPURAR LA APLICACIÓN. Práctica 19 LECCIÓN 20: FINALIZAR LA APLICACIÓN. Práctica 20 EJERCICIO FINAL.

Page 157: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 157

INTRODUCCIÓN A VISUAL BASIC

PRACTICA En esta primera práctica conocerá un poco más el funcionamiento de una aplicación Windows típica: el procesador WordPad. Con el menú Inicio de Windows abra la aplicación WordPad que está en el grupo Programas-Accesorios.

− Observe como la aplicación se abre en una ventana independiente que puede cambiar de tamaño, maximizarse o minimizarse, utilizando los botones de la ventana.

− Despliegue el menú principal que aparece. Observe la barra de estado, donde se le da

información sobre el comando del menú en el que está situado. Elija la opción Insertar-Fecha y hora.

− Se abre una nueva ventana. Este tipo de ventanas se llaman cuadro de diálogo porque se

establece una especie de diálogo entre el usuario y la aplicación. Fíjese como este caso usted puede indicar el formato de fecha.

− Compruebe que la ventana principal ya no es la activa, pasando el foco al cuadro de

diálogo. (Fíjese en el color de la barrra de título de una y otra ventana). Observe como esta nueva ventana ya no presenta todos los botones de ventana.

− Pulse el botón Aceptar. Vuelva a mostrar el mismo cuadro de diálogo. Ahora pulse el

botón Cancelar. Dese cuenta en la diferencia que representa cerrar un cuadro de diálogo con un botón Aceptar y con otro Cancelar.

− Elija la opción Archivo-Abrir. Pulse la tecla [Esc] El cuadro de diálogo se cierra como si

hubiera pulsado el botón Cancelar.

− Pulse el botón abrir Se vuelve abrir el mismo cuadro de diálogo. Las barras de herramientas permiten un acceso más rapido a ciertos comandos de menú.

− Cancele el cuadro y salga de WordPad con la opción Salir del menú Archivo. Responda

que no al cuadro de mensaje que aparece. En el cuadro aprenderá muchas de las técnicas necesarias para crear aplicaciones similares a ésta.

1

Page 158: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 158

Page 159: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 159

EL ENTORNO DE DESARROLLO PRÁCTICA

En esta segunda práctica ya trabaja en el entorno de desarrollo de Visual Basic. Conocerá su interfaz de usuario y establecerá algunas opciones para el resto de las prácticas. También guardará su primer proyecto Visual Basic.

• Inicie Visual Basic a través del menú Inicio de Windows y cree y proyecto exe estándar. Observe como presenta una ventana que ocupa toda la pantalla y un conjunto de ventanas ancladas a sus lados. Detrás está situado el escritorio de Windows.

• Identifique cada una de las ventanas de Visual Basic: la Principal, la de Proyecto, la de

Propiedades, la caja de herramientas, etc.

• Cierre la ventana posición del formulario y que Visual Basic pregunte si se desea guardar el proyecto antes de que se inicie.

• Introduzca el siguiente código en el evento Activate del formulario. • Print "Esta instrucción muestra el texto en la ventana."

• Guarde el proyecto que aparece por omisión al cargar Visual Basic. Cree una carpeta para

este proyecto de nombre Práctica2 de VB. El nombre del proyecto será Práctica2.vbp. Acepte el nombre que le sugiere Visual Basic para el formularlo.

• Inicie la ejecución del proyecto. Fíjese en la barra de título de Visual Basic y compruebe

como le indica en cada caso en qué tiempo de desarrollo se encuentra: diseño, ejecución o interrupción.

• Pase al modo Interrumpir. Finalmente termine la aplicación con el botón Terminar.

• Salga de Visual Basic hasta la próxima práctica.

2

Page 160: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 160

Page 161: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 161

PROGRAMACIÓN EN VISUAL BASIC

PRÁCTICA

En esta Práctica establecerá propiedades de un objeto formulario. Dicho formulario será la ventana principal de la aplicación que se estudia en gran parte del curso en pantalla y que también sirve como proyecto en muchas de las prácticas.

Usted realizará, en las prácticas, algunas tareas que ha visto en el curso aunque no completamente y otras total mente nuevas.

• Inicie Visual Basic, lo que hará que aparezca un nuevo proyecto en pantalla con un único formulario.

• Utilice la ventana Propiedades para establecer el valor de las propiedades necesarias para

que el formulario presente las siguientes características:

Sea una ventana redimensionable en la que aparezcan los botones minimizar, maximizar y restaurar. También debe estar disponible el menú de control.

La barra de título de la ventana debe presentar el texto Videoclub BRANDO.

Debe presentar el icono de formulario de nombre Eye. ico, situado en la ruta\Common\ Graphics\lcons\Nisc.

Su nombre sea frmPrincipal.

Aparezca maximizado cuando se cargue en ejecución.

• Guarde el nuevo proyecto en una carpeta de nombre Videoclub. El nombre del formulario será Principal.frm y el nombre del proyecto Videoclub.vbp.

• Salga de Visual Basic hasta la próxima practica.

3

Page 162: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 162

Page 163: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 163

TRABAJAR CON MENÚS

PRÁCTICA

En esta práctica construirá completamente el menú del formulario creado en la anterior práctica.

− Abra el proyecto Videoclub.vbp situado en la carpeta Videoclub, creado en la anterior práctica.

− Realice las acciones necesarias para que el único formulario que existe en el proyecto,

tenga el siguiente menú:

Objeto menú Nombre objeto

Archivo mnuArchiv0 Copia de seguridad… mnuArchivoCopia Restaurar… mnuArcluvoRestaurar --------------------------- mnuArchivoSepl

Salir mnuArchivoSalir

Introducir mnuIntroducir Socio Ctrl+S mnuritroducirSocio Película Ctrl+P mnu ntroducirPel ícula

Préstamos mnuPréstamos

Prestar película... Ctrl+Z mnuPréstamosPrestarpelícula Devolver película Ctrl+Y mnuPréstaniosDevolverpelícula

Informes mnuInformes

Prestamos fuera de tiempo mnuInformesPréstamosfueratiempo

Búsquedas mnuInformesBúsquedas Buscar película... mnuInfomesBúsquedasBuscarpelícula

Buscar socio... mnuInfomesBúsqtiedasBuscarsocio

Ayuda mnuAyuda Contenido F 1 mnuAyudaContenido --------------------- mnuAyudaSep 1

Acerca de mnuAyuda.Acercade

El elemento Archivo - Salir debe realizar dos acciones: descargar el formulario de memoria y salir de la aplicación.

• Guarde el proyecto.

4

Page 164: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 164

• Inicie el proyecto. Observe corno la ventana aparece maximizada al iniciarse.

• Despliegue todos los elementos de menú y compruebe que aparecen correctamente tanto

las teclas de acceso rápido, de método abreviado y los niveles de menú.

• Finalice la ejecución con la opción correcta del menú creado.

• Salga de Visual Basic hasta la próxima práctica.

Page 165: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 165

CUADROS DE DIÁLOGO

PRÁCTICA

En esta práctica trabajará con el control Diálogo común para mostrar cuadros de diálogo estándar de Windows.

• Abra el proyecto VÍdeoclub.vbp. Deberá estar tal como lo dejó en la anterior práctica. Muestre en pantalla el único formulario que contiene.

• Inserte un objeto Diálogo Común en el formularlo. No hace falta establecer ninguna

propiedad, llamándose CommonDialog l.

• Elija la opción Copia de seguridad... del menú Archivo del formulario. Aparecerá el procedimiento de evento Click de dicho elemento de menú.

• Utilice el método ShowPrinter para que se muestre el cuadro de diálogo Imprimir.

• Inicie el proyecto sin guardar los cambios. Elija Archivo - Copia de seguridad y

compruebe que aparece el cuadro de diálogo Imprimir.

• Vuelva a Visual Basic.

• Elimine la línea de código en la que se utiliza el método ShopwPrinter e introduzca las líneas de código necesarias para que:

La barra de título del cuadro de diálogo muestre el texto Realizar copia de seguridad.

La extensión por omisión del archivo a guardar sea MDB. La lista de tipos de archivo permita ver o bien las bases de datos (*.mdb) o bien los archivos de texto (*.txt) o bien todos los archivos (*.*). Recuerde utilizar el carácter en la propiedad Filter. Se muestre el cuadro de diálogo Guardar como.

• Guarde el proyecto e inícielo.

• Elija la opción Copia de seguridad... del menú Archivo. Compruebe que el cuadro de

diálogo presenta las características requeridas. Despliegue la lista de tipos de archivo y vea que existen las tres posibilidades indicadas.

• Vuelva a Visual Basic y ciérrelo hasta la próxima práctica.

5

Page 166: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 166

Page 167: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 167

CONTROLES BÁSICOS

PRÁCTICA

En esta práctica debe crear un formulario nuevo y dibujar los distintos controles para que tenga el aspecto de la figura.

En la figura se le indica el nombre de cada control, siendo el del formulario frmDetsocios.

• Inicie Visual Basic y abra el proyecto Videoclub.vbp situado en la carpeta Videoclub. Inserte un nuevo formulario y realice las acciones necesarias para que su aspecto sea el de la figura anterior.

• El formulario debe presentar las características de un cuadro de diálogo: sin icono yno

redimensionable.

• Ajuste el tamaño y la posición del formulario a la que usted desee para que el formulario no se vea descompensado.

• El cuadro de texto txtDir debe permitir introducir más de una línea de texto así como

presenta una barra de desplazamiento vertical.

• El botón Cerrar debe responder tanto a pulsar en él como a pulsar la tecla [Esc]. Al hacerlo, se descargará de memoria el formulario.

6

Page 168: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 168

• Conecte este formulario con la opción Introducir- Socio del menú del formulario frmPrincipal creado en una practica anterior.

• Inicie el proyecto guardando los cambios. El nombre del archivo del formularlo será

Detalles Socio.frm.

• Compruebe que al elegir la opción mencionada del menú aparece el nuevo cuadro de diálogo y el aspecto de los controles dibujados.

• Utilice las teclas de acceso rápido de las etiquetas para comprobar que no reciben el foco

sino que lo hace el cuadro de texto que tiene asociadas.

• Vuelva a Visual Basic y salga de él hasta la próxima práctica.

Page 169: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 169

CONTROLES BÁSICOS II

PRÁCTICA

• En esta práctica trabajara preferentemente con el control cuadro de lista.

• Inicie Visual Basic con lo que se creará un nuevo proyecto con un único formulario.

• Realice los pasos necesarios para conseguir que el formulario presente un aspecto similar al de la figura. Se incluye el nombre de cada control, que deberá respetar. El nombre del formulario es frmCompra.

• Inicialmente tanto el botón cmdDerecha como cmdlzquierda no están activados.

• La etiqueta de texto IblCuenta se adapta al contenido de la misma y tiene la propiedad Appearance al valor 0 – Flat.

• El cuadro de lista IstProductos mantiene ordenada la lista de elementos.

• El cuadro de lista lstProductos y la posee una lista de elementos creada en tiempo de

diseño. Para ello utilice su propiedad List, en la ventana de Propiedades y añada los elementos que puede ver en la figura.

7

Page 170: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 170

• Para añadir un elemento despliegue la lista de esta propiedad y escríbalo. Pulse

[Ctrl+Intro] para pasar al siguiente elemento y finalice con [Intro]. No importa el orden de introducción ya que se debe mantener ordenada la lista.

• Escriba código para que el funcionamiento de la aplicación sea el siguiente:

- Cuando se elige un elemento de IstProductos se activa el botón cmdDerecha.

- Cuando se hace en el botón cmdDerecha se añade a la lista lstCompra el elemento

seleccionado de IstProductos; se elimina el elemento seleccionado en la lista IstProductos; se actualiza la etiqueta IblCuenta al número de elementos que tiene IstCompra y se desactiva el botón cmdDerecha.

- Cuando se hace el le en el botón cmdIzquierda se añade a la lista IstProductos el elemento seleccionado de IstCompra; se elimina dicho elemento de IstCompra; se actualiza la etiqueta IbICuenta al número de elementos que tiene IstCompra y se desactiva el botón cmdIzquierda.

- Cuando se hace clic en el botón Vaciar se eliminan todos los elementos de la lista IstCompra; se actualiza la etiqueta IblCuenta y se desactivan tanto el botón cmdDerecha como cmdIzquierda.

- Cuando se pulsa en el botón Salir finaliza la aplicación.

• Guarde el proyecto con el nombre Práctica7 en una nueva carpeta de nombre Práctica7 de VB.

• Ejecute la aplicación y compruebe que funciona bien su aplicación.

Page 171: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 171

FUNDAMENTOS DE PROGRAMACIÓN

PRÁCTICA En esta práctica trabajara con variables y con el operador de concatenación (&) de cadenas. Antes de comenzar a programar lea completamente la práctica.

Programe una aplicación para que realice el siguiente proceso.

• Al iniciarse la aplicación se le pedirá al usuario que introduzca dos operandos. Para ello deberá utilizar la función InputBox.

• El resultado de la operación debe ser la concatenación de los dos operandos de la siguiente

forma:

operando2 operando l es decir, primero el segundo operando introducido, después un espacio en blanco y finalmente el primer operando introducido.

• Este resultado aparecerá en una etiqueta de texto situada en el único formulario de la aplicación.

• Debe tener en cuenta que será obligado declarar las variables que necesite antes de su uso

y de que cada variable utilizada debe tener su correspondiente tipo de datos.

• Guarde el proyecto en una carpeta nueva de nombre Práctica8 de VB. El proyecto se llamará Práctica8.vbp.

8

Page 172: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 172

Page 173: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 173

FUNDAMENTOS DE PROGRAMACIÓN II PRÁCTICA Esta práctica tiene dos partes: en la primera trabajará con estructuras de decisión y en la segunda con estructuras de repetición. Recuerde que puede haber más de una solución válida.

Estructuras de decisión

• Cree un proyecto nuevo de Visual Basic. El único formulario que contiene debe tener un aspecto similar al de la figura.

• El objetivo del proyecto es el de validar el nombre de usuario y password que introduzca

el usuario en los cuadros de texto. Si ambos son correctos se muestra un mensaje de bienvenida. A continuación se indican las combinaciones correctas:

Nombre usuario Passoword Mensaje de aceptación. Juan hola Bienvenido Señor Juan. Pedro cuento Bienvenido Señor Pedro. Ana coche Bienvenida Profesora Ana.

• En caso de que coincida el nombre de usuario pero no el password, se deberá mostrar un mensaje indicando que el password no es correcto.

• Si lo que no coincide es el nombre de usuario, independientemente del valor del password

deberá indicarse con un mensaje que el usuario no está autorizado.

9

Page 174: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 174

• El cuadro de texto donde se introduce el password solo debe mostrar el carácter * por cada carácter que introduzca el usuario. Para ello utilice su propiedad PasswordChan.

• La validación debe realizarse en el momento en que se pulse en el botón Aceptar y

teniendo en cuenta la combinación de mayúsculas y minúsculas.

• Guarde el proyecto en una carpeta nueva de nombre Práctica 9 de VB. El nombre del proyecto será Práctica9.vbp.

• Ejecute el proyecto y compruebe que funciona bien para todos los casos.

Estructuras de repetición

En este caso no es necesario estar en Visual Basic ya que lo único que necesita es una hoja de papel y un bolígrafo.

El objetivo de este ejercicio es saber transformar una estructura de repetición en otra, trabajando con sus condiciones.

• Escriba una estructura de repetición Do..Loop distinta pero equivalente a la siguiente:

Do While (i<= 9) And (Not fin) <Instrucciones> Loop

donde i es una variable de tipo Integer y fin de tipo Boolean.

Page 175: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 175

FUNDAMENTOS DE PROGRAMACIÓN III

PRÁCTICA En esta práctica tendrá que realizar varias decisiones importantes: utilizar o no un procedimiento, tipo de procedimiento a utilizar; paso de parámetros necesarios, qué debe y qué no debe hacer el procedimiento, etc. Además utilizará dos funciones que incorpora el lenguaje Visual Basic y que puede utilizar en sus programas: IsDate y WeekDay. La primera permite comprobar si el argumento que se le pasa es o no una fecha válida. La segunda nos devuelve un número que indica el día de la semana correspondiente a una determinada fecha, que se le pasa como argumento.

• Cree un proyecto nuevo y realice los pasos necesarios para que su único formulario tenga un aspecto similar al de la figura.

• Escriba el código necesario para que el funcionamiento de la aplicación sea el siguiente:

• El usuario introduce una fecha en el cuadro de texto txtFecha y pulsa en el botón cmdAceptar. Entonces se comprueba que la entrada del usuario sea una fecha válida para lo que puede utilizar la función IsDate. En caso afirmativo se muestra en un cuadro de mensaje el día de la semana correspondiente a dicha fecha, para lo que puede utilizar la función WeekDay. En caso de que no sea una flecha válida, se muestra un mensaje indicándolo.

Por ejemplo, si introduce 11/2/97, la aplicación debería devolver el mensaje siguiente Usted

nació un Martes.

• Deberá crear un procedimiento que dada una fecha devuelva una cadena de texto con el día de la semana correspondiente a dicha flecha ( " Lunes" "Martes". Etc.).

10

Page 176: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 176

Fíjese como este procedimiento deberá transformar el valor numérico que devuelve la función WeekDay en su correspondiente cadena de texto. Por ejemplo si WeekDa.y, da como resultado 1, nuestro procedimiento debería devolver la cadena "Lunes" (el primer día de la semana).

• Dicho procedimiento solo debe poder ser utilizado en el formularlo.

• Utilice el sistema de ayuda de Visual Basic para más información sobre las funciones IsDate y WeekDay.

• Guarde el proyecto en una carpeta nueva de nombre Práctica l0 de VB. El proyecto se

llamará Práctica 10.vbp.

• Inicie el proyecto y compruebe que funciona bien.

Page 177: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 177

EFECTOS GRÁFICOS

PRÁCTICA

Esta práctica se divide en dos partes: en la primera dibujaras un control Shape y le dará algunas propiedades; en la segunda trabajará con las características de arrastrar y colocar (drag & drop) con el ratón.

• Controles de dibujo

• Inicie Visual Basic y abra el proyecto Videoclub.vbp en el que estuvo trabajando en anteriores prácticas.

• Inserte un nuevo formulario y realice los pasos necesarios para que su aspecto sea similar

al de la siguiente figura.

• El rectángulo dibujado es un control Shape cuya contorno tiene cierto grosor y es de color azul.

• El dibujo está insertado en un control Image cuya propiedad Picture tiene asignado el

archivo situado en \Common\Graphics\icons\misc\Eye.ico, ya utilizado para la propiedad I con del formulario principal.

• El botón Cerrar debe permitir descargar el formularlo de memoria.

• Este formulario debe mostrarse cuando el usuario seleccione la opción Ayuda -Acerca

de... del formulario principal del proyecto.

• Guarde el nuevo formularlo y ejecute el proyecto para observar el resultado.

11

Page 178: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 178

• Arrastrar y colocar con el ratón

• Cree un nuevo proyecto. Realice los pasos necesarios para que su único formulario muestre un aspecto similar al de la figura.

• Los controles Image imgProhibido e imgReserva no estarán visibles en ejecución.

• Los controles Image imgLibros e imgFeliz pueden ser arrastrados sin tener que programar para ello. Además tienen un icono especial cuando son arrastrados. Elija entre los existentes en las subcarpetas de \icons. El control imgBasura adapta la imagen que muestra al tamaño del mismo.

• Cuando se arrastra imgLibros y se suelta en imgBasura entonces desaparece del

formularlo el control imgLibros. Cuando se arrastra imgFeliz por encima de imgBasura cambia la imagen de este último al mostrado en imgProhibido.

Page 179: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 179

EL ADMINISTRADOR VISUAL DE DATOS

PRÁCTICA En esta practica creará la base de datos que se utiliza en el proyecto Videoclub.vbp. Parte de lo que tiene que hacer ya lo ha podido ver en el curso en pantalla. Antes de iniciar la práctica léala detenidamente en su totalidad.

• Inicie Visual Baste y elija Administrador visual de datos en el menú Complementos.

• Cree una base de datos nueva (MDB versión 7.0 de Access) con la opción Nuevo... del menú Archivo del Administrador de datos. Guarde el archivo en la carpeta Videoclub utilizada en las prácticas. Dele el nombre Videoclub.mdb a la nueva base de datos.

• Cree las cuatro tablas que conforman la base de datos. La estructura de cada una la puede

encontrar en el manual del curso al final de la lección El Administrador visual de datos.

• Siga los siguientes pasos para cada una de las tablas:

1. Cree la tabla. 2. Introduzca cada uno de los campos con el mismo nombre, tipo de datos y tamaño que se indica en el manual, si es necesario.

3. Cree el índice de clave principal, el resto de índices no será necesario. Recuerde indicar las propiedades Requerido y único.

• Salga del Administrador de datos y cierre Visual Basic hasta la próxima práctica.

12

Page 180: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 180

Page 181: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 181

ACCESO A BASE DE DATOS

PRÁCTICA

En esta práctica trabajara con el control Data, sin programación.

• Inicie Visual Baste y abra el proyecto Videoclub.vbp situado en la carpeta Videoclub.

• Muestre en pantalla el formulario frmDetSocios que creó en una práctica anterior.

• Dibuje un control Data en la parte inferior del formularlo, a la izquierda del botón Cerrar. Este control debe cumplir las siguientes características.

- Debe mostrar el texto Socios en el control. - Debe estar conectado a una base de datos de tipo Access. - La base de datos específica es Videoclub.mdb, creada en la práctica anterior, cuya ubicación es la propia carpeta de este proyecto. - El nombre del control Data es datSocios. - Debe permitir tener acceso a la tabla SOCIOS de la base de datos. - El tipo de Recordset que proporciona debe permitir la modificación de la base de

datos. - Debe permitir agregar nuevos registros sin necesidad de programar para ello.

• Establezca las propiedades adecuadas del resto de controles situados en este formulario

(excepto los controles Marco, las etiquetas y el botón Cerrar) para que actúen como controles enlazados al control Data creado en el anterior punto. Enlace cada control al campo de la tabla SOCIOS que coincida con la etiqueta de texto asociada.

• Guarde el proyecto, inícielo y elija la opción Introducir - Socio.

• Agregue los siguientes registros a la tabla SOCIOS, utilizando este formulario:

Nif: 00.000.001-A Nombre: Rodolfo Apellidos: Suárez López Dirección: C/ Mártires, 14. Madrid. Teléfono: (91) 111 11 11 Fecha introducción: 01/01/91

Nif: 00.000.002-B Nombre: Patricia Apellidos: Prados García Dirección: Avenida Diagonal, 125. Madrid. Teléfono: (91) 222 22 22 Fecha introducción: 02/02/92

13

Page 182: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 182

Nif: 00.000.003-C Nombre: Ángel Apellidos: Bolos Rodríguez Dirección: Paseo de la Concha, 48. Madrid Teléfono: (91) 333 33 33 Fecha introducción: 03/03/93 Nif: 00.000.004-D Nombre: Juan Apellidos: Infante Ros Dirección: C/ República Argentina, 128. Valencia. Teléfono: (96) 444 44 44 Fecha introducción: 04/04/94 Nif: 00.000.005-E Nombre: Yolanda Apellidos: Campos Domínguez Dirección: Avenida del Arena, 3. Barcelona. Teléfono- (93) 555 55 55 Fecha introducción: 05/05/95 Nif: 00.000.006-F Nombre: Víctor Apellidos: Lozano Rincón Dirección: Avenida de la Plata, 125. Valencia. Teléfono: (96) 666 66 66 Fecha introducción: 06/06/96 Salga de la ejecución y cierre Visual Basic hasta la próxima práctica.

Page 183: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 183

PROGRAMAR CON LA BASE DE DATOS

PRÁCTICA

En esta práctica trabajará con e1 objeto Recordset.

• Inicie Visual Basic y abra el proyecto Videoclub.vbp situado en la carpeta Videoclub, con el que ha estado trabajando en prácticas anteriores.

• Cree un nuevo formulario y efectúe las acciones necesarias para que tenga un aspecto

similar al de la figura. El nombre del formulario será frmIntPelículas.

• Deberá conocer el control Data dibujado en el formulario (datPe1ícu1as) con 1a tabla PELICULAS de la base de datos Videoclub.mdb y enlazar los otros controles (excepto el marco, etiquetas y, los botones de comando) a los campos de dicha tabla que coincidan con la etiqueta de texto asociada.

• El cuadro de texto txtRegistro no debe estar activado ya que está enlazado a un campo

contador por lo que es el propio sistema el que crea los valores de dicho campo. Al cargarse el formularlo se añaden a la lista de cboPúblico las opciones Todos los públicos, Tolerada menores y Mayores 18 años.

14

Page 184: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 184

• Escriba el código asociado al evento Click del botón Nueva, de forma que cuando se pulse dicho botón se cree un registro nuevo y se pueda introducir la nueva información en los controles enlazados.

• Una vez se ha pulsado en el botón Nueva, éste cambia su texto indicando Añadir. Cuando

se pulsa en Añadir es cuando realmente el nuevo registro es excedido a la base de datos.

• Conecte el nuevo formulario con el menú del formulario frmPrincipal de forma que se muestre cuando se elija la opción Insertar - Película.

• Guarde el proyecto dando el nombre Introducir Películas. frm al archivo del nuevo

formulario. Inicie el proyecto y utilice lee la opción Insertar -Película para introducir las as siguientes películas:

Registro película: 1 (Este dato no debe introducirse) Título: El Padrino Director: F. F. Coppola Productor: A. S. Ruddy Público: Mayores 18 años Género: Gángsters Año: 1972

Registro película: 2 Título: Blade Runner Director: R. Scott Productor: M. Deeley Público: Mayores 18 años Género: Ciencia ficción Año: 1982

Registro película: 3 Título: El último emperador Director: B. Bertolucci Productor: B. Bertolucci Público: Todos los públicos Género: Histórica Año: 1987

Registro película: 4 Título: Tierra Director: J. Medem Productor: J. Medem Público: Mayores 18 años Género: Fantástica Año: 1996

Page 185: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 185

OPCIONES AVANZADAS DE BASES DE DATOS

PRÁCTICA

En esta práctica trabajara con el lenguaje SQL para realizar una consulta cuyo resultado se mostrará en un control FlexGrid.

• Inicie Visual Basic y abra el proyecto Videoclub.vbp.

• Imagínese esta situación: un socio desea saber si en el videoclub existe una determinada película pero desgraciadamente solo conoce parte del título de la misma. En esta práctica resolverá este problema.

• Cree un nuevo formulario y real ice las acciones necesarias para que tenga el siguiente

aspecto:

• El control datPelículas estará conectada a la base de datos Videoclub.mdb pero no a una determinada tabla sino que su Propiedad RecordSource será una consulta SQL.

• La cuadrícula dbgPelículas estará enlazada al control datPelículas, mostrando el resultado

de la consulta. Establezca el valor de la propiedad WordWrap a true.

• El usuario introducirá texto en txtTítulo y pulsará en el botón Buscar entonces se realizará la búsqueda de aquellos registros de la tabla PELICULAS en los que su campo Título contiene el texto introducido.

15

Page 186: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 186

Para ello puede utilizar una consulta SQL en la que el criterio de búsqueda no sea la igualdad sino que se utilice la función LlKE de SQL. Dicha función permite que el criterio no sea tan restrictivo como la igualdad y además puede utilizar los caracteres comodín * y ?.

Así, por ejemplo, en lugar de indicar un criterio como Título = txtTItulo.Text podría utilizar otro menos restrictivo como Titulo LIKE *txt Título.Text* con lo que consigue que el resultado de la búsqueda devuelva aquel las películas en las que las palabras introducidas en txtTítulo aparezcan en su campo Título, sin importarle en qué lugar.

• Conecte el nuevo formulario con la opción Informes - Búsquedas - Buscar película ... del menú del formulario frmPrincipal.

• Guarde el proyecto dando el nombre Buscar película.frm al archivo del nuevo formulario

y ejecútelo.

• Compruebe que funciona bien la nueva opción. Así, por siempre, si busca alguna película que contenga en su título la palabra. El, debería encontrar toda la película El padrino como El último emperador.

Page 187: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 187

TRABAJAR CON ARCHIVOS

PRÁCTICA

En esta práctica utilizará la función FileCopy para realizar la copia de seguridad del archivo de base de datos Videoclub.mdb.

• Inicie Visual Basic y abra el proyecto VídeocIub.vbp. Muestre en pantalla el formulario frmPrincipal.

• Elija la opción Copia de seguridad del menú Archivo de este formulario. Deberá tener el

siguiente código, escrito en una práctica anterior:

Prívate Sub mnuArchivoCopia_Click() With CommonDialog1 .DialogTitle ="Realizar copia de seguridad" .DefaultExt "*.mdb"

Filter = "Base de datos (*.mdb)I*.mdb l Archivos de texto (*.txt) .txtl Todos los archivos (*.*) *.*” End With EndSub

Recuerde que utilizó un control Diálogo común para que se muestre el cuadro Guardar como

al elegir esta opción del menú.

• Escriba el código necesario para realizar la copia física del archivo Videoclub. mdb.

Para ello, utilice la función FileCopy fuente, destino donde en este caso, fuente será "x:\Videoclub\Videoclub.mdb" y destino será el nombre de archivo introducido por el usuario en el cuadro de diálogo Guardar como (al que podrá acceder a través de la propiedad filename del control Diálogo común). Y donde x es la unidad de disco en la que esté guardado el archivo Videoclub.mdb.

• Escriba un manejador de error para el caso de que el error sea el número 61. En este caso la aplicación debe mostrar un mensaje indicando que el disco de destino está lleno.

• Guarde el proyecto, ejecútelo y compruebe que funciona adecuadamente.

16

Page 188: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 188

Page 189: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 189

UTILIZACIÓN DE OLE

PRÁCTICA

En esta practica insertará un objeto de la aplicación Microsoft Excel. Si no posee dicha aplicación, puede utilizar cualquier otro objeto insertable que tenga en su equipo.

Inicie Visual Basic con lo que aparecerá un proyecto nuevo.

Realice las acciones necesarias para que el único formulario del proyecto presente un aspecto similar al de la figura.

• El formulario presenta un menú desplegable con una única opción Archivo - Salir.

• Se ha incrustado un objeto Gráfico de Microsoft Excel, cuya edición se realizará en el mismo formulario presentándose el menú de Excel.

• Guarde el proyecto como Práctica 17.vbp en una carpeta nueva de nombre Práctica 17

de VB. Ejecútelo y compruebe la edición visual del objeto.

17

Page 190: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 190

• En ejecución, al editar el objeto, cambie la hoja de datos del gráfico y compruebe como los nuevos datos se muestran en el gráfico.

• Utilice la revisión ortográfica que proporciona Excel. Podrá utilizar cualquier otra función

que permita realizar el menú de Excel.

Page 191: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 191

APLICACIONES MDI

PRÁCTICA En esta práctica trabajará con formularios MDI y secundarios. Además escribirá código para crear un menú Ventana y para seguir la secuencia de eventos.

• Cree una aplicación MDI que presenta las siguientes características:

- Se creen, en tiempo de ejecución, tantas copias como desee el usuario del formulario secundario creado en tiempo de diseño. Utilizará la opción Nuevo del menú Archivo de la aplicación. Al crear el nuevo formulario se le pedirá el nombre (título) de este.

- Presente un menú Ventana en el que se listen todos los formularios secundarios existentes así como las típicas opciones de organización: cascada, mosaico horizontal y mosaico vertical.

- Cuando no exista ningún formulario abierto sólo existirá la opción Archivo del menú con los elementos Nuevo y Salir.

- Cuando haya algún formulario secundario abierto, el menú se completará con la opción Ventana y los elementos anteriormente mencionados de dicho menú.

- Cuando se produzca el evento QueryUnload del formulario MDI, debe aparecer un mensaje indicando: Evento QueryUnload del formulario MDI.

- Cuando se produzca el evento QueryUnload de algún formulario secundario debe aparecer un cuadro de mensaje que permita cancelar el cierre de dicho formulario. El título del formulario, aparecerá en la barra de título del cuadro de men.

- Cuando se elija la opción Salir del menú Archivo de la aplicación, no se mostrará ningún mensaje, terminando inmediatamente la aplicación.

- Cuando se inicie la aplicación se mostrará solo el formulario MDI. Deberá hacer uso de la opción Nuevo para que aparezca algún formulario secundario.

- Cuando se cargue en memoria un formulario secundario deberá mostrarse automáticamente sin necesidad de escribir código para ello.

• Guarde el proyecto con el nombre Práctical7.vbp en una carpeta nueva de nombre Práctica l7 de VB.

• Ejecute la aplicación. Cree dos formularios nuevos.

• Cierre uno de los formularios secundarios. Responda que sí desea cerrarlo.

18

Page 192: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 192

• Cree un nuevo formulario secundario.

• Cierre el formularlo MDI, compruebe la secuencia de eventos, indicando que sí o que no desea cerrar alguno de los secundarios.

• Elija Archivo - Salir para volver a Visual Basic.

Page 193: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 193

DEPURAR LA APLICACIÓN

PRÁCTICA

NOTA: Esta lección carece de práctica pudiendo aplicar las técnicas mostradas siempre que necesite depurar su aplicación..

19

Page 194: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 194

Page 195: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 195

FINALIZAR LA APLICACIÓN

PRÁCTICA

En esta práctica realizará los pasos necesarios para general el paquete de instalación de la aplicación VideoClub.

• Abra el proyecto Videoclub realice una compilación completa de su código.

• Genere el archivo ejecutable VideoClub. EXE. Para ello:

• En la ficha Opcines de.EXE establezca el título de la aplicación y el icono.

• En comentarios escriba: Aplicación realizada en el curso de Visual Basic 6.0

• Acepte la ventana.

• Introduzca como nombre de archivo Videoclub y Acepte.*

• Una vez generado el ejecutable de la aplicación:

• Inicie el asistente de empaquetado y distribución.

• Siga los pasos del asistente.

• Recuerde incluir la base de datos Videoclub.mdb pulsado en el botón Agregar.

20

Page 196: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 196

Page 197: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 197

PRÁCTICA FINAL

Esta es la práctica final del curso, en la que tendrá que demostrar conocimientos sobre distintos temas tratadas en el mismo. Como la creación de una aplicación completa sería una práctica demasiado extensa, va a trabajar de nuevo con el proyecto Videoclub.vbp.

• Inicie Visual Basic y abra el proyecto Videoclub.vbp situado en la carpeta Videoclub. Deberá estar tal como quedó la última vez que fue utilizado en una práctica.

• Muestre en pantalla el formulario frmIntPelículas, creado en una práctica anterior.

• Realice los pasos necesarios para que cuando se está introduciendo una película y se pulse

en el botón Actores... aparezca una nueva ventana, de aspecto similar a la de la figura. El nombre del nuevo formulario será frmActores.

• Al mostrarse esta ventana, el cuadro de texto txtRegPelícula ya debe contener el registro de la película asociada (la mostrada en el formulario frmIntPelículas en el momento en que se pulsó el botón Actores). Además, deberá de cargarse en la lista IstActores, el nombre de cada uno de los actores de la película.

• Fíjese que si es una película en la que aun no se ha añadido ningún actor, esta lista estará

vacía. Para conseguir la lista de actores utilice una consulta SQL que deberá estar asociada a un control Data dibujado en este formulario.

Page 198: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 198

• Para crear la lista de actores debe moverse por el recordset creado y añadir cada uno de sus

registros a la lista. Consulte la propiedad EOF del recordset para saber cuándo no existen más registros.

• No debe permitir que se modifique el valor del cuadro de texto txtRegPelícula. Además,

en este formulario se deberá permitir que el usuario introduzca el nombre del actor en el cuadro de texto txtNomActor.

• Cuando esto suceda, podrá agregar el nuevo actor a la lista y a la tabla ACTORES. Esta

circunstancia se debe poder hacer de dos formas: pulsando en el botón Agregar o arrastrando con el ratón el nombre del actor hasta la lista y soltándolo en ella. Fíjese que tanto en un caso como en otro el proceso tiene que ser el mismo: añadir tanto a la lista como a la tabla ACTORES. Esta última tarea deberá realizarse a través de otro control Data dibujado en el mismo formulario.

• Si se el elige la forma de arrastrar y colocar, el ratón cambiara su icono al realizar el

arrastre al icono Drag1pg.ico situado en la carpeta Common\Graphics\icons\dragdrop.

• El botón Agregar solo estará activado si se ha introducido algo en el cuadro de texto txtNomActor.

• Si el usuario decide arrastrar y soltar el nombre del nuevo actor en la lista también deberá

comprobar esta circunstancia antes de intentar agregar el nuevo nombre de actor.

• Una vez se ha añadido un nuevo actor, se limpiará el contenido del cuadro de texto y se le dará el foco para que se pueda introducir más actores.

• Cuando pulse en el botón Cerrar se cerrará la ventana.

• Guarde el proyecto dando el nombre Introducción actores.frm al nuevo formulario y

ejecútelo para comprobar que funciona correctamente.

Page 199: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 199

PRÁCTICAS COMPLEMENTARIAS VISUAL BASIC 6.0

Page 200: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 200

Page 201: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 201

PRÁCTICAS COMPLEMENTARIAS

PRACTICA

En esta primera práctica complementaria conocerá un poco más el funcionamiento de una aplicación Windows típica: la aplicación Paint.

− Con el menú Inicio de Windows abra la aplicación Paint, que está en el grupo Programas- Accesorios.

− Observe cómo la aplicación se abre en una ventana independiente que puede cambiar de

tamaño, maximizarse o minimizarse, utilizando los botones de la ventana.

− Despliegue el menú principal que aparece. Observe la barra de estado, donde se le da información sobre el comando del menú en el que está situado. Elija la opción Archivo -Guardar como.

− Se abre una nueva ventana. Este tipo de ventanas se llaman cuadros de diálogo porque se

establece una especie de diálogo entre el usuario y la aplicación. Fíjese corno en este caso usted puede indicar la ubicación y el nombre del archivo.

− Compruebe que la ventana principal va no es la activa, pasando el foco al cuadro de

diálogo. (Fíjese en el color de la barra de título de una y otra ventana). Observe cómo esta ventana ya no presenta todos los botones de ventana.

− Pulse el botón Cancelar.

− Elija la opción Archivo - Abrir. Pulse la tecla [Ecs]. El cuadro de diálogo se cierra como

si hubiera pulsado el botón Cancelar.

− Pulse el botón . Se vuelve a abrir el mismo cuadro de diálogo. Las barras de herramientas permiten un acceso más rápido a ciertos comandos de menú.

− Cancele el cuadro y salga de Paint con la opción Salir del menú Archivo. Responda que

no al cuadro de mensajes que aparece. En el curso aprenderá muchas de las técnicas necesarias crear aplicaciones similares a ésta.

1

Page 202: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 202

Page 203: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 203

PRÁCTICAS COMPLEMENTARIAS

PRACTICA En esta segunda practica complementaria trabajará en el entorno de desarrollo de Visual Basic y con algunas opciones del formulario.

− Inicie Visual Basic a través del menú Inicio de Windows y cree un proyecto exe estándar. Observe cómo presenta una ventana que ocupa toda la pantalla y un conjunto de ventanas ancladas a sus lados.

− Ejecute el comando Opciones desde el menú Herramientas.

− Vaya a la ficha Avanzado y active la casilla Entorno de desarrollo SDI, acepte, lea el

mensaje que aparece.

− Guarde el proyecto en una carpeta a la que llamaremos Pracom2, salga de Visual Basic y Vuelva a entrar para que los cambios en el entorno de desarrollo surtan efecto.

− ¿Nota la diferencia en el entorno de desarrollo? Ahora las ventanas no están ancladas y

están ocultas las ventanas de proyecto y propiedades.

− Pulse F4. La ventana de proyecto y propiedades del formulario deben de aparecer en el entorno de desarrollo.

− Sitúelas un poco a la derecha para que no tapen el formulario. Inicie proyecto y fíjese en la

posición del formulario. Posteriormente pulse el botón de terminar de la barra de Herramientas.

− Mueva el formulario pulsando en su barra de título y, sin soltar, arrástrelo hacia la parte

inferior de la pantalla. Vuelva a iniciar el proyecto y observe la posición del formulario.

− Pulse el botón terminar. Establezca la propiedad StartUpPositíon al valor 2-CenterScreen y la propiedad Moveable a False.

− Vuelva a iniciar el proyecto y, fíjese el la posición del formulario. Ahora está centrado en

la pantalla. Por último intente moverlo ¿No puede, verdad? El valor de la propiedad Moveable indica si es posible mover el formulario (true) o no.

2

Page 204: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 204

Page 205: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 205

PRÁCTICAS COMPLEMENTARIAS

PRACTICA

En esta practica trabajaremos con las propiedades de un objeto formulario.

Para ello cambie la propiedad o propiedades e inicie el proyecto. Fíjese en cómo se prescrita el formularlo repita el proceso: cambio de propiedad e inicio de la aplicación.

− Inicie Visual Basic con un nuevo proyecto.

− Utilice la ventana Propiedades para establecer el valor de la propiedad BorderStyle. Experimente con los diferentes valores de dicha propiedad. Fíjese cómo algunos formulario son fijos y otros redimensionables. Cambie la propiedad ControlBox de true a false y experimente con los valores de MaxButton y MiriButton.

− Haga lo mismo con la propiedad MousePointer, cambie su valore inicie la aplicación.

Fíjese que al mover el ratón por el formulario su puntero cambia al establecido en esta propiedad.

− Repita el proceso con otros valores.

− Escriba en la propiedad Caption el texto: Mi aplicación.

− Establezca a True la propiedad ShowInTaskbar. Fíjese como aparece el formularlo, al

ejecutar el proyecto, en la barra de tareas de Windows.

− Salga de Visual Basic hasta la próxima práctica.

3

Page 206: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 206

Page 207: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 207

PRÁCTICAS COMPLEMENTARIAS

PRACTICA

En esta práctica construirá completamente el menú del formulario creado en la anterior practica.

− Abra un nuevo proyecto exe estándar.

− Vamos a practicar la creación de menús. Para ello nada mejor que fijarnos en una aplicación de Windows.

− Abra el Bloc de Notas de Windows desde el menú de Inicio. Muestre sus menús y realice

los pasos necesarios para que en el nuevo formulario aparezcan los mismos, en la misma disposición y con las mismas opciones, que en el Bloc de Notas.

− Una vez terminado el menú, haga clic en la opción del menú creado, Archivo-Salir, e

introduzca el código necesario para que finalice la aplicación al pulsar en esta opción.

− Inicie el proyecto.

− Despliegue todos los elementos de menú y compruebe que aparecen correctamente tanto las teclas de acceso rápido, de método abreviado y los niveles de menú.

− Finalice la ejecución con la opción correcta del menú creado.

− Salga de Visual Basic hasta la próxima práctica.

4

Page 208: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 208

Page 209: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 209

PRÁCTICAS COMPLEMENTARIAS

PRACTICA

En esta práctica trabajará con el control Diálogo común para mostrar cuadros de diálogo estándar de Windows.

− Abra el proyecto anterior. Muestre en pantalla el único formulario que contiene.

− Inserte un objeto Diálogo Común en el formulario. No hace falta establecer ninguna propiedad, ninguna llamándose CommonDialog 1.

− Elija la opción Imprimir del menú Archivo del formulario. Aparecerá el procedimiento de

evento Click de dicho elemento de menú.

− Utilice el método ShowPrinter para que se muestre el cuadro de diálogo Imprimir.

− Inicie el proyecto sin guardar los cambios. Elija Archivo- Imprimir y compruebe que aparece el cuadro de diálogo Imprimir.

− Vuelva a Visual Basic.

− Elija la opción Abrir del menú Archivo del formulario.

- La barra de título del cuadro de diálogo muestre el texto Abrir.

- La extensión por omisión del archivo a guardar sea. txt

- La lista de tipo de archivo permita ver o bien los archivos de texto (*.txt) o bien todos los

archivos(*.*). Recuerde utilizar el carácter en la propiedad Filter. Se muestre el cuadro de diálogo Abrir.

− Guarde el proyecto e inícielo.

− Elija la opción Abrir.. del menú Archivo. Compruebe que el cuadro de diálogo presenta las características requeridas. Despliegue la lista de tipos de archivo y vea que existen las tres posibilidades indicadas.

− Vuelva a Visual Baste y ciérrelo hasta la próxima práctica.

5

Page 210: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 210

Page 211: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 211

PRÁCTICAS COMPLEMENTARIAS

PRACTICA

En esta práctica debe crear una nueva aplicación. En el formulario nuevo tiene que dibujar los distintos controles para que tenga el aspecto de la figura.

− El nombre del formulario será frmCalculadora.

− El formulario debe presentar las siguientes características: la propiedad BorderStyle a valor 1- Fixed Single. En la propiedad Captión establecer el valor con el texto Calculadora.

− Ajuste el tamaño y la posición del formulario.

− El botón Cerrar debe responder tanto a pulsar en él como a pulsar la tecla [Esc]. Al

hacerlo, se descargará de memoria el formulario.

− Inicie el proyecto guardando los cambios. El nombre del archivo del formulario será Calculadora.frm.

6

Page 212: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 212

Page 213: Manual Visual Basic 6.0

Microsoft Visual Basic 6.0

PAG. 213

PRÁCTICAS COMPLEMENTARIAS

PRACTICA

− Vuelva a Visual Basic salga de él hasta la próxima práctica. En esta práctica complementaria trabajará con algunas funciones de manipulación de cadenas

de caracteres.

− Cree un nuevo proyecto e introduzca en el mismo un control label. El aspecto del formulario será como el de la figura.

− La función Left (cadena, tamaño) Devuelve un tipo Variant (String) que contiene un

número especificado de caracteres del lado izquierdo de una cadena.

− Por su parte Right (cadena, tamaño) realiza la misma operación, pero a la derecha.

− Con Len (cadena) obtenemos el nº de caracteres de una cadena.

− Por último Mid (cadena, inicio, tamaño) extrae un no de caracteres (tamaño) de una cadena a partir de una posición (inicio).

− En el formulario crearemos dos botones uno de iniciar y otro de parar. En el botón iniciar

escriba el siguiente código:

Dim cadena as string cadena=label1.caption parar =false Do DoEvents devuelve el contol al sistema Cadena =Right (cadena, Len (cadena)-1) + Left (cadena,1) labell.caption= cadena introduzca aquí un bucle de retardo si funciona demasiado rápido Loop until parar =true

7

Page 214: Manual Visual Basic 6.0

Visual Basic 6.0 Microsoft

PAG. 214

En el botón parar escriba:

Parar =True

Debe declararla variable parar como de tipo boolean en la sección de declaraciones.

− Inicie el proyecto. El texto debe simular una marquesina moviéndose de forma continua.

Vamos a hacer lo mismo, pero utilizando un control Timer.

− Borre todo el código escrito anteriormente y deje sólo el control label 1.

La propiedad más importante del control Timer es Interval que especifica cada cuanto tiempo se produce el evento Timer.

− Inserte un control Timer. Introduzca en Interval 100 (milisegundos).

En el evento Timer introduzca:

Label1=Right(label1,Len(label1)-1) + Left(1abel,1)

− Inicie el proyecto y vea los resultados. Fíjese que la propiedad predeterminada de label1 es caption, que es la que contiene la cadena.