Está en la página 1de 37

UNFV-FIC Ing.

Carlos Guzmán Ubillús


CURSO: INFORMATICA

PROGRAMACION EN VISUAL BASIC

 Estructuras de Código:
El código que escriba en un proyecto de Visual Basic aparecerá siempre en un módulo.
Un módulo es un archivo de proyecto, pudiendo ser un módulo de formulario, de clase o
de carácter general.

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


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

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


las que se sitúan 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 aplicación.

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


permiten comunicar al procedimiento alguna información que necesite o que sea el
propio procedimiento quien devuelva algún valor.

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


como al resto de objetos que estén dibujados en él. En este tipo de módulos cabe
destacar los procedimientos de evento que se encargan de dar una respuesta
programada a los eventos que ocurren en la aplicación. Si has escrito código para algún
procedimiento de evento, éste aparece en negrita en la lista de procedimiento de la
ventana de código.

El código de carácter general o que puede compartir en más de un proyecto, se sitúa


en un módulo general. El código que aparece en este tipo de módulos no se relaciona
con un objeto determinado, sino que tiene carácter general. En los módulos generales
no se pueden incluir procedimientos de evento como en el caso de los módulos de
formulario.

1
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Es conveniente añadir comentarios a las líneas de código que escribas, de esta forma
podrás entender los programas aunque haga tiempo que los escribiste. Para añadir un
comentario en una línea se utiliza el carácter ' (apóstrofe).

 Objetos en Visual Basic

Un objeto en Visual Basic se caracteriza por tres componentes: propiedades, métodos


y eventos.

Las propiedades son aquellas características o atributos que permiten establecer la


característica de un objeto como el color, tamaño, posición, etc... O el estado del
mismo: activo, maximizado, etc... Existen propiedades que sólo están disponibles en
tiempo de diseño y otras que sólo están disponibles en tiempo de ejecución.

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

Los eventos son las situaciones que se producen y que nos interesan identificar para
establecer algún 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 acción 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 características propias del objeto que
hacen que se distingan de otro objeto.

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


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

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


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

2
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Algunas propiedades de los formularios que se pueden establecer en tiempo de diseño


son:
BorderSytle: Establece el estilo del borde del formulario.
Caption: Establece el texto que aparece en la barra de título del formulario.
ControlBox: Permite mostrar o no el menú de control de las ventanas de Windows.
Enabled: Establece si el formulario puede responder o no a los eventos que generes.
Font: Establece las características de los objetos de texto que se sitúen en el
formulario.
Icon: Cambia el icono que representa el formulario.
Left, Top, Height, Width: Establecen la posición 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 ratón.
Visible: Establece si el formulario se mostrará visible en tiempo de ejecución.
WindowState: Establece el modo en que se carga inicialmente el formulario, normal,
maximizado o minimizado.
Todas esta propiedad están disponibles en tiempo de diseño través de la ventana de
propiedades.
En tiempo de ejecución se puede cambiar o consultar el valor de algunas propiedades
que sólo tienen sentido en el tiempo de desarrollo.

NombreObjeto.NombrePropiedad.

 Convención para nombrar objetos en Visual Basic


OBJETO OBJETO ESPAÑOL PREFIJO
Form Formulario frm
CheckBox Casilla de verificación chk
ComboBox Cuadro combinado cbo
Data-bound Cuadro combinado enlazado a
dbc
combobox datos
Command Button Botón de comando cmd
Data Control de datos dat
Directory list box Cuadro lista de directorios dir
Drive List Box Cuadro lista de unidades drv
File List Box Cuadro lista de archivos fil
Frame Marco frm

3
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Grid Rejilla grd


Data-bound grid Rejilla enlazada a datos dbg
Barra de desplazamiento
Horizontal scrollbar hsb
horizontal
Image Imagen img
Label Etiqueta lbl
Line Linea lin
OLE Container Contenedor OLE ole
PictureBox Cuadro de imagen pic
Shape Forma shp
Text Box Cuadro de texto txt
Timer Temporizador tmr
Barra de desplazamiento
Vertical scroll bar vsb
vertical

 Utilizar Métodos
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 métodos.
Un método es un componente más de del objeto, que puede ser utilizado directamente.
Para ello debes llamar al método e indicarle sobre qué objeto deseas aplicarlo, que
deberá admitirlo.
La sintaxis en este caso debe ser: NombreObjeto.NombreMétodo[par1,...,parn], donde
la lista de parámetros [par1...,parn] es opcional de cada método.
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 evento reconocibles por un objeto está ligado con los procedimientos de
evento. Estos procedimientos son unidades de código que le permiten especificar la

4
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

respuesta que debe dar un objeto ante la ocurrencia de un evento que puede
reconocer.
La definición del procedimiento de evento tiene la siguiente forma:
Private Sub NombreObjeto_NombreEvento([Lista de parámetros])
...instrucciones...
End Sub

CONTROLES BASICOS

 Introducción
Al diseñar una aplicación 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 ejecución de la aplicación.
Los controles son los elementos gráficos que aparecen en los formularios y que sirven
para obtener datos y presentar la salida que produce la aplicación.
Entre los numerosos controles que presenta Visual Basic caben destacar los básicos,
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, métodos y eventos.

 Entrada de datos
Dos controles muy relacionados y que se utilizan en la función de entrada de datos son
las etiquetas y los cuadros de texto.
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que
tienen la particularidad de que el usuario no puede modificar

El control de etiqueta es:

Propiedad Definición
Alignment Establece la alineación del texto de la etiqueta
Si su valor es True, el tamaño de la etiqueta se adapta automáticamente a su
Autosize
contenido
Caption Texto que se visualiza en la etiqueta
Enabled Permite o no interactuar con la etiqueta
Font Establece la fuente, tamaño del texto entre otras cosas

5
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Los cuadros de texto son el control estándar de entrada de datos en Visual Basic.
Permiten al usuario de la aplicación introducir información.

El control del cuadro de texto es:

Propiedad Definición
Alignment Alineación de la información introducida.
Enabled Permite o no que se puedan realizar acciones sobre el cuadro de texto
Font Igual que en el caso de las etiquetas
Multiline Permite introducir más de una línea de texto en el cuadro
Estable el caracter que se muestra al realizar una entrada en el objeto.
PasswordChar
Sólo se mostrará dicho caracter
ScrollBars Muestra barras de desplazamiento
TabIndex Establece el orden de tabulación fijado para el objeto
Indica si al utilizar el tabulador se puede desplazar entre los controles
TabStop
del formulario
Text Texto que se visualiza en el control

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
numérico como alfanumérico (números y letras).
A diferencia de la etiqueta, el tamaño del texto es fijo al no permitir la propiedad
autosize.

 Etiqueta y cuadro de texto


En las ventanas de entrada de datos es muy común tener la combinación 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 rápido a cierto cuado de texto, el uso de una
etiqueta asociada es la forma más 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.

 Control Marco

6
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Se utiliza para estructurar el formulario en varias secciones, agrupando en éstas los


controles para que la lectura sea más 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 actúa como contenedor de otros controles, así que las propiedades Left, Right y
Top de un objeto contenido en un marco se establecen en relación al objeto
contenedor. Al mover un marco también se mueve los controles que contenga, para ello
deberemos crear primero el marco y después los controles que queremos que contenga.

 Botones de comando
El botón 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 botón. También se pueden crear teclas de acceso al botón.

El uso principal de los botones de comando es realizar acciones en la aplicación. Para


poder llevar a cabo las acciones sobre un botón pulsando Intro, tienes que dejar su
propiedad Default a True.

 Bloquear controles
Cuando estén 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 botón y mientras no desbloquees los controles utilizando la misma
opción no se podrán mover ninguno de los controles del formulario activo.
Sin embargo en si abres otro formulario que no tenga los controles bloqueados si se
podrán mover. Si añades más controles a un formulario bloqueado estos quedan
bloqueados automáticamente.

 Casillas de verificación
Nos dan la oportunidad de poder elegir entre distintas opciones.
Las casillas de verificación (CheckBox), permiten establecer opciones que no son
excluyentes entre sí, es decir, puedes seleccionar una o más de una.

7
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Una casilla de verificación puede estar activada (cheked), o desactivada (unchecked).


Además 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 más utilizado en este tipo de objetos es el momento en el que se pulsa en la
casilla. En esta situación el usuario quiere indicar que desea activar o desactivar la
casilla, dependiendo del valor que tenga en ese momento.

 Botones de opción
Los botones de opción (OptionButton), también permiten presentar opciones al usuario,
pero con la particularidad que sólo puedes seleccionar una de dichas opciones al mismo
tiempo.

Si quieres que en un mismo formulario se pueda seleccionar más de un botón de opción,


tienes que crear distintos conjuntos de botones de opción.
El botón de opción sólo 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
opción sólo cuando el número de opciones posibles sea fijo a lo largo de la vida de la
aplicación. En caso contrario, la inclusión de una opción o modificación de alguna de las
existentes podría implicar la modificación de partes de la aplicación que trabajen con
dichas opciones, lo que resulta poco deseable.

 Cuadro de lista
Otra forma de presentar las opciones es a través de una lista donde se sitúan dichas
opciones.
De forma predeterminada, las opciones que contiene un cuadro de lista (ListBox), se
presentan verticalmente en una columna, aunque también puede establecerse más 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 número de elementos existentes en la lista en todo momento.
Todas estas propiedades son utilizadas en tiempo de ejecución cuando se interactúa
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 método de ésta. El
método AdItem se encarga de esto.
Para borrar elementos de la lista utilizaremos el método RemoveItem.

8
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

FUNDAMENTOS DE PROGRAMACION

 Variables
Una variable es una ubicación temporal de memoria donde se almacenan datos que
interesan retener durante la ejecución de la aplicación.
Las variables pueden contener texto, valores numéricos, fechas o propiedades de
cierto objeto. Es una forma de dar nombre a una porción de datos con la que deseamos
trabajar en nuestro programa.
Las variables se caracterizan por un nombre que las identifica y por un tipo de datos,
que establece el conjunto de valores posibles que pueden contener y operaciones en las
que puede participar. El valor de una variable puede cambiar a lo largo de la vida de
ésta.
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 través de su tipo de datos.
Para establecer la declaración de una variable antes de ser utilizada en el código,
puedes hacerlo en la ficha entorno del cuadro de diálogo opciones.
Al activar la casilla Declaración de las variables requerida, Visual Basic introduce la
instrucción Option Explicit en la sección de declaraciones de cada módulo nuevo que se
cree, no de los ya existentes donde tienes que introducirlos manualmente. Esta
instrucción obliga a declarar las variables antes de utilizarlas, lo que es muy
recomendable.
El uso de las variables puede hacer que la aplicación sea más rápida, 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 código cada vez que
quieras llamarla. Es más rápido el acceso a las variables que a una propiedad de un
objeto, por lo que también 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 través de la instrucción Dim. En la línea se


declara la variable de nombre Variable y al mismo tiempo Visual Basic guarda espacio
en memoria para poder utilizarla.
En la segunda línea ya se utiliza la variable. En este caso sirve para guardar el valor

9
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad


Text).
En la tercera línea se hace justo lo contrario, se utiliza la variable Variable para
establecer el valor de la propiedad Text del cuado de texto txtSalida.
Si añadimos las siguientes líneas de código:

Variable = 125
txtNúmero.Text = Variable

Hemos establecido una variable de valor numérico. Sin embargo en las anteriores
líneas se había establecido un valor de texto ya que la propiedad Text es de ese tipo
de datos. En la última línea se vuelve a utilizar la variable como origen de la propiedad
Text del cuadro de texto txtNúmero.

 Tipo de datos
El tipo de datos de una variable establece el número 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 representación
en memoria, ocupando distinto espacio físico.
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 instrucción como
Dim NombreVariable, se especifica implícitamente 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 disminución de la velocidad. Vamos a ver los
siguientes tipos de variables:
Tipo de datos Tamaño
Entero (Integer) 2 bytes
Entero Largo (Long) 4 bytes
Simple (Single) 4 bytes
Doble (Double) 8 bytes
Moneda (Currency) 8 bytes
Cadena de caracteres 1 byte por carácter

10
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

(String)
Byte 1 byte
Boleano (Boolean) 2 bytes
Fecha (Date) 8 bytes
Objecto (Object) 4 bytes
16 bytes + 1 byte por cada
Variant
caracter
Para declarar las variables debes de usar su nombre en inglés.

 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 aplicación. Para utilizar una constante hay que declararla previamente. La
forma de declararla es a través de de la instrucción: Const NombreConstante =
Expresión, donde la expresión será un valor literal o un conjunto de palabras que se
evalúen a un valor válido.

 Operadores
En Visual Basic existe un gran número de operadores que se pueden utilizar para crear
fórmulas.
Los operadores más utilizados en una aplicación de Visual Basic son los siguientes:
Operador Operación que realiza
+ Suma / Concatenación de cadenas de caracteres
- Resta
* Multiplicación
/ División
\ División entera
Mod Resto de la división entera
^ Exponenciación
& Concatenación de cadena de caracteres

Visual Basic incorpora estructuras de control que permiten controlar el flujo de la


ejecución de un programa.

11
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Si no existen esta estructures el código se ejecutará de arriba hacia abajo y de


derecha a izquierda según lo hayas escrito.
Entre las estructuras de control cabe citar las estructuras de decisión y las
estructuras de repetición.
La instrucción If-Then-Else, es la estructura clásica de decisión y presenta la
siguiente sintaxis:

If condici&oacuten1 Then
[instrucciones]
[ElseIf condición2 Then
[instrucciones]]
...
[Else
[instruccionesN]
End If

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


posible que existan más de una cláusula ElseIf en la misma instrucción If-Then-Else,
por ello los puntos suspensivos.
Si la condición 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 cláusula
ElseIf condición se cumpla. Si finalmente no se cumple ninguna de las condiciones se
ejecutaría el bloque de instrucciones N correspondiente a la cláusula Else.
La condición es una expresión, es decir, un conjunto de palabras que se evalúan a
verdadero o falso sin posibilidad de poder tener otro valor. Se dice que una condición
se cumple cuando se evalúa a verdadero y que fracasa en caso contrario. Las
condiciones también se conocen como expresiones lógicas.

Vamos a ver un ejemplo:

12
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

El código sería:

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
opción del cuadro de lista lstMoneda está seleccionado.
Una vez conocida la opción seleccionada, deberemos sacar el mensaje adecuado, para
ello necesitamos una estructura de decisión.
La instrucción de la cláusula Else, sólo se ejecuta cuando el resto de condiciones han
fracasado. Cualquiera de los bloques de instrucción puede contener un número
arbitrario de instrucciones, incluida la posibilidad de que existan otras instrucciones
If-Then-Else.
Cuando existe un gran número de instrucciones a evaluar es aconsejable utilizar otra
estructura de decisión, como puede ser las instrucción Select Case.
Esta instrucción no da más potencia al lenguaje, pero hace que el código sea más
legible y eficiente. La síntaxis de la instrucción Select Case es:

Select Case expresi&oacutenDeComparación


[Case listaExpresiones]

13
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

[intrucciones]
...
Case Else
[intruccionesN]
End Select
Volvamos al ejemplo anterior pero con la instrucción Select Case:
Select Case moneda
Case 0
MsgBox "Pesetas"
Case 1
MsgBox "D&oacutelar"
Case 2
MsgBox "Franco"
End Select

Además, la lista de expresiones de cada cláusula Case puede ser mucho más
complicada, refiriéndose a más 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 Lógicas
Visual Basic incorpora una serie de operadores de comparación 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

Además existen los llamados operadores lógicos, que nos permiten establecer
condiciones que dependan de más de un criterio de selección.
Todos los operadores hacen que la expresión en la que se encuentren se evalúa a
verdadero o falso, sin posibilidad de cualquier otro valor.
Estas expresiones son:

14
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

And: exp1 And exp2, donde se evalúa a verdadero sólo en el caso que el exp1 como
exp2 se evalúen a verdadero. En cualquier otro caso se evalúa a falso.
Or: exp1 Or exp2, donde se evalúa a verdadero cuando alguna de las expresiones exp1
o exp2 se evalúa a verdadero.
Not: Not exp1. aquí se evalúa a verdadero si exp1 es falso y se evalúa a falso si exp1
es verdadero.
Xor: exp1 Xor exp2, se evalúa a verdadero sólo en el caso de que una y sólo una de las
expresiones exp1 o exp2 se evalúa 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 número 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 diseño aunque en tiempo de ejecución se
pueden agregar más controles a la matriz.
Para crear una matriz de controles, tienes que crear dos controles del mismo nombre,
Visual Basic reconoce está situación 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 ejecución tienes que
utilizar la instrucción 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 ejecución, pero esta vez
usando la instrucción Unload.

 Estructuras de repetición
Otro tipo de estructuras que pueden modificar la ejecución de un programa son las
estructuras de repetición o bucles. Estas estructuras sirven para repetir una y otra
vez un conjunto de instrucciones.
Existirán dos tipos de estructuras de repetición: aquellas en las que se conoce el
número de repeticiones y aquellas en que dicho número se establece durante la
ejecución.

15
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

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


veces que debe repetirse un conjunto de instrucciones y deseamos reducir la cantidad
de código 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 incial y un
valor final en el que una vez superado el bucle no vuelve a repetirse. En el cuerpo del
bucle estarán las instrucciones que deben ejecutarse existiendo la posibilidad de
introducir Exit For para salir del bucle. Otra estructura de repetición es Do...Loop.
Esta estructura se utiliza cuando desconocemos cuántas veces se ha de ejecutar el
bucle. La sintaxis es:

Do [While|Until] condición
[instrucciones]
[Exit Do]
[intrucciones]
Loop

Si utilizamos While el bucle se repite mientras la condición se cumpla y si utilizamos


Until el bucle se repetirá hasta que la condición dé valor verdadero.
Con While, la condición 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.

 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 código que lo
ha llamado. Los procedimientos Property sirven para crear y manipular propiedades
personalizadas de los objetos.

16
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

 Crear procedimientos Sub


Para crear un procedimiento tienes dos alternativas, una utilizar la opción
Procedimiento del menú Insertar o escribirlo completamente en la ventana de código.
En la definición 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
público o privado) del mismo, su tipo (mediante la palabra Sub), su nombre y la lista de
parámetros (entre paréntesis).
La lista de parámetros sirve para poder comunicar el procedimiento con el resto de
código de la aplicación. Para ello se utiliza un parámetro que indique de alguna forma
dicha circunstancia. Un parámetro se comporta como una variable en el cuerpo del
procedimiento, pudiendo simplemente utilizar su valor o incluso modificarlo.
Cuando un procedimiento quiere comunicar algún dato a la aplicación, tiene que utilizar
un parámetro para ello, es decir, puede servir bien para comunicar un valor al
procedimiento o bien para que éste lo comunique a la aplicación.

 Llamar al procedimiento Sub


Para llamar a un procedimiento sub lo podemos hacer de dos formas:

Call NombreSub (parámetros)


O también:
NombreSub parámetros

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

La llamada al procedimiento será como una instrucción más del lenguaje, donde se
especifica el nombre del procedimiento seguido sin paréntesis, de una línea de
argumentos que deberá coincidir en número y tipo con los parámetros de la definición
y que darán valor a los parámetros para que se ejecute el cuerpo del procedimiento.
Una vez se llega a la instrucción End Sub del procedimiento el flujo de ejecución
vuelve a la línea siguiente a la que ocasionó la llamada.

 Crear procedimientos Function


El concepto de procedimiento es válido para un procedimiento Function, pero la
diferencia con los procedimientos Sub siempre tiene que devolver un valor asociado al
nombre del mismo.

17
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

En el cuerpo del procedimiento aparecerá una asignación del valor a devolver con el
nombre del procedimiento. El uso de los procedimientos Function suele estar más
restringido que el de los procedimientos Sub.
Un procedimiento Function es utilizado cuando necesitamos obtener un único valor,
resultado de un cálculo o proceso a realizar. Un procedimiento de este tipo no debería
realizar más de lo que se le pide, ni mostrar mensajes, ni devolver más valores en los
parámetros, etc.
La diferencia en la definición de un procedimiento Sub y un Function comienza en la
cabecera. El procedimiento Function también puede contener una lista de parámetros,
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.
Además, al tener que devolver un valor asociado al nombre del procedimiento Function,
el procedimiento tiene que tener un tipo de datos. Esto se especifica indicando la
cláusula AS Tipo al final de la cabecera del procedimientos, una vez indicada la lista de
parámetros. Si no se especifica ningún 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 instrucción más del lenguaje, la
llamada al procedimiento Function suele estar situada como parte de una expresión y
no como una línea independiente de su código.
Ya que el procedimiento Function devuelve un valor asociado a su nombre, este valor
suele asignarse a alguna variable para poder utilizarlo en el código que ha realizado la
llamada. La sintaxis será la siguiente:

NombreVariable = NombreFunction(ListaParámetros)

Si quieres utilizar el valor que devuelve el procedimiento Function, tienes que encerrar
la lista de argumentos, en la llamada, con paréntesis. Esto no era así en el caso del
procedimiento Sub.
Visual Basic incorpora un gran número de funciones que puedes utilizar en tus
aplicaciones, entre ellas cabe destacar MsgBox, InputBox, Date...

 Paso de parámetros
A la hora de escribir la definición de un procedimiento Sub o Function puedes
especificar cómo se pasan los parámetros de su lista de parámetros: por valor o por
referencia. Cuando el paso es por valor, se utiliza la palabra clave ByVal antecediendo
al nombre del parámetro en la definición del procedimiento. En este caso el
procedimiento recibe una copia del argumento utilizado en la llamada y no el mismo

18
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

argumento. Si realizas cambios en su valor, estos cambios podrán ser utilizados en el


interior del procedimiento, pero no afectará para nada a la variable que actúa como
argumento en la llamada.
En el paso por referencia no se necesita especificar ninguna palabra clave, aunque
también 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 dirección y no el valor de estos. En este caso
cualquier modificación en el valor que se realice en el interior del procedimiento será
sufrido por la propia variable que actúe como argumento de llamada.

 Ambito de la acción
Cuando un proyecto esté constituido por distintos módulos, ya sean de formulario,
clase o módulos generales de Visual Basic, es importante delimitar dónde se pueden
utilizar y dónde no, los procedimientos, variables y constantes que tengas definidos o
declaradas.
El nivel de ocultación es establecido por el programador al declarar las variables y
constantes o al definir procedimientos utilizando las palabras Pulbic y Private.
Una declaración de variables de tipo Public NombreVariable As Tipo, indica que dicha
variable puede ser utilizada tanto en el módulo donde se realiza como en el resto de
módulos de la aplicación.
Si la declaración fuera del tipo Private NombreVariable As Tipo, dicha variable sólo
podrá ser conocida y por tanto utilizada, en el mismo módulo donde se declara.
El uso de Public y Private también se aplica a la declaración de procedimientos. Un caso
especial es cuando se declara una variable dentro de un procedimiento, en estos casos,
dichas variables sólo pueden ser conocidas por el propio procedimiento, por lo que no
es válida la declaración Public de estas.
Además, si existe conflicto de nombre, al haber declarado dos variables con el mismo
nombre, una a nivel de módulo y otra a nivel de procedimiento, siempre tiene
preferencia la más local, es decir, la declarada a nivel de procedimiento.
Al utilizar Dim en la declaración de las variables, en lugar de Private o Public, la
visibilidad de dichas variables es la que deban tener por defecto: a nivel de módulo
está visible para todos los procedimientos y a nivel de procedimiento sólo para éste.

EFECTOS GRAFICOS

 Control Line
La incorporación de elementos gráficos a las aplicaciones hacen que tenga una interfaz
más amigable para el usuario. Visual Basic incorpora una serie de controles gráficos

19
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

que permiten la incorporación de elementos de este tipo a tus formularios. Para


agregar líneas 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. También se puede cambiar el
estilo de la línea con la propiedad BorderStyle.

 Control Shape
Con el control Shape (Forma), podemos dibujar distintas figuras como círculos,
rectágulos, óvalos...
Para agregar figuras a los formularios utilizaremos el control Shape: La apariencia
inicial de un objeto Shape es siempre un rectágulo. Dicha característica se establece a
través de la propiedad Shape.
Otra propiedad interesante de este control es el relleno de las figuras que
estableceremos con la propiedad FillStyle.
También, mediante la propiedad FillColor podrás establecer el color de dicho relleno,
el color de los bordes con BorderColor.

 Arrastrar con el raton


Visual Basic permite que el programador indique cuándo y cómo un control puede ser
arrastrado con el ratón por la ventana en la que se encuentra. Los controles situados
en la ventana podrán darse cuenta que un determinado control puede está siendo
arrastrado por encima de ellos, permitiéndoles responder de la forma adecuada. Si
quieres permitir que el usuario de la aplicación pueda arrastrar un control en tiempo de
ejecución puedes hacerlo de dos formas: realizar un arrastre automático o controlar
cuándo debe empezar dicho arrastre. Esto se controla mediante la propiedad
DragMode del objeto que quieres arrastrar. Esta propiedad tiene dos valores: manual
y automático. En el primer caso tienes que controlar cuándo 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 automático el usuario podrá arrastrar el control sin
necesidad de que haya que programar nada más. En este caso se pierde el control
sobre el arrastre, pero es mucho más sencillo de programar. Otra circunstancia que
hay que tener en cuenta a la hora de arrastrar un objeto es el lugar que tendrá el
puntero del ratón cuando lo haga. Si no se especifica nada en la propiedad DragIcon,
Visual Basic muestra un icono como puntero del ratón, que es el contorno del objeto
arrastrado. Normalmente te interesará mostrar un icono distinto indicando la acción
de arrastrar el objeto.

20
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

DragMode y DragIcon son las dos propiedades que tienes que tener en cuenta a la hora
de permitir el arrastre de objetos en la aplicación. También 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 parámetros: Source X, Y y State. El
parámetro Source representa el control que está siendo arrastrado, siendo X e Y la
posición exacta en la que se encuentra.
El parámetro State indica si el movimiento del ratón, al realizar el arrastre, es para
entrar en el objeto destino o para salir del mismo. Todos esto parámetros están
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 parámetro podrás decidir qué debe ocurrir.

 Colocar con el raton


Cuando el usuario de una aplicación pulsa con el ratón en un objeto y lo mueve, está
haciendo un arrastre o drag del objeto. Cuando decide soltar el botón del ratón se dice
que está colocando el objeto o que está haciendo un drop. 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 ratón sobre otro objeto o que lo haga
en una zona del formulario vacía, 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 parámetros 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 posición distinta a la que se encontraba no implica
absolutamente nada, es decir, el objeto no cambiará de posición si no lo indicas
expresamente a través de la programación. 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

21
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

End If
End Sub

En este caso aumentarás el tamaño del control destino haciéndolo a través de sus
propiedades Heihgt y Width.

TRABAJAR CON MENUS

 Editor de menús
Al usar menús se evita ocupar mucho espacio en las ventanas, ya que estos sólo
aparecen cuando se despliegan explícitamente. Además, se pueden crear hasta cinco
niveles de menús, por lo que el número de comandos y posibilidades es suficientemente
amplio.
En Visual Basic se trabajo con el editor de menús para crear, establecer propiedades y
modificar los menús. Para acceder a él basta con pulsar el siguiente botón en la barra
de herramientas:

Este botón sólo estará activo cuando esté abierto el formulario, ya que el menú
siempre está asociado con un determinado formulario. El editor de menús presenta las
siguientes propiedades que se pueden aplicar sobre los menús:
Caption: Representa es texto que aparecerá en el menú.
Name: Es el nombre del control. Se puede anteponer el prefijo mnu más el texto del
título del menú. Checked: Establece si debe aparecer una marca de verificación a la
izquierda del texto del objeto del menú. La marca la puedes utilizar cuando deseas
informar de la opción 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.

22
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

 Elementos del menu

Utilizando los botones de sangría se puede determinar el nivel del objeto menú que
quieras seleccionar. Así, los títulos de menú se sitúan en el nivel superior, mostrándose
en la lista inferior del editor de menús, lo más a la izquierda posible.
En muchas aplicaciones se pueden ver unas barras horizontales en los menús
desplegables que realizan la función de dividir en secciones dichos menús. Este
elemento es conocido como un separador, y sirve para separar aquellos comandos del
menú que tengan un motivo en común. Para crear un separador, basta con introducir un
guión (-) en la propiedad Caption. No se puede crear un elemento en un nivel inferior
inmediatamente después de un separador, es decir, no puedes tener como título de
menú un separador.

 Teclas de método abreviado


Al introducir el carácter & 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 acción. Dicha tecla se corresponde
con la letra que sigue al carácter & en la propiedad Caption del objeto menú.
Si se trata de un título de menú tienes que usar la tecla de acceso en combinación con
la tecla [Alt.]. Una vez abierto un título de menú y desplegado sus elementos, para
acceder rápidamente a 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 funcionarán. El editor de menú también

23
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

admite la incorporación de teclas de método 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 método abreviado tienes que utilizar la propiedad Shortcut, a
la que puedes acceder al crear el menú desde el editor de menús.

 Eventos de menú
Cuando en tiempo de diseño seleccionamos la opción 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 título del menú, el procedimiento click tiene como acción
predeterminada la de mostrar los elementos de menú del nivel inferior, por lo que no
será necesario tener que programar esta acción. Esto también se puede aplicar a los
elementos de un menú que son a su vez títulos de submenús.
En casi todos los casos tienes que utilizar una opción del menú para descargar el
formulario o para finalizar la aplicación. La opción de texto salir suele ser el más
apropiado. La instrucción 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.

 Menus contextuales
Estos menús aparecen cuando hacemos click con el botón secundario del ratón, y suele
presentar opciones que se corresponden con las acciones más usuales de la aplicación.
Este menú puede aparecer en cualquier ventana de la aplicación a diferencia de los
menús 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 método PopupMenu del formulario donde lo estés
creando. La sintaxis es la siguiente:

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

Donde los corchetes especifican parámetros opcionales. Si no se especifica el objeto


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

 Opciones de menu contextual

24
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

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. Además puedes indicar las ubicación exacta del
menú contextual. En el ejemplo anterior de llamada al PopuMenu, los indicadores se
encargan de definir la ubicación respecto a las coordenadas X e Y también
introducidas y el comportamiento del menú contextual. Los valores que puede tomar
este parámetro respecto a la posición del menú son:
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 sitúa en X.
Los valores que puede tomar respecto al comportamiento a seguir son:
vbPopupMenuLeftButton (valor 0): Los elementos del menú contextual sólo reaccionan
a los click del ratón cuando se use el botón primario del ratón. Este es el valor
predeterminado.
vbPopupMenuRightButton (valor 2): Los elementos del menú contextual reaccionan a
los click del ratón cuando se use el botón primario o secundario.

CUADROS DE DIALOGO

 Introducción
La mayoría de las aplicaciones Windows hacen uso de los cuadros de diálogo para
establecer las opciones o introducir información que necesitan para realizar una acción
indicada por el usuario.
Otro uso posible de los cuadros de diálogo es presentar información al usuario. Los
cuadros de diálogo se caracterizan por ser modales y no permitir poder cambiar el
tamaño de la ventana, además no deberán tener una barra de menús desplegables.
En Visual Basic podemos crear tres tipos de cuadros de diálogos: personalizados,
predefinidos y diálogo común.

 Cuadros predefinidos
La síntaxis completa de la función MsgBox es:
MsgBox(mensaje[, botones][, título][, archivoAyuda, contexto])
Los valores que pueden tomar el parámetro botones son:
Constante Valor Descipción
Muestra sólo el
vbOKOnly 0
botón aceptar

25
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Botones
vbOKCancel 1 aceptar y
cancelar
Botones anular,
vbAbortRetryIgnore 2 reintentar e
ignorar
Botones si, no y
vbYesNoCancel 3
cancelar
vbYesNo 4 Botones si y no
Botones
vbRetryCancel 5 reintentar y
cancelar
Muestra el
vbCritical 16 icono de
mensaje crítico
Icono de
vbQuestion 32
interrogación
Icono de
vbExclamation 48
exclamación
Icono de
vbInformation 64 mensaje de
información
Cuadro de
vbAplicationModal 0 diálogo modal
de la aplicación
Cuadro de
vbSystemModal 4096 diálogo modal
del sistema

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


le cuadro de diálogo, también puede indicar el icono que acompañe al mensaje y el tipo
de diálogo modal que es.
Cuando un cuadro de diálogo es modal de aplicación tienes que cerrarlo para
interactuar con otra ventana de la misma aplicación. Cuando es un cuadro de diálogo
modal del sistema, todas las aplicaciones que estén ejecutándose se suspenden hasta

26
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

que el usuario responda al cuadro de diálogo.


El cuadro InputBox se consigue a través de la función InputBox. Se utiliza cuando se
necesita que el usuario introduzca alguna información. La sintaxis correcta es:

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

 Control Dialogo Comun


En el objeto diálogo común lo podemos encontrar en la barra de herramientas de Visual
Basic:

Nos permite mostrar cinco cuadros de diálogo estándar en las aplicaciones. Estos
cuadros de diálogo son:
Abrir
Guardar Como
Imprimir
Fuente
Color
También podemos hacer uso del control diálogo para llamar al motor de Ayuda de
Windows de forma que pueda presentar el archivo de ayuda en línea de la aplicación.
Al crear un objeto diálogo común, se sitúa en una posición y un tamaño estándar. En el
caso de querer utilizar el cuadro de diálogo común Guardar como:
DialogTitle: Es el texto que debe aparecer en la barra de título del cuadro de diálogo.
DefaultExt: Es la extensión con la que se guardará el archivo.
Filter: Indica la extensión de los archivos que deben mostrarse en el cuadro de
diálogo.
En el caso de la propiedad Filter se puede indicar que muestre más de un tipo de
archivos. Para esto se utiliza la sintaxis:
Archivos de Texto|*.txt|Base de datos|*.mdb

Con el ejemplo anterior nos aparecerán todos los archivos de texto(*.txt) y los de base de
datos(*.mdb).

27
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Los métodos disponibles para los cuadros de diálogo son:


ShowOpen: Abrir.
ShowSave: Guardar como.
ShowColor: Cuadro de diálogo 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

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.

28
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Al cuadro de lista de unidades (figura superior), tienes que darle un tamaño adecuado
para que se pueda mostrar cualquier unidad que tengas en tu ordenador. En tiempo de
diseño se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar
el control al tamaño 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 diseño muestra la carpeta en la que se inicia la aplicación 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 más 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, estás indicando que se
muestren sólo los archivos que tengan esta extensión. Se pueden mostrar más de un
tipo de archivos separándolos con ;.

 Conectar controles
En tiempo de diseño, 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

29
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

anteriormente. En tiempo de ejecución el usuario puede cambiar la unidad y el


directorio o carpeta y esta situación no se verá reflejada si no se escribe código. Para
que los controles estén 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 código
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 código en tiempo de diseño, Visual Basic puede detectar errores y
avisar de ellos. Posteriormente se pueden detectar más errores en tiempo de
compilación, estos errores son de carácter semántico. Los errores en tiempo de
ejecución 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 líneas de código que sólo 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 ejecución. Alguna de estas situaciones son:

- Problemas con las unidades de disco flexible.


- Desbordamientos.
- Falta de memoria.
- Problemas con la red.
- Periféricos.
- Errores lógicos (nombre de archivo mal escrito...)

30
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

La instrucción que nos permite detectar errores en tiempo de ejecución 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
instrucción 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 código 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 línea es la etiqueta que representa el nombre del manejador. Al producirse


un error en tiempo de ejecución se crea un objeto Err que intercepta dicho error.
Este objeto posee la propiedad Number que es el número de error interceptado. El
código pregunta si dicho error es el 68 y en ese caso presenta un cuadro de diálogo 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 código 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 operación se
ejecutará la instrucción Resume, que vuelve a ejecutar la misma instrucción que
provocó el error. Si se anula la operación se ejecutará Resume Next, que devuelve el
control a la siguiente instrucción que provocó el error.

 Archivos de texto
Vamos a escribir código para cuando el usuario haga click en un archivo de la lista de
archivos (capítulo 15), su contenido se muestre en un cuadro de texto. El código 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

31
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

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 carácter \ 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 instrucción
Open. La instrucción Open necesita el nombre del archivo que tiene que abrir y el modo
en que se va a abrir. En la línea Open Archivo for Input As #1, el archivo a abrir está
situado en la variable Archivo, en modo de lectura, especificado mediante la
instrucción Input y su número asociado que es el #1.
Una vez tenemos abierto el archivo en modo lectura, utilizamos la variable LTexto para
ir almacenando cada una de la líneas del archivo de texto. Para ello utilizamos la
instrucción Line Input donde se indica el número del archivo y la variable en al que se
guarda la línea de texto.
Esta instrucción se sitúa en un bucle Do Until...Loop repitiéndose hasta que se llega al
final del archivo de texto especificado por la condición EOF(1).
En la línea Text1.Text = Texto, es donde se asocia el contenido del archivo con el
cuadro de texto del formulario a través de su propiedad Text. Finalmente se cierra el
archivo mediante la instrucción Close #1.

32
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

 La instruccion FileCopy
La instrucción FileCopy nos permite realizar una copia de un determinado archivo.
La sintaxis de esta instrucción 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 instrucción ya que en
caso contrario se producirá un error en tiempo de ejecución. Con la instrucción
FileCopy puedes copiar cualquier archivo independientemente de su tipo.

UTILIZACION DE OLE

 Introducción
Compartir información sobre distintas aplicaciones es una de las características más
potentes que posee Windows. Al compartir información, lo que realmente se está
haciendo es compartir objetos que son creados por dos o más aplicaciones Windows
distintas. Aquí es donde entra en juego OLE, sentando las bases para crear y
compartir objetos entre distintas aplicaciones.

33
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Visual Basic actúa 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 cálculo 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
métodos, etc... Esto se denomina Automatización OLE.

 El contenedor OLE
Mediante el uso del control contenedor OLE, puedes crear formularios de Visual Basic en los que se
incluya información proveniente de distintas aplicaciones Windows.

Estos formularios son conocidos como documentos compuestos, en los que la


funcionalidad que se necesita no la proporciona la aplicación creada por Visual Basic,
sino que se aprovecha de las aplicaciones que crean los objetos insertados.
Así, el equipo donde se ejecute la aplicación Windows como hoja de cálculo Excel o procesador de
textos como Word no necesitarán programar para conseguir que la aplicación presente la
funcionalidad de dichas aplicaciones, sino que puedes utilizarlas desde tu aplicación.
Al pulsar el control OLE en la caja de herramientas de Visual Basic nos aparecerá el siguiente
cuadro de diálogo:

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 aplicación se instala en un ordenador queda registrada en el Registro de
Windows. Este registro es como una base de datos don Windows guarda información
referente a las aplicaciones que tiene instaladas. Entre otras cosas se guardan los
objetos insertables que ofrecen dichas aplicaciones y que después nos aparecerán en
el cuadro de diálogo insertar objeto.

34
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

Se puede insertar en un formulario un objeto utilizando la opción Cerrar Nuevo o


utilizar uno ya existente mediante la opción 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 diálogo insertar objeto.
Puedes indicar que el objeto sea incrustado o vinculado. Al incrustar un objeto se crea
una copia y se guarda en la aplicación Visual Basic, por lo que sólo se podrá usar en
esta. Al vincular un objeto, éste sigue estando almacenado en el archivo original,
guardándose en la aplicación una referencia al mismo y no el objeto en sí.

 Edición del objeto


Cuando insertas un objeto a través del control contenedor OLE, estás en disposición
de editar el objeto con la aplicación 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 aplicación 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 edición sea en
el propia control contenedor (Edición Visual), y otras en la que la edición se produce en
una ventana independiente.
Para que la edición del objeto sea en el propio contenedor OLE, es necesario haber
incrustado el objeto, ya que toda vinculación producirá que la aplicación servidora se
muestre en una ventana independiente. Por otra parte, si el objeto se representa como
un icono en el formulario, también se presentará en una ventana independiente la
aplicación servidora.
Cuando la aplicación servidora se muestra en una ventana independiente, no existen
problemas para presentar los menús y barras de herramientas de la misma. Pero si el
formulario donde has insertado un objeto posee menús o barras de herramientas y la
edición 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 menús de la aplicación servidora se muestren al editar el objeto, es
necesario que el formulario donde está insertado el objeto posea un elemento de menú,
aunque esté no visible. Además en el editor de menús puedes especificar en qué
posición deben de mostrarse cuando se edite el objeto en el contenedor OLE.
La propiedad NegociatePosition que aparece en el editor de menús, establece la
posición 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,
mostrándose únicamente el menú de la aplicación servidora.

35
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

- 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
negociación de menús no se llevará a cabo.
Toda vinculación o uso de la opción Mostrar como Icono implicarán que el objeto se
edite en una ventana independiente.

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

Activa las casillas de los objetos que utilizas normalmente en tus aplicaciones y ya no
será necesario utilizar el control contenedor OLE, insertando el objeto específico de
una forma directa a través de los botones de la caja de herramientas que aparecen
para ello.
Además es posible que una aplicación aporte más de un tipo de objeto insertable. Por
ejemplo, Excel permite la inserción de objetos hoja de cálculo y gráficos. Tienes que
tener en cuenta que al utilizar un objeto insertable como control personalizado en la
caja de herramientas, sólo puedes incrustar un objeto nuevo ya que no tienes la opción

36
UNFV-FIC Ing. Carlos Guzmán Ubillús
CURSO: INFORMATICA

de utilizar un archivo existente, pero si puedes editarlo en tiempo de ejecución,


aplicando las mismas reglas que en el caso del control contenedor OLE.

 Automatización OLE
Una de las características más potentes de la utilización del estándar OLE es la
Automatización OLE.
Nos permite mediante programación, integrar varias aplicaciones Windows en una
aplicación creada con Visual Basic. El estándar OLE permite que las aplicaciones actúen
como servidores OLE o como clientes OLE. Un servidor OLE proporciona objetos que
pueden ser utilizados en otras aplicaciones. Un cliente OLE es una aplicación que utiliza
objetos creados en una aplicación distinta.
Al utilizar la automatización OLE, puedes utilizar los objetos de otras aplicaciones
como si fueran objetos de Visual Basic, estableciendo propiedades y utilizando sus
métodos.
El uso del examidor de objetos permite conocer y pedir ayuda sobre los componentes
de dichos objetos, facilitando la utilización de sus métodos y propiedades de la forma
correcta:

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

En el ejemplo anterior se puede observar un fragmento de código donde se crea un


objeto Word, se utiliza un método para crear un nuevo archivo, se establece la
propiedad tamaño de fuente a 24 puntos y se inserta texto en el punto de inserción.

37

También podría gustarte