Sunteți pe pagina 1din 47

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, NT, 2000 y XP. Este lenguaje ana 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 entorno de desarrollo de Visual Basic son: Barra de herramientas

Permite un acceso rpido a los comandos ms utilizados. 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.

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. Ventana de propiedades

Los objetos tienen 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.

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

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.

Programacin en Visual Basic


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 parntesis 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 escribiste. Para aadir un comentario en una lnea se utiliza el carcter ' (apstrofe). 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 htmlecto de un objeto como el color, tamao, posicin, etc... O el estado del mismo: activo, maximizado, etc... 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 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. Establecer propiedades Cuando insertas objetos en un formulario tienes que establecer algunas propiedades que presenta. Las propiedades son aquellas caractersticas 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 esta propiedad estn disponibles en tiempo de diseo 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. Convencin para nombrar objetos en 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 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 Lnea PREFIJO frm chk cbo cmd dat dir drv fil frm grd dbg hsb img lbl lin

Data-bound combobox Cuadro combinado enlazado a datos dbc

OLE Container PictureBox Shape Text Box Timer Vertical scroll bar Utilizar Mtodos

Contenedor OLE Cuadro de imagen Forma Cuadro de texto Temporizador Barra de desplazamiento vertical

ole pic shp txt tmr vsb

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 sintaxis en este caso debe ser: NombreObjeto.NombreMetodo[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 sintaxis 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. Entender los eventos El conjunto de eventos est predefinido en Visual Basic por lo cual no puedes crear nuevos 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 parametros]) ...instrucciones... End Sub

Trabajar con mens


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 trabaj 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 men 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.

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. 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 representa la tecla del teclado que el usuario puede pulsar para ejecutar la accin. Dicha tecla se corresponde con la letra que sigue al carcter & 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 tecla [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. Eventos de 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. En 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. 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 sintaxis 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. Opciones de 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 ubicaciones exactas 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.

Cuadros de dialogo
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. Cuadros predefinidos La sintaxis completa de la funcin MsgBox es:
MsgBox(mensaje[, botones][, ttulo][, archivoAyuda, contexto])

Los valores que pueden tomar el parmetro botones son: Constante vbOKOnly vbOKCancel Valor 0 1 Descripcin Muestra slo el botn aceptar Botones aceptar y cancelar Botones anular,

vbAbortRetryIgnore 2

reintentar e ignorar vbYesNoCancel vbYesNo vbRetryCancel 3 4 5 Botones s, no y cancelar Botones si y no Botones reintentar y cancelar Muestra el icono de mensaje crtico Icono de interrogacin Icono de exclamacin Icono de mensaje de informacin Cuadro de dilogo modal de la aplicacin

vbCritical vbQuestion vbExclamation vbInformation

16 32 48 64

vbAplicationModal 0

vbSystemModal

Cuadro de 4096 dilogo modal del sistema

El parmetro botones es de valor numrico, y adems de los botones que aparecen en el 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 aplicacin 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 sintaxis correcta es:
InputBox(mensaje [,ttulo][, estndar][, posx][,posy][, archivoAyuda , contexto])

Control Dialogo 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 querer 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 sintaxis: 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

Controles bsicos
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 casitodas 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. 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 Alignment Autosize Caption Enabled Definicin Establece la alineacin del texto de la etiqueta 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

Font

Establece la fuente, tamao y htmlecto del texto

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 Definicin Alineacin 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 carcter que se muestra al realizar una PasswordChar entrada en el objeto. Slo se mostrar dicho carcter ScrollBars TabIndex 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

TabStop

Text

Etiqueta y 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 cuadro de texto, el uso de una etiqueta asociada es la forma ms sencilla de hacerlo. Utiliza el carcter & en la propiedad Caption de la etiqueta asociada y se crear la tecla de acceso para el cuadro de texto. 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 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 despus los controles que queremos que contenga. 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 pulsando Intro, tienes que dejar su propiedad Default a True. Bloquear 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.

Controles bsicos II
Casillas de verificacin Nos dan 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. Botones de opcin Los botones de opcin (OptionButton), tambin permiten presentar opciones al usuario, pero con la particularidad que slo puedes seleccionar una de 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 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 existentes podra implicar la modificacin de partes de la aplicacin que trabajen con dichas opciones, lo que resulta poco deseable. 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 cabe 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 mtodo de sta. El mtodo AddItem se encarga de esto. Para borrar elementos de la lista utilizaremos el mtodo RemoveItem.

Fundamentos de programacin
Variables Una variable es una ubicacin 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 vida 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 declarar 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 contrario, se utiliza la variable para establecer el valor de la propiedad Text del cuadro de texto txtSalida. Si aadimos las siguientes lneas de cdigo:
Variable = 125 txtNumero.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. Tipo 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 almacenar 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 instruccin 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) 2 bytes 4 bytes 4 bytes Tamao

Doble (Double) Moneda (Currency) Cadena de caracteres (String) Byte Boleano (Boolean) Fecha (Date) Objecto (Object) Variant

8 bytes 8 bytes 1 byte por carcter 1 byte 2 bytes 8 bytes 4 bytes 16 bytes + 1 byte por cada carcter

Para declarar las variables debes de usar su nombre en ingls. 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 la instruccin: Const NombreConstante = Expresin, donde la expresin ser un valor literal o un conjunto de palabras que se evalen a un valor vlido. Operadores 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 + * / \ Mod ^ & Resta Multiplicacin Divisin Divisin entera Resto de la divisin entera Exponencial Concatenacin de cadena de caracteres Operacin que realiza Suma / Concatenacin de cadenas de caracteres

Fundamentos de la programacin II
Estructuras de control 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 sintaxis:
If condicin1 Then [instrucciones] [ElseIf condicin2 Then [instrucciones]] ... [Else [instrucciones] End If

Donde los corchetes representan partes opcionales de la instruccin. 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 "Dolar" 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 seleccionada. Una vez conocida la opcin seleccionada, deberemos sacar el mensaje adecuado, para ello necesitamos una estructura de decisin. La instruccin 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 la instruccin Select Case. Esta instruccin no da ms potencia al lenguaje, pero hace que el cdigo sea ms legible y eficiente. La sintaxis de la instruccin Select Case es:
Select Case expresionDeComparacin [Case listaExpresiones] [instrucciones] ... Case Else [instrucciones] End Select

Volvamos al ejemplo anterior pero con la instruccin Select Case:

Select Case moneda Case 0 MsgBox "Pesetas" Case 1 MsgBox "Dolar" 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

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

Matriz 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 sintaxis 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 Unload. 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 sintaxis 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 inicial 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 sintaxis 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.

Fundamentos de la programacin III


Tipos de procedimientos En Visual Basic existen tres tipos de procedimientos: Sub, Function y Property. Los procedimientos Function se distinguen de los Sub porque 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. 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 incluso 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. 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 puede 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 flujo de ejecucin vuelve a la lnea siguiente a la que ocasion la llamada. 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 proceso 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 sirva 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 indicando 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. 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 sintaxis 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... 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 direccin 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. mbito de la 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 Public 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.

Efectos grficos
Control Line La incorporacin de elementos grficos a las aplicaciones hace 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. Control Shape Con el control Shape (Forma), podemos dibujar distintas figuras como crculos, rectngulos, valos... Para agregar figuras a los formularios utilizaremos el control Shape: La apariencia inicial de un objeto Shape es siempre un rectngulo. 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. 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, permitindole 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 podr 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 htmlecto 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 evento 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. 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 usuario 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 Height y Width.

El administrador de datos

Acceso a bases de datos


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 sola lnea de cdigo.

Los pasos a seguir para utilizar una base de datos en Visual Basic son: 1. Dibujar el control data y establecer la conexin a la base de datos apropiada. 2. 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. 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 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. Existen 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. 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. 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 sola 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.

Aadir registros Se pueden agregar nuevo 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, entonces 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 permitindole 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 principio mediante la propiedad BOFAction del control data de la misma forma que EOFAction.

Programar con bases de datos


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 sintaxis 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 recordset. 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 sitas 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. 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.

Veamos un 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 llegamos 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='busqueda'"

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 mensaje mediante el MsgBox y se saldr del procedimiento utilizando el mtodo Exit Sub. 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 La propiedad Bookmark se usa para saltar rpidamente al nuevo registro indicado por el marcador LastModified. Bookmark te permite guardar el puntero del registro actual y colocarse rpidamente en un registro especfico. El cdigo ser:
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

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

Opciones avanzadas de bases de datos


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 htmlecto:

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. 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 sintaxis 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 muestren la consulta como resultado de la misma. Seguidamente aparecer 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 corchetes. 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 especfica 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 ORDER BY Puesto

Se especfica que se muestren 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 utilizar el carcter *. 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, porque 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. Validar el control data Cuando se interacta 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 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 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 mensaje que debe aparecer si se infringen, reglas de integridad referencial, etc...

Trabajar con archivos


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 CdRom, 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 aplicacin 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 ;.

Conectar controles En tiempo de diseo, al dibujar los distintos controles del sistema de archivos, estos muestra 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. 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 sintaxis 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 preparado", vbAbortRetryIgnore) Resume ElseIf resp = vbAbort Then Drive1.Drive = Dir1.Ptah Resume Next End If End If

La primera lnea es la etiqueta que representa 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: reintentar, 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 instruccin 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


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 muestren 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 carcter \ 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 abierto el archivo en modo lectura, utilizamos la variable LTexto para ir almacenando cada una de las 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 sita en un bucle Do Until...Loop repitindole 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.

La instruccin FileCopy La instruccin FileCopy nos permite realizar una copia de un determinado archivo. La sintaxis 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 OLE
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.

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 necesitar 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. 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 muestren 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.

Objetos insertables Algunas aplicaciones proporcionan objetos que pueden utilizarse 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 contenedor OLE. Para esto utilizaremos el men contextual de la caja de herramientas o elegir Controles personalizados en el men de herramientas.

S-ar putea să vă placă și