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

Captulo Primero

Entorno de Trabajo de Visual Basic


Visual Basic es un entorno de desarrollo diseado para la creacin de aplicaciones para los entornos de trabajo Microsoft Windows 95, 98 y NT. Este lenguaje a una las posibilidades de un lenguaje de alto nivel con las herramientas de diseo grfico, lo cual nos da acceso a todas las funciones de los sistemas anteriormente citados. Los elementos del entrono de desarrollo de Visual Basic son:

1. Barra de Herramientas:

Permite un acceso rpido a los comandos ms utilizados.

2. Diseador de formularios:

Es la ventana en la que se disear la interfaz de la aplicacin, en ella se pueden agregar controles grficos e imgenes. Cada formulario de una aplicacin aparecer en su propia ventana.

3. Cuadro de Herramientas:

En el cuadro de herramientas podemos encontrar un conjunto de herramientas que permiten insertar los objetos o controles en el formulario durante en tiempo de diseo, los objetos ms comunes son botones (command), etiqueta (label), cuadros de imagen (Picture), imgenes (Image), etc. Si hacemos doble click con el ratn sobre alguno de ellos se insertar automticamente en la ventana del formulario.

4. Ventana de Propiedades:

Los objetos tiene asociados unas propiedades que describen sus atributos, valores, comportamiento y apariencia del objeto. Las opciones de esta ventana son: Lista desplegable de objetos: Donde podremos visualizar el nombre de los objetos de la aplicacin. Lista de propiedades del objeto seleccionado: Al seleccionar un objeto con la lista desplegable anteriormente mencionada nos aparecern las propiedades del mismo (name, visible, appearence, borderstyle, etc...). En la lista de propiedades se pueden modificar las propiedades del objeto. Se puede visualizar de dos formar, por categora o alfabticamente.

5. Ventana de Proyectos:

Contiene la lista de los archivos que forman parte de la aplicacin: Los tipos de archivos que se pueden incluir en un proyecto son: Archivo de Proyecto: Es el que realiza el seguimiento de todos los ficheros que forman parte de la aplicacin. Se guarda en un fichero con la extensin .VBP Archivo de Recursos: Aqu se guardan cadenas de texto, mapas de bits, y dems datos que puedan modificarse sin tener que volver a modificar el cdigo. Se guardan con una extensin .RES Mdulo de Formulario: Contiene controles y cdigo, slo hay uno por formulario. Se guardan con extensin FRM Mdulo de Clase: Son similares a los mdulos de formulario. Se guardan con la extensin .CLS

Mdulo Estndar: Slo pueden contener cdigo. Tienen una extensin .BAS Controles ActiveX: Controles que se pueden aadir al cuadro de herramientas e incluirlos en un formulario.

6. Ventana Editor de Cdigo:

En esta ventana es donde se incluye el cdigo de la aplicacin. Se crear una ventana de cdigo para cada formulario o mdulo de la aplicacin. Para tener acceso a la ventana de edicin, la forma ms sencilla es hacer doble click sobre el formulario o sobre el objeto al cual quiera incluir cdigo.

Captulo Segundo
Programacin en Visual Basic
1. Estructuras de Cdigo:

El cdigo que escriba en un proyecto de Visual Basic aparecer siempre en un mdulo. Un mdulo es un archivo de proyecto, pudiendo ser un mdulo de formulario, de clase o de carcter general como vimos en el captulo anterior. En cada mdulo, el cdigo se divide en dos secciones: declaraciones y procedimientos. Los procedimientos son unidades de cdigo como pequeos programas, escritos para realizar funciones determinadas, con un propsito bien definido. En cualquier mdulo, el programador dispone de una seccin especial llamada general en las que se sitan las declaraciones y en la que se puede incluir otros procedimientos creados por el programador. En el apartado declaraciones se puede introducir las constantes, variables y tipos de datos que necesite en su aplicacin. (Todos estos conceptos sern tratados a lo largo del curso). Los procedimientos pueden tener parmetros, especificados entre partentesis que le permiten comunicar al procedimiento alguna informacin que necesite o que sea el propio procedimiento quien devuelva algn valor. En un mdulo de formulario el cdigo que se sita se refiere tanto a dicho formulario como al resto de objetos que estn dibujados en l. En este tipo de mdulos cabe destacar los procedimientos de evento que se encargan de dar una respuesta programada a los eventos que ocurren en la aplicacin. Si has escrito cdigo para algn procedimiento de evento, ste aparece en negrita en la lista de procedimiento de la ventana de cdigo. El cdigo de carcter general o que puede compartir en ms de un proyecto, se sita en un mdulo general. El cdigo que aparece en este tipo de mdulos no se relaciona con un objeto determinado, sino que tiene carcter general. En los mdulos generales no se pueden incluir procedimientos de evento como en el caso de los mdulos de formulario. Es conveniente aadir comentarios a las lneas de cdigo que escribas, de esta forma podrs entender los programas aunque haga tiempo que los escribistes. Para aadir un comentario en una lnea se utiliza el carcter ' (apstrofe).

2. Objetos en Visual Basic:

Un objeto en Visual Basic se caracteriza por tres componentes: propiedades, mtodos y eventos.

Las propiedades son aquellas caractersticas o atributos que permiten establecer el aspecto de un objeto como el color, tamao, posicin, etc... O el estado del mismo: activo, maximizado, ect... Existen propiedades que slo estn disponibles en tiempo de diseo y otras que slo estn disponibles en tiempo de ejecucin. Los mtodos son pequeos programas que actan sobre un determinado objeto y que establecen su comportamiento. As un objeto puede moverse, ocultarse, etc... Puedes utilizar cualquier mtodo que forme parte del objeto. Los eventos son las situaciones que se producen y que nos interesan identificar para establecer algn tipo de de respuesta por parte del objeto. As, puedes hacer click 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 hayas programado alguna accin en el correspondiente procedimiento de evento.

3. Establecer propiedades:

Cuando insertas objetos en un formulario tienes que establecer algunas propiedades que presenta. Las propiedades son aquellas caracterticas propias del objeto que hacen que se distingan de otro objeto. En una aplicacin Windows podemos distinguir diversos tipos de ventanas, aunque lo normal es identificar una ventana inicial que se puede maximizar o minimizar y uno o ms cuadros de dilogo cuyo tamao suele ser fijo. Sin embargo, debes darte cuenta que las barras de herramientas tambin son ventanas de una aplicacin. Normalmente la ventana inicial o de arranque ser la que presente el men principal, formado por mens desplegables en uno o ms de un nivel. El resto de ventanas no deberan contener mens desplegables, aunque puede darse el caso. Algunas propiedades de los formularios que se pueden establecer en tiempo de diseo son: BorderSytle: Establece el estilo del borde del formulario. Caption: Establece el texto que aparece en la barra de ttulo del formulario. ControlBox: Permite mostrar o no el men de control de las ventanas de Windows. Enabled: Establece si el formulario puede responder o no a los eventos que generes. Font: Establece las caractersticas de los objetos de texto que se siten en el formulario. Icon: Cambia el icono que representa el formulario. Left, Top, Height, Width: Establecen la posicin del formulario en la pantalla as como las dimensiones. MaxButton y MinButton: Establece si se podr maximizar o minimizar el formulario. MousePointer: Modificar el puntero del ratn. Visible: Establece si el formulario se mostrar visible en tiempo de ejecucin. WindowState: Establece el modo en que se carga inicialmente el formulario, normal, maximizado o minimizado. Todas estas propiedades estn disponibles en tiempo de diseo a travs de la ventana de propiedades. En tiempo de ejecucin se puede cambiar o consultar el valor de algunas propiedades que slo tienen sentido en el tiempo de desarrollo.

NombreObjeto.NombrePropiedad.

4. Convenci&oacuten para nombrar objetos de Visual Basic:

OBJETO Form CheckBox ComboBox Command Button Data Directory list box Drive List Box File List Box Frame Grid Data-bound grid Horizontal scrollbar Image Label Line OLE Container PictureBox Shape Text Box Timer Vertical scroll bar 5. 6. Utilizar Mtodos:

OBJETO ESPAOL Formulario Casilla de verificacin Cuadro combinado Botn de comando Control de datos Cuadro lista de directorios Cuadro lista de unidades Cuadro lista de archivos Marco Rejilla Rejilla enlazada a datos Barra de desplazamiento horizontal Imagen Etiqueta Linea Contenedor OLE Cuadro de imagen Forma Cuadro de texto Temporizador Barra de desplazamiento vertical

PREFIJO frm chk cbo cmd dat dir drv fil frm grd dbg hsb img lbl lin ole pic shp txt tmr vsb

Data-bound combobox Cuadro combinado enlazado a datos dbc

Una vez se ha establecido la parte estructural del formulario, se pasa a programar el comportamiento que debe seguir, de forma que cumpla con el objetivo para el que desees crearlo, utilizando los mtodos. Un mtodo es un componente ms de del objeto, que puede ser utilizado directamente. Para ello debes llamar al mtodo e indicarle sobre qu objeto deseas aplicarlo, que deber admitirlo. La sntaxis en este caso debe ser: NombreObjeto.NombreM&eacutetodo[par1,...,parn], donde la lista de parmetros [par1...,parn] es opcional de cada mtodo. Un ejemplo es: Si quieres mostrar un formulario llamado frmPrimero la sntaxis ser: frmPrimero.Show 1

El valor 1 nos indica que aparecer de forma modal y si el valor es 0 aparecer de forma no modal.

7. Entender los Eventos:

El conjunto de eventos est predefinido en Visual Basic por lo cual no puedes crear nuevo eventos para los objetos. El conjunto de eventos reconocibles por un objeto est ligado con los procedimientos de evento. Estos procedimientos son unidades de cdigo que le permiten especificar la respuesta que debe dar un objeto ante la ocurrencia de un evento que puede reconocer. La definicin del procedimiento de evento tiene la siguiente forma: Private Sub NombreObjeto_NombreEvento([Lista de par&aacutemetros]) instrucciones End Sub.

Captulo Tercero
Trabajar con Mens
1. El editor de mens:

Al usar mens se evita ocupar mucho espacio en las ventanas, ya que estos slo aparecen cuando se despliegan explcitamente. Adems, se pueden crear hasta cinco niveles de mens, por lo que el nmero de comandos y posibilidades es suficientemente amplio. En Visual Basic se trabajo con el editor de mens para crear, establecer propiedades y modificar los menes. Para acceder a l basta con pulsar el siguiente botn en la barra de herramientas:

Este botn slo estar activo cuando est abierto el formulario, ya que el men siempre est asociado con un determinado formulario. El editor de mens presenta las siguientes propiedades que se pueden aplicar sobre los mens: Caption: Representa es texto que aparecer en el men. Name: Es el nombre del control. Se puede anteponer el prefijo mnu ms el texto del ttulo del men. Checked: Establece si debe aparecer una marca de verificacin a la izquierda del texto del objeto del men. La marca la puedes utilizar cuando deseas informar de la opcin que est activada 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 se establece este valor a False, los elementos situados a la derecha ocupan el lugar del elemento no visible. WindowsList: Establece el valor que determina si un objeto de men mantiene una lista de las ventanas MDI secundarias del formulario actual.

2. Elementos del Men:

Utilizando los botones de sangra se puede determinar el nivel del objeto men que quieras seleccionar. As, los ttulos de men se sitan en el nivel superior, mostrndose en la lista inferior del editor de mens, lo ms a la izquierda posible. En muchas aplicaciones se pueden ver unas barras horizontales en los mens desplegables que realizan la funcin de dividir en secciones dichos mens. Este elemento es conocido como un separador, y sirve para separar aquellos comandos del men que tengan un motivo en comn. Para crear un separador, basta con introducir un guin (-) en la propiedad Caption. No se puede crear un elemento en un nivel inferior inmediatamente despus de un separador, es decir, no puedes tener como ttulo de men un separador.

3. Teclas de Mtodo Abreviado:

Al introducir el carcter & el men est creando una tecla de acceso a dicho objeto. Esta tecla se representa subrayada en el texto de men y respresenta la tecla del teclado que el usuario puede pulsar para ejecutar la accin. Dicha tecla se corresponde con la letra que sigue al caracter & en la propiedad Caption del objeto men. Si se trata de un ttulo de men tienes que usar la tecla de acceso en combinacin con la telca [Alt.]. Una vez abierto un ttulo de men y desplegado sus elementos, para acceder rpidamente a uno de ellos, puedes usar la tecla de acceso directamente. Tienes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de un mismo nivel de men ya que entonces no funcionarn. El editor de men tambin admite la incorporacin de teclas de mtodo abreviado. Las abreviaturas del men son combinaciones de teclas que se pueden utilizar en lugar de elegir el elemento del men correspondiente. Para crear una tecla de mtodo abreviado tienes que utilizar la propiedad Shortcut, a la que puedes acceder al crear el men desde el editor de mens.

4. Eventos del Men

Cuando en tiempo de diseo seleccionamos la opcin de men de un formulario que estamos creando, Visual Basic muestra el procedimiento de evento click de dicho elemento del men. En el caso del ttulo del men, el procedimiento click tiene como accin predeterminada la de mostrar los elementos de men del nivel inferior, por lo que no ser necesario tener que programar esta accin. Esto tambin se puede aplicar a los elementos de un men que son a su vez ttulos de submens. Em casi todos los casos tienes que utilizar una opcin del men para descargar el formulario o para finalizar la aplicacin. La opcin de texto salir suele ser el ms apropiado. La instruccin Unload descarga de memoria el formulario que se especifique. Se puede usar de varias formas, por ejemplo si estamos dentro de un Form llamado frmconsulta podremos salir de l de dos formas: Una es Unload Me o Unload frmconsulta.

5. Mens Contextuales

Estos mens aparecen cuando hacemos click con el botn secundario del ratn, y suele presentar opciones que se corresponden con las acciones ms usuales de la aplicacin. Este men puede aparecer en cualquier ventana de la aplicacin a diferencia de los mens anteriores. Un men contextual no se asocia con un determinado objeto situado en el formulario, al ser igual que un men desplegable est asociado a un formulario. Para mostrar un men contextual tienes que usar el mtodo PopupMenu del formulario donde lo ests creando. La sntaxis es la siguiente: [objeto].PopupMenu NombreMen[,indicadores[,x[,y[,boldcommand]]]] donde los corchetes especifican parmetros opcionales. Si no se especifica el objeto sobre el que se aplica el mtodo, Visual Basic entender que es sobre el formulario actual.

6. Opciones del men contextual

El hecho de tener siempre asociado un men contextual con un determinado formulario, no impide que el men contextual aparezca cuando se pulsa sobre uno de los controles situados en el formulario. Adems puedes indicar las ubicacin exacta del men contextual. En el ejemplo anterior de llamada al PopuMenu, los indicadores se encargan de definir la ubicacin respecto a las coordenadas X e Y tambin introducidas y el comportamiento del men contextual. Los valores que puede tomar este parmetro respecto a la posicin del men son: vbPopupMenuLeft.Align (valor 0): valor predeterminado que nos indica que el lado izquierdo del men viene dado por el valor X. vbPopupMenuCenter.Align (valor 4): En este caso el men contextual se centra respecto a X. vbPopupMenuRight.Align (valor 8): El lado derecho del men se sita en X. Los valores que puede tomar respecto al comportamiento a seguir son: vbPopupMenuLeftButton (valor 0): Los elementos del men contextual slo reaccionan a los click del ratn cuando se use el botn primario del ratn. Este es el valor predeterminado. vbPopupMenuRightButton (valor 2): Los elementos del men contextual reaccionan a los click del ratn cuando se use el botn primario o secundario.

Captulo Cuarto
Cuadros de Dilogo
1. Introduccin

La mayora de las aplicaciones Windows hacen uso de los cuadros de dilogo para establecer las opciones o introducir informacin que necesitan para realizar una accin indicada por el usuario. Otro uso posible de los cuadros de dilogo es presentar informacin al usuario. Los cuadros de dilogo se caracterizan por ser modales y no permitir poder cambiar el tamao de la ventana, adems no debern tener una barra de mens desplegables. En Visual Basic podemos crear tres tipos de cuadros de dilogos: personalizados, predefinidos y dilogo comn.

2. Cuadros Predefinidos

La sntaxis completa de la funcin MsgBox es: MsgBox(mensaje[, botones][, t&iacutetulo][, archivoAyuda, contexto]) Los valores que pueden tomar el parmetro botones son:

Constante vbOKOnly vbOKCancel vbYesNoCancel vbYesNo vbRetryCancel

Valor Descipcin 0 Muestra slo el botn aceptar 1 3 4 5 Botones aceptar y cancelar Botones anular, reintentar e ignorar Botones si, no y cancelar Botones si y no Botones reintentar y cancelar

vbAbortRetryIgnore 2

vbCritical vbQuestion vbExclamation vbInformation vbAplicationModal vbSystemModal

16 32 48 64 0

Muestra el icono de mensaje crtico Icono de interrogacin Icono de exclamacin Icono de mensaje de informacin Cuadro de dilogo modal de la aplicacin

4096 Cuadro de dilogo modal del sistema

El parmetro botones es de valor numrico, y adems de los botones que aparecen en le cuadro de dilogo, tambin puede indicar el icono que acompae al mensaje y el tipo de dilogo modal que es. Cuando un cuadro de dilogo es modal de aplicacien tienes que cerrarlo para interactuar con otra ventana de la misma aplicacin. Cuando es un cuadro de dilogo modal del sistema, todas las aplicaciones que estn ejecutndose se suspenden hasta que el usuario responda al cuadro de dilogo. El cuadro InputBox se consigue a travs de la funcin InputBox. Se utiliza cuando se necesita que el usuario introduzca alguna informacin. La sntaxis correcta es: InputBox(mensaje [,t&iacutetulo][, est&aacutendar][, posx][,posy][, archivoAyuda , contexto])

3. Control Di&aacutelogo Comn

En el objeto dilogo comn lo podemos encontrar en la barra de herramientas de Visual Basic:

Nos permite mostrar cinco cuadros de dilogo estndar en las aplicaciones. Estos cuadros de dilogo son: Abrir Guardar Como Imprimir Fuente Color Tambin podemos hacer uso del control dilogo para llamar al motor de Ayuda de Windows de forma que pueda presentar el archivo de ayuda en lnea de la aplicacin. Al crear un objeto dilogo comn, se sita en una posicin y un tamao estndar. En el caso de quere utilizar el cuadro de dilogo comn Guardar como: DialogTitle: Es el texto que debe aparecer en la barra de ttulo del cuadro de dilogo. DefaultExt: Es la extensin con la que se guardar el archivo. Filter: Indica la extensin de los archivos que deben mostrarse en el cuadro de dilogo. En el caso de la propiedad Filter se puede indicar que muestre ms de un tipo de archivos. Para esto se utiliza la sntaxis: Archivos de Texto|*.txt|Base de datos|*.mdb Con el ejemplo anterior nos aparecern todos los archivos de texto(*.txt) y los de base de datos(*.mdb).

Los mtodos disponibles para los cuadros de dilogo son: ShowOpen: Abrir. ShowSave: Guardar como. ShowColor: Cuadro de dilogo color. ShowFont: Tipo de fuente. ShowPrinter: Imprimir. ShowHelp: Llamada a la ayuda de Windows Ejemplo de llamada al motor de ayuda de Windows: With CommonDialog1 .HelpFile = "C:\Vb\vb.hlp" .HelpCommand = cdlHelpContents .ShowHelp End With

Captulo Quinto
Controles Bsicos
1. Introduccin

Al disear una aplicacin con Visual Basic lo primero que deberemos hacer es planear la interfaz, que est constituida por el conjunto de formularios que aparecen a lo largo de la ejecucin de la aplicacin. Los controles son los elementos grficos que aparecen en los formularios y que sirven para obtener datos y presentar la salida que produce la aplicacin. Entre los numerosos controles que presenta Visual Basic caben destacar los bsicos, que aparecen en casi todas las aplicaciones de Visual Basic como etiquetas, cuadros de texto, botones de comando, etc. Cada uno de estos controles son tratados como objetos en Visual Basic, por lo que no tienes que olvidar que tienen su propio conjunto de propiedades, mtodos y eventos.

2. Entrada de Datos

Dos controles muy relacionados y que se utilizan en la funcin 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 El control de etiqueta es:

Los cuadros de texto son el control estndar de entrada de datos en Visual Basic. Permiten al usuario de la aplicacin introducir informacin. El control del cuadro de texto es:

Algunas propiedades del control etiqueta son:

Propiedad

Definicin Si su valor es True, el tamao de la etiqueta se adapta automticamente a su contenido Texto que se visualiza en la etiqueta Permite o no interactuar con la etiqueta Establece la fuente, tamao y aspecto del texto

Alignment Establece la alineacin del texto de la etiqueta Autosize Caption Enabled Font

Los cuadros de texto son semejantes a las etiquetas, pero con la diferencia que el usuario puede modificar su contenido. El texto que se introduce puede ser tanto numrico como alfanumrico (nmeros y letras). A diferencia de la etiqueta, el tamao del texto es fijo al no permitir la propiedad autosize. Algunas propiedades del objeto cuadro de texto son:

Propiedad Alignment Enabled Font Multiline PasswordChar ScrollBars TabIndex TabStop Text

Definicin Alineaci&oacuten de la informacin introducida. Permite o no que se puedan realizar acciones sobre el cuadro de texto Igual que en el caso de las etiquetas Permite introducir ms de una lnea de texto en el cuadro Estable el caracter que se muestra al realizar una entrada en el objeto. Slo se mostrar dicho caracter Muestra barras de desplazamiento Establece el orden de tabulacin fijado para el objeto Indica si al utilizar el tabulador se puede desplazar entre los controles del formulario Texto que se visualiza en el control

3. Etiqueta + Cuadro de Texto

En las ventanas de entrada de datos es muy comn tener la combinacin de etiqueta y cuadro de texto, ya que los cuadros de texto no tienen la propiedad Caption que permite crear teclas de acceso. Cuando quieras permitir un acceso rpido a cierto cuado de texto, el uso de una etiqueta asociada es la forma ms sencilla de hacerlo. Utiliza el caracter & en la propiedad Caption de la etiqueta asociada y se crear la tecla de acceso para el cuadro de texto.

4. Control Marco

Se utiliza para estructurar el formulario en varias secciones, agrupando en stas los controles para que la lectura sea ms sencilla. El control que tienes que utilizar para esto el el control Marco (Frame):

La nica propiedad interesante de un control marco es la propiedad Caption, que se refiere al texto que se presenta en la parte superior izquierda del control. El control marco acta como contenedor de otros controles, as que las propiedas Left, Right y Top de un objeto contenido en un marco se establecen en relacin al objeto contenedor. Al mover un marco tambin se mueve los controles que contenga, para ello deberemos crear primero el marco y despues los controles que queremos que contenga.

5. Botones de Comando

El botn de comando (CommandButton), es muy sencillo, por lo que no tienes que establecer muchas propiedades. Con la propiedad Caption establecemos el texto que aparecer en el botn. Tambin se pueden crear teclas de acceso al botn.

El uso principal de los botones de comando es realizar acciones en la aplicacin.Para poder llevar a cabo las acciones sobre un botn pulsandon Intro, tienes que dejar su propiedad Default a True.

6. Bloquear los Controles

Cuando estn situados los controles en el formulario se pueden bloquear para que no puedan moverse de forma accidental. Para esto deberemos pulsar en la barra de herramientas:

Cuando actives este botn y mientras no desbloques los controles utilizando la misma opcin no se podrn mover ninguno de los controles del formulario activo. Sin embargo en si abres otro formulario que no tenga los controles bloqueados si se podrn mover. Si aades ms controles a un formulario bloqueado estos quedan bloqueados automticamente.

Captulo Sexto
Controles Bsicos (II)

1. Casillas de verificacin

Nos dn la oportunidad de poder elegir entre distintas opciones. Las casillas de verificacin (CheckBox), permiten establecer opciones que no son excluyentes entre s, es decir, puedes seleccionar una o ms de una.

Una casilla de verificacin puede estar activada (cheked), o desactivada (unchecked). Adems la casilla puede estar atenuada (grayed), que nos indica que el objeto no est disponible. La propiedad que tiene estos valores es Value. El evento ms utilizado en este tipo de objetos es el momento en el que se pulsa en la casilla. En esta situacin el usuario quiere indicar que desea activar o desactivar la casilla, dependiendo del valor que tenga en ese momento.

2. Botones de Opcin

Los botones de opcin (OptionButton), tambin permiten presentar opciones al usuario, pero con la particularidad que slo puedes seleccionar una de cihas opciones al mismo tiempo.

Si quieres que en un mismo formulario se pueda seleccionar ms de un botn de opcin, tienes que crear distintos conjuntos de botones de opcin. El botn de opcin slo puede tener dos valores en la propiedad Value (True y False), true si est activado y false si est desactivado. Es importante utilizar los botones de opcin slo cuando cuando el nmero de opciones posibles sea fijo a lo largo de la vida de la aplicacin. En caso contrario, la inclusin de una opcin o modificacin de alguna de las exixtentes podra implicar la modificacin de partes de la aplicacin que trabajen con

dichas opciones, lo que resulta poco deseable.

3. Cuadro de Lista

Otra forma de presentar las opciones es a travs de una lista donde se sitan dichas opciones. De forma predeterminada, las opciones que contiene un cuadro de lista (ListBox), se presentan verticalmente en una columna, aunque tambin puede establecerse ms de una columna.

Entre las propiedades del cuadro de lista caben destacar: ListIndex: Indica el ndice de elementos seleccionado. El primer elemento de la lista tiene que tener valor 0. ListCount: Indica el nmero de elementos existentes en la lista en todo momento. Todas estas propiedades son utilizadas en tiempo de ejecucin cuando se interacta con la lista. Para indicar que la lista est ordenada se utiliza la propiedad Sorted, con el valor true. A la hora de agregar elementos a la lista es necesario utilizar un mtetodo de sta. El mtodo AdItem se encarga de esto. Para borrar elementos de la lista utilizaremos el mtodo RemoveItem.

Captulo Sptimo
Fundamentos de Programacin
1. Variables

Una variable es una ubiacin temporal de memoria donde se almacenan datos que interesan retener durante la ejecucin de la aplicacin. Las variables pueden contener texto, valores numricos, fechas o propiedades de cierto objeto. Es una forma de dar nombre a una porcin 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 vidad de sta. Es necesario declarar las variables para poder utilizarlas en el programa. En Visual Basic no es obligatorio pero si recomendable. Al declarar una variable se reserva memoria para ella y se indica qu valores puede contener a travs de su tipo de datos. Para establecer la declaracin de una variable antes de ser utilizada en el cdigo, puedes hacerlo en la ficha entorno del cuadro de dilogo opciones. Al activar la casilla Declaracin de las variables requerida, Visual Basic introduce la instruccin Option Explicit en la seccin de declaraciones de cada mdulo nuevo que se cree, no de los ya existentes donde tienes que introducirlos manualmente. Esta instruccin obliga a declarar las variables antes de utilizarlas, lo que es muy recomendable. El uso de las variables puede hacer que la aplicacin sea ms rpida, por ejemplo, si usas muchas veces un determinado valor, es aconsejable guardarlo en una variable y utilizarla cuando se necesite que tener que volver a escribir cdigo cada vez que quieras llamarla. Es ms rpido el acceso a las variables que a una propiedad de un objeto, por lo que tambin es aconsejable guardar el valor de una propiedad en una variable. Veamos un ejemplo: Dim Variable Variable = txtEntrada.Text txtSalida.Text = Variable La forma de declara una variable es a travs de la instruccin Dim. En la lnea se declara la variable de nombre Variable y al mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla. En la segunda lnea ya se utiliza la variable. En este caso sirve para guardar el valor que existe en un

cuadro de texto llamado txtEntrada (representado por la propiedad Text). En la tercera lnea se hace justo lo contario, se utiliza la variable Variable para establecer el valor de la propiedad Text del cuado de texto txtSalida. Si aadimos las siguientes lneas de cdigo: Variable = 125 txtN&uacutemero.Text = Variable Hemos establecido una variable de valor numrico. Sin embargo en las anteriores lneas se haba establecido un valor de texto ya que la propiedad Text es de ese tipo de datos. En la ltima lnea se vuelve a utilizar la variable como origen de la propiedad Text del cuadro de texto txtNmero.

2. Tipos de datos

El tipo de datos de una variable establece el nmero de valores que sta puede tener, 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 alamacenar los valores de dicho tipo de datos. Es importante indicar el tipo de datos ya que no todos tienen la misma representacin en memoria, ocupando distinto espacio fsico. Visual Basic de forma predeterminada, a no ser que se indique el tipo de datos, establece el tipo Variant para todas las variables. As, al utilizar una intruccin como Dim NombreVarialbe, se especifica implcitamente el tipo Variant para dicha variable. 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 hay que preocuparse de efectuar conversiones entre tipos para utilizarlas en distintos contextos. Las variables de tipo Variant son muy flexibles, pero ocupan mucha memoria y disminucin de la velocidad. Vamos a ver los siguientes tipos de variables:

Tipo de datos Entero (Integer) Entero Largo (Long) Simple (Single) Doble (Double) Moneda (Currency) Cadena de caracteres (String) Byte Boleano (Boolean) Fecha (Date) Objecto (Object) Variant

Tamao 2 bytes 4 bytes 4 bytes 8 bytes 8 bytes 1 byte por caracter 1 byte 2 bytes 8 bytes 4 bytes 16 bytes + 1 byte por cada caracter

Para declarar las variables debes de usar su nombre en ingls.

3. Constantes

Cuando un valor se repite frecuentemente es interesante guardarlo en una variable. Las constantes son semejantes a las variables, pero su valor no puede cambiar a lo largo de la aplicacin. Para utilizar una constante hay que declararla previamente. La forma de declararla es a travs de de la instruccin: Const NombreConstante = Expresin, donde la expresin ser un valor literal o un conjunto de palabras que se evalen a un valor vlido.

4. Operadores de Visual Basic

En Visual Basic existe un gran nmero de operadores que se pueden utilizar para crear frmulas. Los operadores ms utilizados en una aplicacin de Visual Basic son los siguientes:

Operador Operacin que realiza + Suma / Concatenacin de cadenas de caracteres * / \ Mod ^ & Resta Multiplicacin Divisin Divisin entera Resto de la divisin entera Exponenciacin Concatenacin de cadena de caracteres

Captulo Octavo
Fundamentos de Programacin II
1. Fundamentos de Programacin (II)

Visual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucin de un programa. Si no existen esta estructures el cdigo se ejecutar de arriba hacia abajo y de derecha a izquierda segn lo hayas escrito. Entre las estructuras de control cabe citar las estructuras de decisin y las estructuras de repeticin. La instruccin If-Then-Else, es la estructura clsica de decisin y presenta la siguiente sntaxis: If condici&oacuten1 Then [instrucciones] [ElseIf condicin2 Then [instrucciones]] ... [Else [instruccionesN] End If Donde los corchetes representan partes opcionales de la intruccin. Adems es posible que existan ms de una clusula ElseIf en la misma instruccin If-Then-Else, por ello los puntos suspensivos. Si la condicin 1 se cumple, entonces se ejecutar el bloque de instrucciones 1, en caso contrario se ejecutar el bloque de instrucciones (2...N-1) de la primera clusula ElseIf condicin se cumpla. Si finalmente no se cumple ninguna de las condiciones se ejecutara el bloque de instrucciones N correspondiente a la clusula Else. La condicin es una expresin, es decir, un conjunto de palabras que se evalan a verdadero o falso sin posibilidad de poder tener otro valor. Se dice que una condicin se cumple cuando se evala a verdadero y que fracasa en caso contrario. Las condiciones tambin se conocen como expresiones lgicas. Vamos a ver un ejemplo:

El cdigo sera: Dim moneda moneda = lstMoneda.ListIndex If moneda = 0 Then MsgBox "Peseta" ElseIf moneda = 1 Then MsgBox "D&oacutelar" ElseIf moneda = 2 Then MsgBox "Franco" End If Se utiliza una variable para establecer el valor de una propiedad que indica que la opcin del cuadro de lista lstMoneda est seleccionado. Una vez conocida la opcin seleccionada, deberemos sacar el mensaje adecuado, para ello necesitamos una estructura de decisin. La intruccin de la clusula Else, slo se ejecuta cuando el resto de condiciones han fracasado. Cualquiera de los bloques de instruccin puede contener un nmero arbitrario de instrucciones, incluida la posibilidad de que existan otras instrucciones If-Then-Else. Cuando existe un gran nmero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisin, como puede ser las instruccin Select Case. Esta instruccin no d ms potencia al lenguaje, pero hace que el cdigo sea ms legible y eficiente. La sntaxis de la instruccin Select Case es: Select Case expresi&oacutenDeComparaci&oacuten [Case listaExpresiones] [intrucciones] ... Case Else [intruccionesN] End Select Volvamos al ejemplo anterior pero con la instruccin Select Case: Select Case moneda Case 0 MsgBox "Pesetas" Case 1 MsgBox "D&oacutelar"

Case 2 MsgBox "Franco" End Select Adems, la lista de expresiones de cada clusula Case puede ser mucho ms complicada, refirindose a ms de un valor o rango de valores: Case 1 To 9 valores desde el 1 hasta 3l 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

2. Expresiones Lgicas

Visual Basic incorpora una serie de operadores de comparacin que nos son tiles a la hora de establecer condiciones. =......Igual a <>....Distinto a <.....Menor que >.....Mayor que <=....Menor o igual que >=....Mayor o igual que Adems existen los llamados operadores lgicos, que nos permiten establecer condiciones que dependadan de ms de un criterio de seleccin. Todos los operadores hacen que la expresin en la que se encuentren se evala a verdadero o falso, sin posibilidad de cualquier otro valor. Estas expresiones son: And: exp1 And exp2, donde se evala a verdadero s&oacutelo en el caso que el exp1 como exp2 se evalen a verdadero. En cualquier otro caso se evala a falso. Or: exp1 Or exp2, donde se evala a verdadero cuando alguna de las expresiones exp1 o exp2 se evala a verdadero. Not: Not exp1. aqu se evala a verdadero si exp1 es falso y se evala a falso si exp1 es verdadero. Xor: exp1 Xor exp2, se evala a verdadero slo en el caso de que una y slo una de las expresiones exp1 o exp2 se evala a verdadero. 3. Matiz de Controles Un array o matriz de controles es un grupo de controles que comparten el mismo nombre, tipo y conjunto de procedimientos de evento. El nmero de controles que puede contener un array es indeterminado y depende de los recursos y memoria. La matriz de controles se crea en tiempo de diseo aunque en tiempo de ejecucin se pueden agregar ms controles a la matriz. Para crear una matriz de controles, tienes que crear dos controles del mismo nombre, Visual Basic reconoce est situacin y preguntar si quieres crear una matriz de controles. Cuando se crea una matriz de controles puedes seguir trabajando con cada uno de los controles de forma individual. Para referirte a un control en particular tienes que utilizar la propiedad Index de dicho control. La propiedad se establece con el valor 0 para el primer control y se va incrementando a medida que se van creando los nuevos controles.

Si quieres crear nuevos controles en tiempo de ejecucin tienes que utilizar la instruccin Load. La sntaxis ser la siguiente: Load objeto(ndice) Donde el objeto se refiere al nombre del control original que dio paso al control de la matriz e ndice es el lugar que ocupar en la matriz. De la misma forma se puede eliminar un control en tiempo de ejecucin, pero esta vez usando la instruccin Unlaod. 4. Estructuras de Repeticin Otro tipo de estructuras que pueden modificar la ejecucin de un programa son las estructuras de repeticin o bucles. Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones. Existirn dos tipos de estructuras de repeticin: aquellas en las que se conoce el nmero de repeticiones y aquellas en que dicho nmero se establece durante la ejecucin. La estructura de repeticin For...Next es adecuada cuando conocemos el nmero de veces que debe repetirse un conjunto de instrucciones y deseamos reducir la cantidad de cdigo escrito. La sntaxis es la siguiente: For contador = principio To fin [Strep incremento] [instrucciones] [Exit For] [Instrucciones] Next [contador] Donde el contador es el nombre de una variable que sirve como contador de las veces que se tiene que ejecutar el bucle. A dicha variable se le asigna un valor incial y un valor final en el que una vez superado el bucle no vuelve a repetirse. En el cuerpo del bucle estarn las instrucciones que deben ejecutarse existiendo la posibilidad de introducir Exit For para salir del bucle. Otra estructura de repeticin es Do...Loop. Esta estructura se utiliza cuando desconocemos cuntas veces se ha de ejecutar el bucle. La sntaxis es: Do [While|Until] condicin [instrucciones] [Exit Do] [intrucciones] Loop Si utilizamos While el bucle se repite mientras la condicin se cumpla y si utilizamos Until el bucle se repetir hasta que la condicin d valor verdadero. Con While, la condicin es comprobada al principio del bucle, por lo que si no se cumple al iniciarse, el cuerpo del bucle no se ejecutar. Con Until se comprueba a la salida del bucle, por lo que por lo menos, una vez se ejecutar el bucle.

Captulo Noveno
Fundamentos de Programacin III
1. Tipos de Procedimientos En Visual Basic existen tres tipos de procedimientos: Sub, Function y Property Los procedimientos Function se distinguen de los Sub por que siempre devuelven un valor asociado al nombre del procedimiento. Este valor puede ser usado por el cdigo que lo ha llamado. Los procedimientos Property seiven para crear y manipular propiedades personalizadas de los objetos. 2. Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas, una utilizar la opcin Procedimiento del men Insertar o escribirlo completamente en la ventana de cdigo. En la definicin de un procedimiento Sub puedes diferenciar dos partes: la cabecera u el cuerpo del procedimiento. La cabecera del procedimiento se indica el mbito (si es pblico o privado) del mismo, su tipo (mediante la palabra Sub), su nombre y la lista de parmetros (entre parntesis). La lista de parmetros sirve para poder comunicar el procedimiento con el resto de cdigo de la aplicacin. Para ello se utiliza un parmetro que indique de alguna forma dicha circunstancia. Un parmetro se comporta como una variable en el cuerpo del procedimiento, pudiendo simplemente utilizar su valor o inlcuso modificarlo. Cuando un procedimiento quiere comunicar algn dato a la aplicacin, tiene que utilizar un parmetro para ello, es decir, puede servir bien para comunicar un valor al procedimiento o bien para que ste lo comunique a la aplicacin. 3. Llamar al procedimiento Sub Para llamar a un procedimiento sub lo podemos hacer de dos formas: Call NombreSub (parmetros) O tambin: NombreSub parmetros Los argumentos deben coincidir en la llamada en nmero y tipo con la definicin del procedimiento. Tanto si se especifica en la llamada un nmero distinto de argumentos como si alguno de stos no pueden convertirse al tipo declarado en la definicin del procedimiento, se crear un error de

compilacin. La llamada al procedimiento ser como una instruccin ms del lenguaje, donde se especifica el nombre del procedimiento seguido sin parntesis, de una lnea de argumentos que deber coincidir en nmero y tipo con los parmetros de la definicin y que darn valor a los parmetros para que se ejecute el cuerpo del procedimiento. Una vez se llega a la instruccin End Sub del procedimiento el fujo de ejecucin vuelve a la lnea siguiente a la que ocasion la llamada. 4. Crear procedimientos Function El concepto de procedimiento es vlido para un procedimiento Function, pero la diferencia con los procedimientos Sub siempre tiene que devolver un valor asociado al nombre del mismo. En el cuerpo del procedimiento aparecer una asignacin del valor a devolver con el nombre del procedimiento. El uso de los procedimientos Function suele estar ms restringido que el de los procedimientos Sub. Un procedimiento Function es utilizado cuando necesitamos obtener un nico valor, resultado de un clculo o poceso a realizar. Un procedimiento de este tipo no debera realizar ms de lo que se le pide, ni mostrar mensajes, ni devolver ms valores en los parmetros, etc. La diferencia en la definicin de un procedimiento Sub y un Function comienza en la cabecera. El procedimiento Function tambin puede contener una lista de parmetros, no debe aparecer ninguno que serva para devolver el valor que se calcula, ya que dicho valor tiene que asociarse con el mismo nombre del procedimiento Function. Adems, al tener que devolver un valor asociado al nombre del procedimiento Function, el procedimiento tiene que tener un tipo de datos. Esto se especifica indicano la clusula AS Tipo al final de la cabecera del procedimientos, una vez indicada la lista de parmetros. Si no se especifica ningn tipo de datos, se aplica la misma regla que con las variables, es decir, tendr el tipo Variant. 5. Llamar al procedimiento Function As como la llamada al procedimiento Sub es como una instruccin ms del lenguaje, la llamada al procedimiento Function suele estar situada como parte de una expresin y no como una lnea independiente de su cdigo. Ya que el procedimiento Function devuelve un valor asociado a su nombre, este valor suele asignarse a alguna variable para poder utilizarlo en el cdigo que ha realizado la llamada. La sntaxis ser la siguiente: NombreVarialbe = NombreFunction(ListaParmetros) Si quieres utilizar el valor que devuelve el procedimiento Function, tienes que encerrar la lista de argumentos, en la llamada, con parntesis. Esto no era as en el caso del procedimiento Sub. Visual Basic incorpora un gran nmero de funciones que puedes utilizar en tus aplicaciones, entre ellas cabe destacar MsgBox, InputBox, Date... 6. Paso de Parmetros A la hora de escribir la definicin de un procedimiento Sub o Function puedes especificar cmo se pasan los parmetros de su lista de parmetros: por valor o por referencia Cuando el paso es por valor, se utiliza la palabra clave ByVal antecediendo al nombre del parmetro en la definicin del procedimiento. En este caso el procedimiento recibe una copia del argumento utilizado en la llamada y no el mismo argumento. Si realizas cambios en su valor, estos cambios podrn ser utilizados en el interior del procedimiento, pero no afectar para nada a la variable que acta como argumento en la llamada.

En el paso por referencia no se necesita especificar ninguna palabra clave, aunque tambin puedes hacerlo con la palabra ByRef. En el paso por referencia, el procedimiento estar manejando los propios argumentos utilizados en la llamada, ya que recibe la direcin y no el valor de estos. En este caso cualquier modificacin en el valor que se realice en el interior del procedimiento ser sufrido por la propia variable que acte como argumento de llamada. 7. Ambito de Accin Cuando un proyecto est constituido por distintos mdulos, ya sean de formulario, clase o mdulos generales de Visual Basic, es importante delimitar dnde se pueden utilizar y dnde no, los procedimientos, variables y constantes que tengas definidos o declaradas. El nivel de ocultacin es establecido por el programador al declarar las variables y constantes o al definir procedimientos utilizando las palabras Pulbic y Private. Una declaracin de variables de tipo Public NombreVariable As Tipo, indica que dicha variable puede ser utilizada tanto en el mdulo donde se realiza como en el resto de mdulos de la aplicacin. Si la declaracin fuera del tipo Private NombreVariable As Tipo, dicha variable slo podr ser conocida y por tanto utilizada, en el mismo mdulo donde se declara. El uso de Public y Private tambin se aplica a la declaracin de procedimientos. Un caso especial es cuando se declara una variable dentro de un procedimiento, en estos casos, dichas variables slo pueden ser conocidas por el propio procedimiento, por lo que no es vlida la declaracin Public de estas. Adems, si existe conflicto de nombre, al haber declarado dos variables con el mismo nombre, una a nivel de mdulo y otra a nivel de procedimiento, siempre tiene preferencia la ms local, es decir, la declarada a nivel de procedimiento. Al utilizar Dim en la declaracin de las variables, en lugar de Private o Public, la visibilidad de dichas variables es la que deban tener por defecto: a nivel de mdulo est visible para todos los procedimientos y a nivel de procedimiento slo para ste.

Captulo Dcimo
Efectos Grficos

1. Control Line La incorporacin de elementos grficos a las aplicaciones hacen que tenga una interfaz ms amigable para el usuario. Visual Basic incorpora una serie de controles grficos que permiten la incorporacin de elementos de este tipo a tus formularios. Para agregar lneas a los formularios utilizaremos el control Line:

Este control tiene pocas propiedades, se puede establecer el grosor, mediante la propiedad BorderWidth o el color mediante BorderColor. Tambin se puede cambiar el estilo de la lnea con la propiedad BorderStyle. 2. Control Shape Con el control Shape (Forma), podemos dibujar distintas figuras como crculos, rectgulos, valos... Para agregar figuras a los formularios utilizaremos el control Shape:

La apariencia inicial de un objeto Shape es siempre un rectgulo. Dicha caracterstica se establece a travs de la propiedad Shape. Otra propiedad interesante de este control es el relleno de las figuras que estableceremos con la propiedad FillStyle. Tambin, mediante la propiedad FillColor podrs establecer el color de dicho relleno, el color de los bordes con BorderColor. 3. Arrastrar con el ratn Visual Basic permite que el programador indique cundo y cmo un control puede ser arrastrado con el ratn por la ventana en la que se encuentra. Los controles situados en la ventana podrn darse cuenta que un determinado control puede est siendo

arrastrado por encima de ellos, permitindoles responder de la forma adecuada. Si quieres permitir que el usuario de la aplicacin pueda arrastrar un control en tiempo de ejecucin puedes hacerlo de dos formas: realizar un arrastre automtico o controlar cundo debe empezar dicho arrastre. Esto se controla mediante la propiedad DragMode del objeto que quieres arrastrar. Esta propiedad tiene dos valores: manual y automtico. En el primer caso tienes que controlar cundo debe permitirse arrastrar el control. Normalmente esto depende de alguna circunstancia que ser comprobada cuando se pulse en dicho control, es decir, en el evento MouseDown. Si DragMode se establece a automtico el usuario prodr arrastrar el control sin necesidad de que haya que programar nada ms. En este caso se pierde el control sobre el arrastre, pero es mucho ms sencillo de programar. Otra circunstancia que hay que tener en cuenta a la hora de arrastrar un objeto es el aspecto que tendr el puntero del ratn cuando lo haga. Si no se especifica nada en la propiedad DragIcon, Visual Basic muestra un icono como puntero del ratn, que es el contorno del objeto arrastrado. Normalmente te interesar mostrar un icono distinto indicando la accin de arrastrar el objeto. DragMode y DragIcon son las dos propiedades que tienes que tener en cuenta a la hora de permitir el arrastre de objetos en la aplicacin. Tambin hay que tener en cuenta el evento DragOver, sucede cuando el usuario arrastra un objeto por encima de otro, en este ltimo, es decir el destino, el que reconoce el eveto DragOver. El procedimiento de evento DragOver trabaja con cuatro parmetros: Source X, Y y State. El parmetro Source representa el control que est siendo arrastrado, siendo X e Y la posicin exacta en la que se encuentra. El parmetro State indica si el movimiento del ratn, al realizar el arrastre, es para entrar en el objeto destino o para salir del mismo. Todos esto parmetros estn situados en la cabecera del procedimiento DragOver. Si State tiene un 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 1, el movimiento de arrastre es hacia afuera, es decir, saliendo. Utilizando el valor de ste parmetro podrs decidir qu debe ocurrir. 4. Colocar con el ratn Cuando el usuario de una aplicacin pulsa con el ratn en un objeto y lo mueve, est haciendo un arrastre o drag del objeto. Cuando decide soltar el botn del ratn se dice que est colocando el objeto o que est haciendo un drop. Cuando esto sucede, el evento DragDrop es generado y reconocido por el objeto sobre el que se ha soltado. Existe la posibilidad de que el usuario suelte el ratn sobre otro objeto o que lo haga en una zona del formulario vaca, en este caso es el formulario el que reconoce el evento DragDrop o el objeto sobre el que se ha soltado. El procedimiento DragDrop posee en su cabecera tres parmetros que tienen el mismo significado que en el caso DragOver: Source, X e Y. Debes decidir qu sucede cuando el ususario arrastra un objeto y lo suelta sobre otro. El hecho de soltarlo en una posicin distinta a la que se encontraba no implica absolutamente nada, es decir, el objeto no cambiar de posicin si no lo indicas expresamente a travs de la programacin. Vamos a ver un ejemplo de procedimiento evento DragDrop en el que se indica qu debe ocurrir cuando soltamos el objeto identificado por 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.Width = imgDestino.Width + 150 imgDestino.Height = imgDestino.Height + 150 Source.Visible = False

End If End Sub En este caso aumentars el tamao del control destino hacindolo a travs de sus propiedades Heihgt y Width.

Captulo Decimoprimero
El Administrador de Datos

1. Introduccin Visual Basic puede acceder a distintos tipos de bases de datos. El acceso ms sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basic y que es compartido por Access, es decir, si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic el acceso a la misma ser inmediato. Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISAM (Mtodo Secuencial Indexado), entre las que se incluyen Btrive, dBASE, Foxpro y Paradox. El otro tipo de acceso es a una base de datos compatible con ODCB (Conectividad abierta de bases de datos), en las que es necesario un controlador ODCB para el tipo especfico de base de datos. Si tienes dicho controlador el acceso tambin ser inmediato. 2. Disear la base da datos El MotorJet de Visual Basic es un completo sistema gestor de bases de datos con el que se puede crear y manipular una base de datos. La creacin de una base de datos es un proceso en el cual podemos diferenciar dos partes: El anlisis y el diseo Se realiza el anlisis de la base de datos cuando se piensa en qu se necesita alamacenar para tenerlo disponible en cualquier momento. El diseo es el proceso dependiente del tipo de base de datos que vayamos a utilizar, que casi con toda seguridad ser relacional. Al crear una base de datos relacional tienes que trabajar con tablas, registros, campos, ndices, etc. 3. Conocer el Administrador Visual Basic incorpora el Administrador de datos con el que puedes crear y establecer las propiedades de las tablas que conformen la base de datos. Sin embargo, si tienes Microsofr Access es recomendable utilizarlo en lugar del Administrador de Datos, ya que genera el mismo tipo de base de datos pero con una facilidad y flexibilidad mucho mayor. Para acceder al Administrador de Datos lo haremos mediante la opcin de mismo nombre en el men Complementos.

El administrador de datos nos permite modificar una base de datos ya creada o crear una nueva. Una base de datos creada con el MotorJet est compuesta por un nico archivo con extensin *.MDB. Una base de datos MDB se compone de un conjunto de tablas y de QueryDef. Las tablas son la estructura fundamental de las bases de datos, formadas por distintos campos y sus valores en los registros introducidos. Las QueryDef son instrucciones SQL, que han sido guardadas con un nombre al tener inters en utilizarlas en futuras ocasiones. SQL es un lenguaje que nos permite entre otras cosas extraer resultados de una base de datos. 4. Crear una base de datos Lo primero que tienes que hacer para crear una base de datos es indicar dnde se guardar el archivo y darle un nombre vlido. Una vez hayas creado el archivo de la base de datos, es el momento de ir construyendo las tablas que formarn las misma. Tienes que introducir el nombre de la nueva tabla, los campos que quieres que aparezcan en la aplicacin. Puedes utilazar ms de una tabla para los nombres de los campos.

Debers seleccionar el o los campos que quieras incluir y pasarlos a campos seleccionados.

Captulo Decimosegundo
Acceso a bases de datos
1. El control DATA Con el control Data, podemos acceder a una base de datos, mostrar su informacin, introducir nuevos registros, etc, y todo sin programar ni una sla lnea de cdigo.

Los pasos a seguir para utilizar una base de datos en Visual Basic son: a.- Dibujar el control data y establecer la conexin a la base de datos apropiada. b.- Utilizar otros controles para manejar la informacin. Estos controles son conocidos como controles enlazados, al depender del control data como origen de los datos que muestran. El control data posee varios controles al estilo de un reproductor de vdeo para acceder a los registros anterior, posterior, primero y ltimo. Las propiedades del control data que tienes que establecer para realizar la conexin con la base de datos son: Connect: Indica el tipo de base de datos a la que vamos a acceder. Por omisin es Access. DatabaseName: Indica el archivo de base de datos a la que se quiere acceder indicando la ubicacin exacta del archivo. RecordSource: Permite indicar el conjunto de datos especfico de la base de datos indicada en la anterior propiedad. Normalmente ser el nombre de una tabla de la base de datos o una instruccin SQL. Estableciendo adecuadamente el valor de estas tres propiedades tendremos la conexin con la base de datos que queramos. Si conoces la base de datos y el conjunto de datos a los que quieres tener acceso en tiempo de diseo puedes utilizar la ventana de propiedades para establecer estas propiedades, en caso contrario lo puedes hacer con cdigo escrito. 2. Controles Enlazados Una vez establecida la conexin a la base de datos e indicando el conjunto de datos a los que vamos a tener acceso mediante el control data, es necesario utilizar otros controles para mostrar o introducir dicha informacin.

Estos controles son conocidos como controles enlazados, ya que el origen de la informacin que muestran est&a ligado a un determinado control data. Normalmente se utilizan cuadro de texto, cuadros de lista e incluso controles imagen para mostrar el contenido de la base de datos a la que quieres acceder. Todos estos controles pueden actuar como controles enlazados. Exiten dos propiedades que tienes que modificar para enlazar los controles con el control data: DataSource: Indicaremos el control data que actuar como origen de los datos. DataField: Campo especfico al que se enlaza el control. Por ejemplo: txtNombre.DataSource = datEmpleados txtNombre.DataField = "Nombre" Aqu se indica que se ligue el control txtNombre al campo Nombre de la tabla Empleados que se accede mediante el control data (datEmpleados). Este control deber tener correctamente establecidas las tres propiedades anteriormente citadas. 3. RecordSets Al utilizar un control data y establecer la conexin con la base de datos, ests indicando el conjunto de datos sobre los que quieres tener acceso. En Visual Basic a dicho conjunto de datos se les denomina RecordSet, siendo una propiedad del control data. Existen tres tipos de Recordset: Table, Dynaset y Snapsoht. Dicho tipo se establece mediante la propiedad RecordsetType del control data, que predeterminadamente tiene el valor Dynaset. Un Recordset tipo Dynaset es un conjunto dinmico de registros que representan una determinada tabla o el resultado de una consulta, segn se haya establecido la propiedad RecordSource del control data. Puedes agregar nuevos registros, modificar los campos existentes e incluso eliminar registros y todos estos cambios se reflejan en la base de datos afectada. Un Recordset de tipo Table representa una determinada tabla de base de datos. Al crear un Recordset de este tipo estars representando dicha tabla, cargndose en memoria un solo registro que se corresponde con el registro actual. Toda modificacin que se realice se ver reflejada en la tabla. Finalmente el tipo Snapshot crea una copia esttica del conjunto de datos al que se accede mediante el control data. En este caso no puedes actualizar la base de datos, slo puedes visualizar los datos obtenidos. 4. Modificar la base de datos Si crear un Recordset de tipo Table o Dynaset, podrs modificar la base de datos subyacente sin tener que programar ni una sla lnea de cdigo. Al ejecutar la aplicacin, puedes desplazarte a travs de los registros utilizando el control data, cualquier modificacin que realices se ver reflejada en la base de datos al acceder al nuevo registro. 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 entrar en valor True. 5. Aadir registros Se pueden agregar nuevos registros a la base de datos sin tener que programar para ello. En este caso tienes que situarte en el ltimo registro y moverte al siguiente. Si estableces correctamente la propiedad EOFAction al realizar dicha accin se crear un nuevo registro al que se le puede introducir nueva informacin.

La propiedad EOFAction puede tener tres valores y nos indica lo que debe ocurrir cuando se llega al final de un Recordset del control data: Si EOFAction tiene un valor MoveLast, mantiene el ltimo registro como registro actual sin desplazarse al siguiente registro, que no existe, aunque pulsemos el botn del control data para desplazarnos al prximo registro. Si el valor EOFAction deja el registro actual invalidado (ya que dicho registro todava no existe), y desactivas el botn que nos permite desplazarnos al siguiente tienes que controlar esta situacin mediante cdigo ya que cualquier intento de acceder a la informacin del registro actual producir un error al no ser un registro vlido. Si EOFAction posee el valor AddNew, esntonces cuando te desplaces ms all del ltimo registro, Visual Basic crear un registro nuevo en la base de datos, donde puedes introducir la nueva informacin. El valor AddNew es el que nos permite aadir nuevos registros a la base de datos sin tener que programar para ello. Para crear un nuevo registro tienes que sobrepasar el ltimo registro que tengas en esos momentos, entonces Visual Basic limpiar el valor de los controles enlazados permitindote introducir la informacin del nuevo registro. Cuando te muevas a otro registro se aadir a la base de datos. Al igual que se puede indicar que debe ocurrir cuando se llegue al final de un recordset, tambin podrs hacerlo cuando se llega al principo mediante la propieda BOFAction del control data de la misma forma que EOFAction.

Captulo Decimotercero
Programar con la base de datos
1. Moverse por un RecordSet

El control data nos permite movernos por un recordset de una forma rpida y sencilla a travs de sus botones. Sin embargo en muchas ocasiones tendrs que escribir cdigo en el que es necesario moverse a un determinado registro rpidamente. Para ello es necesario entender que aunque un recordset es una propiedad de control data, tambin tiene carcter de objeto, por lo que sern aplicables otras propiedades y mtodos. La forma de hacerlo ser con la sntaxis estndar: NombreControlData.Recordset.NombrePropiedad NombreControlData.Recordset.NombreMtodo Donde tanto el NombrePropiedad como el NombreMtodo son del recordset u no del control data. Los mtodos que puedes utilizar para desplazarte por un recordset son: MoveFirst: Nos desplazamos al primer registro del recordset. MovePrevious: Nos desplazamos al registro anterior del recordset. MoveNext: Nos desplazamos al siguiente registro del recordset. MoveLast: Nos desplazamos al ltimo registro del recordser. Move fila [,inicio]: Permite desplazarnos un nmero especfico de registro hacia delante o hacia atrs respecto al marcador de inicio. El marcador BOF nos indica que estamos al principio del recordset y el marcador EOF nos indica que estamos al final. Si situas el registro actual en dichos marcadores, no se producir un error pero no podrs acceder a la informacin del registro actual ya que no es un registro vlido. Si se sobrepasa dichos marcadores se producir un error en tiempo de ejecucin. Hay que utilizar las propiedades BOF y EOF para prevenir este tipo de errores. La accin indicada por el valor de las propiedades BOFAction y EOFAction del control data se ejecutan cuando el registro actual se sita en los marcadores BOF y EOF respectivamente. Recuerda que BOFAction y EOFAction son propiedades del control data mientras que BOF y EOF son del recordset. 2. Buscar Registros

Para buscar registros puedes utilizar los mtodos Find cuando trabajes con recordset de tipo Dynaset o Snapshot, o utilizar el mtodo Seek para un recordset de un tipo Table. El mtodo Find presenta cuatro variantes:

FindFirst: Busca el primer registro que cumple determinado criterio. FindLast: Busca el ltimo registro que cumpla un determinado criterio. FindNext: Realiza la bsqueda hacia delante. FindPrevious: Realiza la bsqueda hacia atrs. Vamos a ver el siguiente ejemplo: With.datEmpleados .Recordset.FindFirst "Nombre = ' " & txt.Nombre.Text & "'" If Recordset.NoMatch Then MsgBox "Lo siento no es un nombre de empleado vlido" Exit Sub End If End With Mediante el uso de la estructura With nos evitamos tener que repetir cdigo. As no ser necesario escribir la estructura datEmpleados hasta que lleguemos a End With. En la lnea .Recordset.FindFirst "Nombre = ' " & txt.Nombre.Text & "'" es donde se produce la bsqueda de un determinado registro del recordset. Al utilizar el mtodo FindFirst se est indicando que se efecte la bsqueda del primer registro cuyo valor en el campo Nombre coincide con el valor que se ha introducido en el txtNombre. Con el uso del operador & concatenamos para crear el criterio de bsqueda, si por ejemplo se hubiera introducido el valor Coral en el cuadro de texto, esta lnea quedara de la siguiente forma: datEmpleados.Recordset.FindFirst "Nombre='Coral'" Luego utilizamos el mtodo Nomatch del recordset para comprobar, una vez realizada la bsqueda, si se ha encontrado un registro o no. Si no se ha encontrado el registro, el mtodo nomatch devolver True por lo que se mostrar un menseja mediante el MsgBox y se saldr del procedimiento utilizando el mtodo Exit Sub. 3. Aadir registros

El valor AddNew en la propiedad EOFAction del control data nos permita agregar registros, pero esta forma slo es adecuada cuando estamos accediendo a una nica tabla en el recordset. El objeto recordset contiene el mtodo AddNew que permite la creacin de un registro nuevo en blanco donde puedes asignar los valores a sus campos. Una vez introducida dicha informacin, tendrs que hacer uso del mtodo Update del recordset, con el objetivo de que el nuevo registro se actualice en la tabla. Si no utilizas Update el nuevo registro no se agregar finalmente. El cdigo ser: datEmpleados.Recordset.Update Tienes que tener en cuenta que el hecho de agregar un nuevo registro no implica que ste se convierta en el registro actual del recordset. Si quieres que el nuevo registro sea el registro actual puedes utilizar la propiedad del recordset LastModified. El cdigo ser:

datEmpleados.Recordset.Bookmark = datEmpleados.Recordset.LastModified La propiedad Bookmark se usa para saltar rpidamente al nuevo registro indicado por el marcador LasrModified. Boolmark te permite guardar el puntero del registro actual y colocarse rpidamente en un registro especfico. El cdigo ser: Dim registoActual registroActual = datEmpleados.Recordset.Bookmark Aqu se guarda el registro actual datEmpleados.Recordset.MoveFirst Desplazamos al registro actual datEmpleados.Recordset.Bookmark = registroActual Vuelve al marcador guardado 4. Eliminar Registros

Mediante el mtodo Delete, puedes borrar un registro entero de un recordset. En este caso te tienes que situar en el registro y hacer uso de ste mtodo. Tienes que tener cuidado a la hora de eliminar un registro, ya que el registro actual sigue siendo el registro eliminado, por lo que cualquier intento de acceder a la informacin del registro actual provocar un error de ejecucin. Para evitar ste problema es conveniente desplazarno a un registro vlido una vez hayas utilizado el mtodo. No es necesario el uso de Update para hacer efectiva la eliminacin. Un cdigo de ejemplo sera: If datEmpleados.Recordset.EOF = False datEmpleados.Recordset.Delete If datEmpleados.Recordset.EOF = True Then cmdEliminar.Enabled = True End If datEmpleados.Recordset.MoveLast End If En la primera lnea se comprueba si el recordset est vaco, es decir, si la propieda EOF tiene su valor a True. En el caso de que el recordset no est vaco, se realiza la eliminacin del registro actual, ms tarde se vuelve a comprobar si el recordset est vaco ya que se poda haber borrado el nico registro que contena. Finalmente no movemos al ltimo registro con MoveLast, ya que el registro actual no es vlido al haber sido eliminado. En el caso de no existir ningn registro vlido MoveLast nos situar en el marcador EOF.

Captulo Decimocuarto
Opciones avanzadas base de datos
1. Cuadrcula enlazada a datos En algunas ocasiones desears mostrar ms de un registro a la vez, con sus correspondientes campos. Para ello Visual Basic incorpora un nuevo control llamado Cuadrcula, que se presenta en dos versiones: enlazada y no enlazada Las dos permiten mostrar informacin de forma tabular, es decir, con un conjunto de filas y columnas. La versin enlazada (DBGrid), es ms apropiada cuando deseamos mostrar informacin proveniente de una determinada base de datos. Al utilizar dicho control puedes mostrar en cada una de sus columnas un campo y en cada una de las filas un registro del recordset del que haya sido enlazado. El control Cuadrcula enlazada a datos no aparece en la caja de herramientas estndar ya que es un control personalizado con el siguiente aspecto:

Debers agregarlo manualmente a la caja de herramientas, su nombre es Data Bound Grid. El control cuadrcula enlazada a datos aparece inicialmente con dos filas y dos columnas. Se puede modificar en tiempo de diseo esperar que en tiempo de ejecucin, cuando se enlace con un determinado recordset se ajuste al mismo. El primer conjunto de propiedades interesantes de este control es el que establece su comportamiento en tiempo de ejecucin. Las propiedades AllowAddNes, AllowDelete y AllowUpdate nos indican si en tiempo de ejecucin se va a permitir aadir, eliminar o actualizar respectivamente el registro de la cuadrcula. 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 utilices una cuadrcula es para mostrar un conjunto de registros, que seguramente tendrn ms de un campo. 2. Consultas en SQL Cuando quieras mostrar informacin que provenga de ms de una tabla, no tienes ms remedio que utilizar el lenguaje SQL para establecer la correspondiente consulta en la propiedad RecordSource de un control data. SQL es un lenguaje que pretende ser estndar en el acceso a bases de datos relacionales, de forma que independientemente del origen de la informacin, puedas acceder a ella a travs de instrucciones SQL.

Puedes establecer la propiedad RecordSource del control data en tiempo de ejecucin y darle el valor de una determinada instruccin SQL, de esta forma el usuario puede especificar lo que quiere extraer de la base de datos. Una vez establecida la propiedad RecordSource, tienes que utilizar el mtodo Refresh del control data para crear el objeto recordset, al haber cambiado la propiedad del recordsource. La instruccin que se utiliza para crear consultas de seleccin SQL es SELECT. La sntaxis de esta instruccin es la siguiente: SELECT -columnasFORM -tablas[WHERE -condiciones-] [ORDER BY -columnas-] La instruccin SELECT comienza 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 aparecere la clusula FORM, que identifica las tablas sobre las que se realiza la consulta. Los campos especificados en la clusula SELECT deben pertenecer a las tablas especificadas en FORM. Seguidamente nos encontramos con dos clusulas opcionales como nos indican la presencia de cochetes. La clusula WHERE especifica el criterio que debe cumplir para que un determinado registro aparezca en el resultado de la consulta. Normalmente sern expresiones de comparacin del tipo NombreCampo = Valor o usando ciertas funciones de SQL. La clusula ORDER BY especifica en qu orden aparecern los resultados de una consulta. Tienes que especificar el campo o conjunto de campos por los que se ordenan los registros de la consulta. Tambin puedes indicar si el orden es ascendente o descendente. Vamos a ver un ejemplo: SELECT Nombre FORM Empleados Se especifica que se muestre el campo Nombre de los registros que pertenecen a la tabla Empleados. Si quieres que se muestra ms de un campo, hay que separarlos por comas, y si quieres que se muestren todos los campos de una tabla se puede utilzar el carter *. As, la consulta devolver todos los campos de la tabla Empleados. SELECT Empleados.Nombre, Empleados.[fecha alta] FORM Empleados,TiempoAlta WHERE Empleados.Puesto = TiempoAlta.Puesto En esta caso se est pidiendo que se muestren los campos Nombre y TiempoAlta de los registros situados en la tabla Empleados y cuyo Puesto exista en algn registro de la tabla Puesto. Si se utilizan ms de una tabla de consultas es conveniente indicar el nombre de la tabla en la clusula SELECT junto al nombre del campo que quieres mostrar, por que las dos tablas podran tener el mismo nombre para uno o ms campos. Si el nombre de un campo est compuesto por ms de una palabra, tienes que utilizar corchetes para delimitarlo. Todas las tablas implicadas aparecen en la clusula FORM separadas por comas. La clusula WHERE presenta el criterio de comparacin. 3. Validar el control Data

Cuando se intereactua con el control data en un formulario podemos utilizar alguno de sus eventos para establecer niveles de validacin de los datos que se han introducido o modificado. El evento ms utilizado es validate. Sucede siempre antes de que el registro actual cambie. Veamos un ejemplo: Private Sub datEmpleados_Validate(Action As Integer, Save As Integer) Dim respuesta As Integer If Save = True Then respuesta = MsgBox("Quieres guardar los cambios", vbYesNo) If respuesta = vbNo Then Save = False End If End If End Sub El procedimiento de evento Validate contiene dos parmetros: Action que indica por qu se ha producido el evento y Save que indica se se debe o no modificar la base de datos. As el cdigo utiliza el parmetro Save y permite confirmar, por parte del usuario, que se lleve a cabo la modificacin que se ha realizado. Se se responde No, los cambios no tienen efecto al establecer el valor False del parmetro Save. Tambin se pueden crear reglas de validacin al crear una tabla. As puedes introducir reglas de validacin junto al menseja que debe aparecer si se infringen, reglas de integridad referencial, etc...

Trabajar con Archivos


1. Controles Especializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos 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.

Al cuadro de lista de unidades (figura superior), tienes que darle un tamao adecuado para que se pueda mostrar cualquier unidad que tengas en tu ordenador. En tiempo de diseo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamao de la misma. Este control incluye las unidades de disco duro, disco flexible y Cd-Rom, etc...

El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador. Es conveniente que este control muestre tres o cuatro carpetas o directorios. En tiempo de diseo muestra la carpeta en la que se inicia la apliacin y en la que por defecto se guarda el proyecto.

El cuadro de lista de archivos nos muestra los archivos de un determinado directorio o carpeta. Su propiedad ms interesante es Pattern que nos permite especificar qu tipo de archivos son mostrados en dicho control. Para utilizar esta propiedad se pueden utilizar los comodines * y ? al establecer la propiedad. Estos caracteres tienen el mismo significado que en MS-Dos o Windows para especificar los nombres de los archivos. Si estableces la propiedad Pattern con la cadena *.txt, ests indicando que se muestren slo los archivos que tengan esta extensin. Se pueden mostrar ms de un tipo de archivos separndolos con ;.

2. Conectar los controles En tiempo de diseo, al dibujar los distintos controles del sistema de archivos, estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente. En tiempo de ejecucin el usuario puede cambiar la unidad y el directorio o carpeta y esta situacin no se ver reflejada si no se escribe cdigo. Para que los controles estn sincronizados es necesario conectarlos. El evento predeterminado del control cuadro de lista de unidades es Change. Este evento sucede cuando el usuario despliega la lista de unidades 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.Parh = Drive1.Drive End Sub Para el control cuadro de lista de directorios deberemos hacer algo parecido, el cdigo ser el siguiente: Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub De esta forma tenemos conectados los tres controles de acceso al sistema de archivos. 3. Manejando los errores Cuando se escribe cdigo en tiempo de diseo, Visual Basic puede detectar errores y avisar de ellos. Posteriormente se pueden detectar ms errores en tiempo de compilacin, estos errores son de carcter semntico. Los errores en tiempo de ejecucin son sucesos inesperados que Visual Basic no puede controlar por s mismo. Ante este tipo de errores existe la posibilidad de incorporar un manejador o controlador de errores, que son un conjunto de lneas de cdigo que slo se ejecutan cuando se produce un error que es interceptado por Visual Basic. Se deben de escribir manejadores de errores siempre que se pueda preveer la ocurrencia de un error en tiempo de ejecucin. Alguna de estas situaciones son: - Problemas con las unidades de disco flexible. - Desbordamientos. - Falta de memoria.

- Problemas con la red. - Perifricos. - Errores lgicos (nombre de archivo mal escrito...) La instruccin que nos permite detectar errores en tiempo de ejecucin es On Error. Su sntaxis es: On Error Goto Etiqueta, donde la etiqueta representa el nombre del manejador de error, que tiene que estar situado en el mismo procedimiento que la instruccin On Error. Cuando se produce un error en el procedimiento donde se coloca On Error, Visual Basic dar el control al manejador de errores escrito en dicho procedimiento. El cdigo puede ser: ManejadorError: If Err.Number = 68 Then resp = MsgBox("El dispositivo no est preperado", vbAbortRetryIgnore) Resume ElseIf resp = vbAbort Then Drive1.Drive = Dir1.Ptah Resume Next End If End If La primera lnea es la etiqueta que represena el nombre del manejador. Al producirse un error en tiempo de ejecucin se crea un objeto Err que intercepta dicho error. Este objeto posee la propiedad Number que es el nmero de error interceptado. El cdigo pregunta si dicho error es el 68 y en ese caso presenta un cuadro de dilogo en el que se indica que el dispositivo no est preparado, dando tres opciones: reintenter, cancelar o ignorar. Una vez interceptado el error y ejecutado el cdigo asociado al manejador, es necesario indicar qu sucede una vez se salga del manejador. En este caso depender de lo que elija el usuario. Si quiere reintentar la operacin se ejecutar la instruccin Resume, que vuelve a ejecutar la misma intruccin que provoc el error. Si se anula la operacin se ejecutar Resume Next, que devuelve el control a la siguiente instruccin que provoc el error.

Trabajar con Archivos II


1. Archivos de Texto Vamos a escribir cdigo para cuando el usuario haga click en un archivo de la lista de archivos (captulo 15), su contenido se muestre en un cuadro de texto. El cdigo puede ser el siguiente: Private Sub File1_Click() Dim nuevalinea As String, LTexto As String, Texto As String, Archivo As String

nuevalinea = 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 Text1.Text = Texto Close #1 End Sub Cuando el usuario selecciona un determinado archivo de la lista, su nombre se especifica en la propiedad filename del cuadro de lista de archivos. Tienes que indicar la ruta de acceso completa, por lo cual se concatena el directorio, que se encuentra en la propiedad Path y el carter \ como 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 utilizamos la instruccin Open. La instruccin Open necesita el nombre del archivo que tiene que abrir y el modo en que se va a abrir. En la lnea Open Archivo for Input As #1, el archivo a abrir est situado en la variable Archivo, en modo de lectura, especificado mediante la instruccin Input y su nmero asociado que es el #1. Una vez tenemos abirto el archivo en modo lectura, utilizamos la variable LTexto para ir almacenando cada una de la lneas del archivo de texto. Para ello utilizamos la instruccin Line Input donde se indica el nmero del archivo y la variable en al que se guarda la lnea de texto. Esta instruccin se situa en un bucle Do Until...Loop repitindose hasta que se llega al final del archivo de texto especificado por la condicin EOF(1). En la lnea Text1.Text = Texto, es donde se asocia el contenido del archivo con el cuadro de texto del formulario a travs de su propiedad Text. Finalmente se cierra el archivo mediante la instruccin Close #1.

2. La intruccin FileCopy

La instruccin FileCopy nos permite realizar una copia de un determinado archivo. La sntaxis de esta instruccin es: FileCopy fuente, destino La fuente es el archivo que queremos copiar y el destino es el archivo que ser resultado de la copia. El archivo fuente tiene que estar cerrado antes de utilizar esta instruccin ya que en caso contrario se producir un error en tiempo de ejecucin. Con la instruccin FileCopy puedes copiar cualquier archivo independientemente de su tipo.

Utilizacin de OLE
1. Introduccin Compartir informacin sobre distintas aplicaciones es una de las caractersticas ms potentes que posee Windows. Al compartir informacin, lo que realmente se est haciendo es compartir objetos que son creados por dos o ms aplicaciones Windows distintas. Aqu es donde entra en juego OLE, sentando las bases para crear y compartir objetos entre distintas aplicaciones. Visual Basic acta como nexo entre las aplicaciones Windows al permitir el uso de objetos OLE en sus aplicaciones. Se pueden tener en un mismo formulario de Visual Basic una hoja de clculo de Excel y un documento de Word. Visual Basic puede utilizar los objetos de otras aplicaciones de la misma forma que cualquier otro objeto de Visual Basic. Puede establecer o leer propiedades, utilizar sus mtodos, etc... Esto se denomina Automatizacin OLE. 2. El contenedor OLE Mediante el uso del control contenedor OLE, puedes crear formularios de Visual Basic en los que se incluya informacin proveniente de distintas aplicaciones Windows.

Estos formularios son conocidos como documentos compuestos, en los que la funcionalidad que se necesita no la proporciona la aplicacin creada por Visual Basic, sino que se aprovecha de las aplicaciones que crean los objetos insertados. As, el equipo donde se ejecute la aplicacin Windows como hoja de clculo Excel o procesador de textos como Word no necesitarn programar para conseguir que la aplicacin presente la funcionalidad de dichas aplicaciones, sino que puedes utilizarlas desde tu aplicacin. Al pulsar el control OLE en la caja de herramientas de Visual Basic nos aparecer el siguiente cuadro de dilogo:

En este cuadro nos aparecen los distintos tipos de objetos que podemos insertar en el formulario. Estos objetos provienen de las aplicaciones compatibles con OLE que tengas instaladas en tu equipo. Cuando una aplicacin se instala en un ordenador queda registrada en el Registro de Windows. Este registro es como una base de datos don Windows guarda informacin referente a las aplicaciones que tiene instaladas. Entre otras cosas se guardan los objetos insertables que ofrecen dichas aplicaciones y que despus nos aparecern en el cuadro de dilogo insertar objeto. Se puede insertar en un formulario un objeto utilizando la opcin Cerrar Nuevo o utilizar uno ya existente mediante la opcin cerrar desde archivo. En este ltimo caso tienes que especificar el archivo que posee el objeto a insertar. Si quieres que el objeto insertado aparezca en el formulario como un icono, puedes activar la casilla mostrar como icono del cuadro de dilogo insertar objeto. Puedes indicar que el objeto sea incrustado o vinculado. Al incrustar un objeto se crea una copia y se guarda en la aplicacin Visual Basic, por lo que slo se podr usar en esta. Al vincular un objeto, ste sigue estando almacenado en el archivo original, guardndose en la aplicacin una referencia al mismo y no el objeto en s. 3. Edicin del objeto Cuando insertas un objeto a travs del control contenedor OLE, ests en disposicin de editar el objeto con la aplicacin creadora del mismo. Para ello lo nico que tienes que hacer es doble click sobre el objeto. Al activar el objeto haciendo doble click, la aplicacin servidora es iniciada y el usuario puede interactuar con ella utilizando toda la funcionalidad que presente. En este sentido es importante indicar aplicaciones que permitan que la edicin sea en el propia control contenedor (Edicin Visual), y otras en la que la edicin se produce en una ventana independiente. Para que la edicin del objeto sea en el propio contenedor OLE, es necesario haber incrustado el objeto, ya que toda vinculacin producir que la aplicacin servidora se muestre en una ventana independiente. Por otra parte, si el objeto se representa como un icono en el formulario, tambin se presentar en una ventana independiente la aplicacin servidora. Cuando la aplicacin servidora se muestra en una ventana independiente, no existen problemas para presentar los mens y barras de herramientas de la misma. Pero si el formulario donde has insertado un objeto posee mens o barras de herramientas y la edicin del objeto se produce en el propio contenedor, tienes que negociar dichos elementos, es decir, tienes que indicar como se han de mostrar. Si quieres que los mens de la aplicacin 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. Adems

en el editor de mens puedes especificar en qu posicin deben de mostrarse cuando se edite el objeto en el contenedor OLE. La propiedad NegociatePosition que aparece en el editor de mens, establece la posicin de los elementos del men de nuestro formulario. Puede tener los siguientes valores: - 0: Indica que dicho elemento del men se ver cuando se edite el objeto, mostrndose nicamente el men de la aplicacin servidora. - 1, 2 y 3: Establece donde se mostrar, pudiendo ser a la izquierda, centro o derecha. Independientemente de la propiedad NegocitaPosition del men, es necesario establecer la propiedad NegociateMenu del formulario a True. En otro caso, la negociacin de mens no se llevar a cabo. Toda vinculacin o uso de la opcin Mostrar como Icono implicarn que el objeto se edite en una ventana independiente. 4. Objetos insertables Algunas aplicaciones proporcionan objetos que pueden utilzarse como controles personalizados en Visual Basic. De esta forma se pueden agregar a la caja de herramientas de Visual Basic sin tener que utilizar el control contenerdor OLE. Para esto utilizaremos el el men contextual de la caja de herramientas o elegir Controles personalizados en el men de herramientas.

Activa las casillas de los objetos que utilzas normalmente en tus aplicaciones y ya no ser necesario utilizar el control contenedor OLE, insertando el objeto especfico de una forma directa a travs de los botones de la caja de herramientas que aparecen para ello. Adems es posible que una aplicacin aporte ms de un tipo de objeto insertable. Por ejemplo, Excel permite la insercin de objetos hoja de clculo y grficos. Tienes que tener en cuenta que al utilizar un objeto insertable como control personalizado en la caja de herramientas, slo puedes incrustar un objeto nuevo ya que no tienes la opcin de utilizar un archivo

existente, pero si puedes editarlo en tiempo de ejecucin, aplicando las mismas reglas que en el caso del control contenedor OLE. 5. Automatizacin OLE Una de las caractersticas ms potentes de la utilizacin del estdar OLE es la Automatizacin OLE. Nos permite mediante programacin, integrar varias aplicaciones Windows en una aplicacin creada con Visual Basic. El estndar OLE permite que las aplicaciones acten como servidores OLE o como clientes OLE. Un servidor OLE proporciona objetos que pueden ser utilizados en otras aplicaciones. Un cliente OLE es una aplicacin que utiliza objetos creados en una aplicacin distinta. Al utilizar la automatizacin OLE, puedes utilizar los objetos de otras aplicaciones como si fueran objetos de Visual Basic, estableciendo propiedades y utilizando sus mtodos. El uso del examidor de objetos permite conocer y pedir ayuda sobre los componentes de dichos objetos, facilitando la utilizacin de sus mtodos y propiedades de la forma correcta: Dim x As Object Set x = CreateObject ("Word.Basic") x.ArchivoNuevo x.TamaoFuente 24 x.Insertar "Uso de la Automatizacin OLE" En el ejemplo anterior se puede observar un fragmento de cdigo donde se crea un objeto Word, se utiliza un mtodo para crear un nuevo archivo, se establece la propiedad tamao de fuente a 24 puntos y se inserta texto en el punto de insercin.