Está en la página 1de 120

Visual Basic: guía del estudiante

Descargada de ww.alucardwarez.net
Visual Basic: guía del estudiante

(Adaptados al programa de la Asignatura de Desarrollo en Entornos Gráficos del Módulo


de Desarrollo de Aplicaciones Informáticas 2º Curso)

Este libro, Visual Basic - Guía del Estudiante se ofrece a todos los estudiantes de habla
hispana como texto de libre difusión para fines educativos. Prohibida la copia total o parcial
con fines comerciales.

Madrid, Julio de 1998

Visual Basic - Guía del Estudiante Cap. 1

INTRODUCCION Antecedentes históricos.

___________________________________

El lenguaje de programación BASIC (Beginner's All purpose Symbolic Instruction Code )


nació en el año 1964 como una herramienta destinado a principiantes, buscando una forma
sencilla de realizar programas, empleando un lenguaje casi igual al usado en la vida
ordinaria ( en inglés), y con instrucciones muy sencillas y escasas. Teniendo en cuenta el
año de su nacimiento, este lenguaje cubría casi todas las necesidades para la ejecución de
programas. Téngase en cuenta que las máquinas existentes en aquella época estaban
estrenando los transistores como elementos de conmutación, los ciclos de trabajo llegaban a
la impensable cifra de 10.000 por segundo y la memoria no pasaba de unos pocos k´s en
toroides de ferrita.

La evolución del BASIC por los años 70 fue escasa, dado el auge que tomaron en aquella
época lenguajes de alto nivel como el FORTRAN y el COBOL. En 1978 se definió una
norma para unificar los Basics existentes creándose la normativa BASIC STANDARD

Con la aparición de los primeros ordenadores personales, dedicados comercialmente al


usuario particular, allá por la primera mitad de los ochenta, el BASIC resurgió como
lenguaje de programación pensado para principiantes, y muchos de estos pequeños
ordenadores domésticos lo usaban como único sistema operativo (Sinclair, Spectrum,
Amstrad)

Con la popularización del PC, salieron varias versiones del BASIC que funcionaban en este
tipo de ordenadores (Versiones BASICA, GW-BASIC), pero todas estas versiones del
BASIC no hicieron otra cosa que terminar de rematar este lenguaje. Los programadores
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
profesionales no llegaron a utilizarlo, habida cuenta de las desventajas de este lenguaje
respecto a otras herramientas (PASCAL, C, CLIPPER). El BASIC con estas versiones para
PC llegó incluso a perder crédito entre los profesionales de la informática.

Las razones para ello eran obvias:

- No era un lenguaje estructurado.

- No existían herramientas de compilación fiables.

- No disponía de herramientas de intercambio de información.

- No tenía librerías.

- No se podía acceder al interior de la máquina.

- Un largo etcétera de desventajas respecto a otros lenguajes de programación.

Tal fue ese abandono por parte de los usuarios, que la aparición del Quick-BASIC de
Microsoft, una versión ya potente del BASIC, que corregía casi todos los defectos de las
versiones pasó prácticamente inadvertida, a no ser porque las últimas versiones del sistema
operativo MS-DOS incluían una versión de Quick-BASIC algo recortada (Q-Basic) como
un producto mas dentro de la amplia gama de ficheros ejecutables que acompañan al
sistema operativo, y aprovecha de él el editor de textos (Cada vez que se llama al EDIT
estamos corriendo el editor del Q-Basic).

Esta versión del popular BASIC ya es un lenguaje estructurado, lo que permite crear
programas modularmente, mediante subrutinas y módulos, capaz de crear programas ya
competitivos con otros lenguajes de alto nivel. Sin embargo llegaba tarde, pues los entornos
MS-DOS estaban ya superados por el entorno gráfico Windows.

Sin embargo algo había en el BASIC que tentaba a superarse: su gran sencillez de manejo.
Si a esto se le añade el entorno gráfico Windows, el aprovechamiento al máximo de las
posibilidades de Windows en cuanto a intercambio de información, de sus librerías, de sus
drivers y controladores, manejo de bases de datos, etc. el producto resultante puede ser algo
que satisfaga todas las necesidades de programación en el entorno Windows. La suma de
todas estas cosas es VISUAL - BASIC. Esta herramienta conserva del BASIC de los años
80 únicamente su nombre y su sencillez, y tras su lanzamiento al mercado, la aceptación a
nivel profesional hizo borrar por fin el "mal nombre" asociado a la palabra BASIC.

Actualmente se está comercializando la versión 5.0 de este producto. Desde su salida al


mercado, cada versión supera y mejora la anterior. Dados los buenos resultados a nivel
profesional de este producto, y el apoyo prestado por el fabricante para la formación de
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
programadores, Visual-Basic se ha convertido en la primera herramienta de desarrollo de
aplicaciones en entorno Windows.

Es obligado decir sin embargo, que sigue siendo BASIC. No se pueden comparar sus
prestaciones con otros lenguajes cuando deseamos llegar al fondo de la máquina y controlar
uno a uno sus registros. No es ese el fin perseguido con VB y si es necesario llegar a esas
precisiones será necesario utilizar otro lenguaje que permita bajar el nivel de programación.
(Visual-C). o realizar librerías (DLLs) que lo hagan. En la mayor parte de las aplicaciones,
las herramientas aportadas por VB son mas que suficiente para lograr un programa fácil de
realizar y de altas prestaciones.

Características Generales de Visual-Basic

Visual-Basic es una herramienta de diseño de aplicaciones para Windows, en la que estas


se desarrollan en una gran parte a partir del diseño de una interface gráfica. En una
aplicación Visual - Basic, el programa está formado por una parte de código puro, y otras
partes asociadas a los objetos que forman la interface gráfica.

Es por tanto un termino medio entre la programación tradicional, formada por una sucesión
lineal de código estructurado, y la programación orientada a objetos. Combina ambas
tendencias. Ya que no podemos decir que VB pertenezca por completo a uno de esos dos
tipos de programación, debemos inventar una palabra que la defina : PROGRAMACION
VISUAL.

La creación de un programa bajo Visual Basic lleva los siguientes pasos:

- Creación de un interface de usuario. Este interface será la principal vía de comunicación


hombre máquina, tanto para salida de datos como para entrada. Será necesario partir de una
ventana - Formulario - a la que le iremos añadiendo los controles necesarios.

- Definición de las propiedades de los controles - Objetos - que hayamos colocado en ese
formulario. Estas propiedades determinarán la forma estática de los controles, es decir,
como son los controles y para qué sirven.

- Generación del código asociado a los eventos que ocurran a estos objetos. A la respuesta a
estos eventos (click, doble click, una tecla pulsada, etc.) le llamamos Procedimiento, y
deberá generarse de acuerdo a las necesidades del programa.

- Generación del código del programa. Un programa puede hacerse solamente con la
programación de los distintos procedimientos que acompañan a cada objeto. Sin embargo,
VB ofrece la posibilidad de establecer un código de programa separado de estos eventos.
Este código puede introducirse en unos bloques llamados Módulos, en otros bloques
llamados Funciones, y otros llamados Procedimientos. Estos Procedimientos no responden
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
a un evento acaecido a un objeto, sino que responden a un evento producido durante la
ejecución del programa.

No es necesario entender de momento lo anterior. Visual Basic introduce un concepto


nuevo de programación, y es necesario cambiar hasta el argot del programador.
Posiblemente se le habrán acumulado demasiados términos de una sola vez. Es normal. A
poco que siga leyendo verá las cosas mas claras cuando se explique una por una.

VARIABLES. DEFINICION Y ENTORNO

Basic, desde siempre, al contrario de otros sistemas de programación, no exigió la


definición previa de una variable. Una variable, como Vd. seguro que conoce, es un nombre
que en el programa le asignamos a un dato. Ese dato podrá cambiar. Piense por ejemplo, en
un programa consistente en la toma de datos de los alumnos de un centro escolar. Existirán
varias variables para poder introducir los datos de los alumnos. Estas variables pueden tener
nombre tales como:

Nombre

Apellido1

Apellido2

Dirección

Teléfono

DNI

La variable Nombre tomará valores distintos según vayamos introduciendo los datos de los
distintos alumnos. Es posible, que a lo largo de la ejecución del programa, esta variable
Nombre valga:

José

Pedro

María

Luis

Espero que su intuición o conocimiento anterior le lleve a conocer el concepto de variable.


Mas adelante lo verá mas claro.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Decíamos que Basic no exige la definición previa de las variables. Otras herramientas
exigen que se haga así. Por lo tanto es normal encontrar, en otros sistemas de
programación, que un programa comienza de la siguiente forma:

Declare Nombre As String Le dice que Nombre es una sucesión de letras

Declare Apellido1 As String

Declare Apellido2 As String

Declare Dirección As String

Declare Teléfono As String Le dice que Teléfono es una sucesión de letras

Declare DNI As Número Le dice que DNI es un número

Mediante estas declaraciones, el programa sabe de que tipo de dato se trata y por tanto
cómo debe trabajar con él. En otros sistemas de programación distintos de Basic, es
necesario realizar esta declaración antes de introducir una variable.

Basic permite que no se declaren. Cuando a lo largo del programa le introducimos una
variable nueva, asume que es una variable y que el tipo es el adecuado para el valor que le
estamos introduciendo en ese momento.

Por ejemplo, si Basic encuentra estas instrucciones

DNI=50000000

Nombre ="Pedro"

Teléfono = "1234567"

entiende que DNI, Nombre y Teléfono son variables, que DNI es un número (No hemos
metido su valor entre comillas), y que Nombre y Teléfono son sucesiones de caracteres
alfanuméricos (su valor está entre comillas)

Esta particularidad de no necesitar declarar las variables hace que sea sencillo introducir
una variable nueva. Sin embargo entraña un gran peligro. Imagínese que en un paso
posterior del programa, le mandamos escribir esos tres datos anteriores con la instrucción
PRINT

Print DNI

Print Nombre
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Print Telwfono

Habrá observado en tercer lugar la palabra Telwfono, que por error ha introducido el
programador. Basic interpreta que Telwfono es una variable e irá a leer en memoria el valor
que tiene. No tendrá ningún valor. Por lo tanto no escribirá nada y encima no dará ningún
aviso de que se ha cometido un error. Nada es gratis en esta vida, y la facilidad para
introducir variables se paga con la posibilidad de un error.

Basic ha pensado en ese problema, y se puede solucionar con esta que será la primera
instrucción BASIC que vamos a estudiar:

OPTION EXPLICIT

Obliga a declarar previamente las variables que se vayan a usar. De no haberla declarado
antes de usarla, el programa dará una comunicación de error.

TIPOS DE VARIABLES

Las variables pueden ser de los siguientes tipos: (El número indicado en segundo lugar
indica el número de Bytes que ocupa en memoria.)

Booleana (2) Admite los valores 0 y 1, o True (verdadero) y False (falso)

Byte (1) Números enteros, en el rango de 0 a 255

Integer (2) Números enteros en el rango de -32768 a 32767

Long (4) Números enteros en el rango de -2147483648 a 2147483647

Single (4) Punto flotante, simple precisión

Doble (8) Punto flotante, doble precisión.

Currency (8) Entero, con punto decimal fijo (Típico de monedas)

String (*) Cadenas alfanuméricas de longitud variable o fija

Date (8) Fechas

Objet (4) Referencia a objetos

Variant (**) Otros tipos de datos


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
(*) Una variable tipo String ocupa el mismo número de bytes que caracteres tenga la
cadena.

(**) Una variable tipo Variant ocupa 16 bytes si se trata de un número y 22 bytes +
longitud de la cadena si se trata de un dato tipo cadena de caracteres.

Existen también variables definidas por el usuario (Ya verá la sentencia Type). En este tipo
de variables se pueden introducir muchos datos de distinto tipo. Los bytes necesarios para
almacenar esa variable dependerá de los datos que se hayan definido.

Dentro de las variables Objet (variables que se refieren a objetos) existe una gran variedad
que a estas alturas del curso no debemos complicarnos con ellas. Pero para adelantar algo,
veremos que una variable puede ser del tipo Form - Formulario - , tipo Picture, etc. etc.

Cada tipo de variable ocupa unos determinados bytes. Si no se define una variable, VB
toma como tipo por defecto para la variable el tipo Variant. Este tipo ocupa mas bytes que,
por ejemplo, un integer. Si el tipo de dato que vamos a introducir en una variable es un
integer, y no la hemos declarado como tal, VB asumirá para esa variable que es del tipo
Variant, lo que le llevará a gastar mas bytes de memoria (16) que los que necesitaría (2) si
la hubiésemos declarado previamente. Si esa variable va a estar en el rango de 0 a 255, y no
declaramos previamente que la variable va a se del tipo Byte, o la declaramos como integer,
p. e., estamos desperdiciando memoria RAM y posiblemente, retardando la ejecución del
programa. Lo mismo podemos decir del resto de las variables, y lo importante que es
definirlas y definirlas bien.

NOTA. Observe en la lista anterior que un dato Booleano ocupa 2 Bytes, mientras que un
dato tipo Byte ocupa un byte. En muchas ocasiones declaramos variables tipo Boolean con
la intención de que ocupen menos espacio. Paradoja del VB. Si la declaramos como Byte
ocupamos menos espacio en memoria. Declarar una variable como Boolean tiene también
sus ventajas (escribirá menos código por lo general cuando necesite leer o escribir una
variable tipo Boolean), pero tenga presente esta observación respecto a los datos Boolean.

Puede declarar el tipo de la variable mediante un carácter después del nombre de la


variable. Esta técnica, obligatoria en Quick-Basic, está en desuso en VB. No es
recomendable definir el tipo de esta forma, pues existe un serio peligro de error. De
cualquier forma, eso es potestativo del programador y de sus costumbres.

Los caracteres que definen cada tipo de variable son:

% Integer & Long ! Single

# Double @ Currency $ String

Ejemplos Prácticos de declaración de variables


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
En Visual Basic, cuando declaramos una variable como String (Cadena de caracteres), no
es necesario declarar su longitud. VB aceptará cualquier número de caracteres. Si desea
evitar que se puedan introducir más de un determinado número de caracteres, debe declarar
su número. Por ejemplo :

Dim Var1 as String Var1 puede tener cualquier número de caracteres

Dim Var2 as String * 15 Var2 puede tener un máximo de 15 caracteres.

En este segundo caso, si se introduce como Var2 una cadena de caracteres con mas de 15
caracteres, Var2 tomará solamente los 15 primeros. Visual basic no presenta ningún aviso
de que esa variable ha omitido los caracteres que han sobrepasado la cifra de 15. Si desea
que el usuario conozca esa circunstancia, debe introducir el código oportuno para producir
el aviso.

La declaración de variables tipo String con número de caracteres predefinido presenta


también inconvenientes a la hora de tratar esa cadena de caracteres con sentencias tales
como Mid, Left y Right, o a la hora de añadir una cadena a otra. La experiencia nos indica
que NO merece la pena declarar variables tipo String con el número de caracteres
prefijado.

En una gran parte de los casos una variable que se compone de números debe declararse
como una variable de cadena de caracteres (String), y no como numérica. Cuando
pensamos por ejemplo en un número de DNI, compuesto por 7 u 8 cifras, un código postal,
el número de una calle, el piso de un edificio, parecen invitar a que la variable que los
contenga sea una variable de tipo numérico (Byte, Integer, Long, ...). Estas variables,
aunque su contenido sean números, siempre se deben declarar como String, ya que se tratan
en realidad de cadenas de caracteres, aunque estos sean números. Para aclarar mas estas
ideas, piense en el número del DNI con la letra del NIF incluido, o que el lugar del DNI se
deba rellenar con el número del permiso de residencia, (lleva letras). Piense en el código
postal de una provincia que comienza por 0 ( 08XXX = Barcelona ) . Si la variable que va a
contener ese código postal se declara como numérica, el cero de la izquierda lo desprecia,
por lo que ese código postal quedaría reducido al 8XXX, número de 4 cifras que el cartero
nunca reconocería como un código postal, que necesariamente ha de tener 5 cifras. Para
terminar, piense la forma de introducir en una variable numérica el número 32Bis de una
calle o el piso S2 de un edificio. O piense en una variable que va a contener un código de
un producto. Ese código siempre va a ser un número, por ejemplo de 9 cifras. ¿Ha pensado
como trataría el ordenador una variable numérica que contiene el código 000100123 ?. El
resultado sería que convertiría ese código en la cifra 100123, y Vd. deberá buscarse la vida
para añadir los ceros iniciales a la hora de sacarlo a una impresora, por ejemplo.

En todos los casos anteriores, el número no representa una cantidad numérica, sino un
nombre. Lo que ocurre es que ese nombre contiene solamente números.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
¿Qué variables debemos declarar entonces como numéricas ? La respuesta es bien sencilla :
Aquellas que van a contener datos con lo que vamos a realizar operaciones matemáticas.

Las variables booleanas (True/False) pueden en muchos casos sustituirse por una variable
del tipo Byte. Si ese datos True / False se va a introducir en una base de datos o en fichero
en el disco, puede ser mas prudente poner 0 en vez de False y 1 en vez de True.

Una variable byte ocupa muy poco, simplemente 1 byte como su nombre indica. Pero no
puede contener números mayores de 255 ni números negativos.

Cada vez que declare una variable numérica piense en los valores que puede tener, sobre
todo cuando esa variable va a ser el resultado de una operación matemática. Recuerde el
escaso margen de una variable tipo Integer ( de -32768 a 32767)

Si la aplicación va a tratar moneda, piense en la forma de expresar los números decimales y


el número de ellos permitidos, así como el redondeo. La variable correcta para este caso es
Currency, pero Currency le añade automáticamente el tipo de moneda de cada país (Pts.
Para España) lo que con frecuencia es un engorro. Los datos del tipo de moneda los toma
del sistema operativo del ordenador, por lo que no se extrañe si le expresa el número de
pesetas en dólares. Cambie el país en su S. O.

Ambito de las variables.

Denominamos ámbito de una variable a las partes del programa donde esa variable está
declarada. Para entenderlo mejor, veamos someramente la forma de un programa
desarrollado en VB.

Un programa VB tiene uno o varios formularios. Cada formulario tiene varios controles.
Tanto el formulario como cada uno de sus controles tienen una parte del programa,
justamente la parte relacionada con cada uno de los eventos que pueden suceder bien al
formulario o a los controles. A estas partes las habíamos llamado Procedimientos. Podemos
tener procedimientos que no estén relacionados con ningún evento ocurrido al formulario o
a sus controles. (Los Procedimientos que iremos insertando a lo largo de la aplicación)

Aparte de formularios y controles, un programa puede tener Módulos, y en cada uno de los
módulos podemos insertar cuantos Procedimientos y Funciones queramos. La estructura de
un programa VB puede ser de la siguiente forma:

Formulario1 Formulario2 Formulario3 Módulo1 Modulo2

Declaraciones Declaraciones Declaraciones Declaraciones Declaraciones

Proc. A1 Proc.B1 Proc.C1 Proc.D1 Proc.E1


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Proc. A2 Proc.B2 Proc.C2 Proc.D2 Proc.E2

Proc. A3 Proc.B3 Proc.C3 Proc.D3 FunciónE1

Proc. A4 Proc.B4 Proc.C4 Proc.D4 FunciónE2

Proc. A5 Proc.BB1 Proc.CC1 FunciónE3

Proc. AA1 Proc.BB2 Proc.CC2 FunciónE4

Proc. AA2 Proc.B33 Proc.CC3 FunciónE5

Proc. AA3 Proc.CC4 FunciónE6

Si se declara una variable dentro de un procedimiento o Función, esa variable "NO SALE"
del Procedimiento o Función donde se declaró. El procedimiento puede estar en un
Formulario (Cualquier procedimiento de un control o un procedimiento creado por
nosotros) o en un Módulo (En este caso, el procedimiento solo puede ser creado por
nosotros)

En un Formulario, una variable puede declararse de dos formas : Privada o Pública. Para
declarar una variable a nivel de formulario debe hacerse en la sección de declaraciones, que
está la ventana de código Objeto = General, Proc. = Declaraciones. Si se declara Privada,
esa variable se puede mover por todo el formulario, (es decir, por todos los procedimientos
de todos los controles del formulario y por los Procedimientos que pudiésemos insertar en
ese formulario), pero no sale de dicho formulario. Si se declara como Pública, esa variable
puede moverse por todo el formulario, de la misma forma que lo haría declarada como
Privada, y además puede ser usada desde otro Formulario o Módulo, citándola con el
nombre del Formulario, seguido del nombre de la variable (Formulario.Variable)

En un Módulo una variable puede declararse como Privada, con lo que no saldrá de ese
Módulo, o Pública, pudiendo en este caso usarse en todo el programa. Cuando se declara
una variable como pública en un Módulo, basta referirse a ella por su nombre, sin citar el
nombre del Módulo donde se declaró.

En VB es posible declarar varias veces las variables, es decir, pueden declararse a nivel de
formulario, en su apartado de declaraciones, y esa variable conservará su valor en todas las
partes de ese formulario. Sin embargo, si se declara una variable con el mismo nombre a un
nivel inferior, por ejemplo al principio de un procedimiento, esa variable será una variable
distinta a la anterior, aunque tenga el mismo nombre, a al declararla en un Procedimiento,
solamente será válida en ese Procedimiento. Una vez que hayamos salido de ese
procedimiento, la variable con ese nombre volverá a ser la declarada en el Formulario. En
realidad, lo que tenemos son dos variables distintas, pero con el mismo nombre, una
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
declarada para todo el formulario excepto para el procedimiento donde se volvió a declarar,
y otra para ese procedimiento concreto.

NOTA.- No es recomendable declarar una variable a dos niveles. Es mucho mejor utilizar
otro nombre para esa variable dentro del procedimiento donde se le declararía por segunda
vez. A esta nota cabe exceptuar cuando declaramos variables para una operación tipo
contador

For I = 1 To N

Esa variable I es práctico declararla con el mismo nombre en cada Procedimiento donde se
use.

Tipos de declaración de variables.

Sentencia DIM Es la forma mas común de declarar una variable como

Privada. Puede emplearse en un Procedimiento, Función, Formulario o Módulo. La sintaxis


es de la siguiente forma:

Dim nombrevariable As Integer(o el tipo que sea)

Declarando una variable con la sentencia DIM, en un formulario, Función, procedimiento


o módulo, el entorno de la variable será el explicado anteriormente para una variable
declarada como Privada. Es decir, esa variable no sale del formulario, procedimiento ó
módulo donde se declaró. Cada vez que entremos al formulario, procedimiento o módulo,
esa variable tomará el valor cero (si es numérica) o nulo (si es string).

Sentencia PRIVATE Es la forma de declarar una variable como Privada. Puede

emplearse solamente en la sección de declaraciones de un Formulario o Módulo. La


sintaxis es de la siguiente forma:

Private nombrevariable As Tipovariable

Declarando una variable mediante la sentencia PRIVATE en un Formulario o Módulo, esa


variable puede usarse en todo ese Formulario o Módulo (En todos sus Procedimientos y
Funciones), pero NO fuera del Formulario o Módulo donde se declaró.

La sentencia Private no puede usarse en un procedimiento o función.

Sentencia PUBLIC Es la forma de declarar una variable como Pública. Puede


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
emplearse solamente en la sección de declaraciones de un Formulario o Módulo. La
sintaxis es de la siguiente forma:

Publicnombrevariable As Tipovariable

Declarando una variable de esta forma en la sección de declaraciones de un Módulo, esa


variable puede usarse en cualquier parte del programa citándola simplemente por su
nombre.

Si se declara de esta forma en la sección de declaraciones de un Formulario, esa variable


puede usarse en toda el programa. Para nombrarla, si estamos en el Formulario donde se
declaró basta con citarla por su nombre. Si no estamos en ese Formulario, habrá que citarla
por el nombre del Formulario, seguido del nombre de la variable, separados por un punto :

NombreFormulario.Nombrevariable

En un Módulo puede usarse también la sentencia Global en vez de Public :

Sentencia GLOBALDeclara una variable que es válida en todo el programa. La sintaxis


es:

Global nombrevariable Astipovariable

La sentencia Global sólo puede usarse en el apartado de declaraciones de un Módulo.

Mediante la sentencia Global la variable puede usarse en todo el espacio del programa.

Sentencia STATIC

Como se dijo anteriormente, una variable declarada en un procedimiento pierde su valor al


salir de él. Lo peor es que una vez que el programa vuelva a entrar en ese procedimiento, la
variable estará puesta a cero. Afortunadamente, esto último tiene solución. Si declarásemos
una variable en un procedimiento o función, como estática, esa variable, aunque no la
podremos utilizar fuera de ese procedimiento o función, cuando volvamos a él conservará
el valor que tenía cuando lo abandonamos. Esta declaración como estática se realiza
mediante la intrucción Static

Static nombrevariable Astipovariable

El nombre de una variable puede ser tan largo como queramos. hasta un máximo de 40
caracteres. En la versión VB para España se pueden usar incluso la Ñ y vocales acentuadas.
Es indiferente usar mayúscula ó minúsculas. No se sorprenda, si por ejemplo, la ha
declarado con mayúsculas y luego la cita con minúsculas al escribir el código, que
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
automáticamente se cambie a mayúsculas. El nombre de una variable siempre debe
comenzar por una letra.

No hay problema por utilizar variables largas. Al compilar el programa no se lleva el


nombre, es decir, no le va a ocupar mas espacio. Utilice siempre nombres que le definan la
variable con algún sentido. Es muy útil a la hora de acordarse como se llaman, y sobre todo,
a la hora de rehacer un programa que realizó hace seis meses.

Pese a que Visual Basic no obliga a declarar variables, es muy útil hacerlo. De esta forma
se tiene control sobre el programa. La experiencia se lo irá demostrando.

Resumimos la forma de declarar una variable :

En un Procedimiento (La variable no puede usarse fuera de esta Procedimiento)

Dim Variable As Tipovariable

En un Procedimiento, como permanente (La variable no puede usarse fuera de este


procedimiento, y dentro de él conserva el valor aunque se salga y se vuelva a entrar)

Static Variable As Tipovariable

En un Formulario (En su sección de declaraciones)

Como Privada (Solamente se puede usar en ese Formulario)

Dim Variable As Tipovariable ó

Private Variable As Tipovariable

Como Pública (Puede usarse en toda la aplicación)

Public Variable As Tipovariable

En un Módulo

Como Privada (Solamente puede usarse en ese Módulo)

Dim Variable As Tipovariable ó

Private Variable As Tipovariable

Como Pública (Puede usarse en toda la aplicación)


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Public Variable As Tipovariable ó

Global Variable As Tipovariable

Error típico de un programador novel de Visual Basic

Creo que esta costumbre viene del lenguaje C. Pero no vale en VB. Se trata de declarar
varias variables juntas en una misma línea :

Dim Variable1, Variable2, Variable3, Variable4 As String

Esta declaración está MAL hecha. Visual Basic interpretará que Variable1, Variable2 y
Variable3 son del tipo Variant, y solamente Variable4 la supone como tipo String

La forma correcta de hacerlo, si queremos declarar esas variables un una sola línea, es la
siguiente :

Dim Variable1 As String, Variable2 As String, Variable3 As String, Variable4 As String.

Lenguaje Basic del Visual Basic.

No ha sido un juego de palabras. VB emplea unas instrucciones casi iguales a las que
emplea Quick Basic. Sin embargo ha añadido otras nuevas instrucciones, inherentes con la
programación visual. Vamos a estudiar aquí las instrucciones y definiciones mas sencillas,
comunes a QB y VB.

Sentencias condicionales.

Llamamos sentencias condicionales a aquellas que se realizan si se cumple una determinada


condición. Son las sentencias por las que empieza cualquier texto de Basic, y este no va ser
menos.

La sentencia condicional mas usada es:

Si se cumple una condición Entonces

Realiza estas instrucciones

Si no se cumple

Realiza estas otras instrucciones

Fin de la sentencia.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Así de fácil es programar en Basic. Lo que ocurre es que esta herramienta habla inglés, y lo
descrito anteriormente toma la forma:

If condición Then

Instrucciones

Else

Otras instrucciones

End If

En este ejemplo, la condición era que, o se cumple una condición y ejecuta unas
determinadas instrucciones, o no se cumple, y ejecuta otras condiciones distintas. Puede
ocurrir que, caso de no cumplirse la condicione primera, se abra un abanico de dos o tres
posibilidades. La sentencia condicional tendría entonces la forma:

If condición 1 Then

Instrucciones

ElseIf Condición 2

Otras instrucciones

ElseIf Condición 3

Otro juego de instrucciones

Else

Instrucciones que debe realizar caso de no cumplir las condiciones 1, 2 y 3.

End If

Como decíamos anteriormente, este es el tipo de sentencia condicional mas usada. Existe
otra:

Select Case

Su nombre casi nos define lo que es: Selecciona, dependiendo del caso, un determinado
juego de instrucciones:
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Select Case variable ' variable es una variable que puede tomar los valores (p.e.) de 1 a 4

Case 1

Instrucciones a ejecutar en caso de que variable = 1

Case 2

Instrucciones a ejecutar en caso de que variable = 2

Case 3

Instrucciones a ejecutar en caso de que variable = 3

Case 4

Instrucciones a ejecutar en caso de que variable = 4

End Select

Este procedimiento resulta mucho mas sencillo y rápido que las sentencias If Then Else

vistas anteriormente, cuando el margen de elección es mayor que 2.

Cuando lo que queremos es elegir un valor, no ejecutar instrucciones como hacíamos


anteriormente, disponemos de otras dos funciones: Choose y Switch.

Switch toma una serie de parámetros, todos por parejas. El primer término de cada pareja
es la expresión a evaluar. El segundo es el valor que tiene que devolver. En realidad Switch
es una función (las funciones las veremos muy pronto)

A = Switch (B=1, 5, B=2, 7, B=3, 11)

Esta instrucción obtiene un valor para A que dependerá del valor que tome B entre los
valores posibles (1, 2 ó 3)

La sentencia Choose es casi igual, cambia solamente la forma. La misma intrucción


anterior puede realizarse con Choose de la siguiente forma:

A = Choose ( B, 5, 7, 11 )

En estas sentencias, Switch y Choose, si el valor de B no coincide con ninguno de los


valores que se le habían establecido (1, 2 ó 3 en nuestro caso), la sentencia devuelve el
valor Nulo ( Null ). Esto puede producir algún error si no se contempla esa posibilidad.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Con estas sentencias condicionales es posible realizar bifurcaciones del programa, cambiar
las propiedades de un objeto, obtener resultados de operaciones, ....

Sentencias de bucle.

Es muy común utilizar bucles a lo largo de un programa. Un bucle es una sucesión


repetitiva de instrucciones, que se estarán realizando mientras se cumpla una condición o
mientras no se cumpla otra condición. Es tan sencillo como esto:

Mientras condición

Instrucciones

Fin del bucle

Existen dos formas de bucle: Una, que realiza un número determinado de recorridos por el
bucle. Es el denominado bucle por contador. Otra, realiza el bucle hasta que se cumpla (o
deje de cumplirse) una condición. Es el llamado bucle por condición.

Bucle por contador

Realiza el bucle tantas veces como le indiquemos. Por ejemplo, en este bucle nos va a
presentar las 26 letras mayúsculas del alfabeto inglés

For N=65 To 90

Label1.caption = Chr ( N )

Next N

Este "programa" nos presentará en una caja (Label) los caracteres cuyo número ASCII vaya
desde el 65 (A) al 90 (Z) Comenzará presentando el correspondiente al número 65, e irá
presentando sucesivamente el 66, el 67, etc., hasta llegar al 90, donde se parará.

Bucles por condición

Ejecuta las instrucciones del bucle mientras se cumple una condición

X=0

Do While X < 1000

X=X+1
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Loop

El programa toma una variable ( X ) que previamente tuvimos la curiosidad de ponerla a


cero, e incrementa su valor una unidad. Analiza si el valor de X es menor que 1000, y si es
cierto, vuelve a realizar el bucle. Así hasta que X ya no sea menor que 1000. Al dejar de
cumplirse que X sea menor que 1000, sale del bucle. Acabamos de realizar un
temporizador, y también de exponer las sentencias condicionales y los bucles, inicio de
cualquier curso de Basic. Como final de lección, se propone un problema. Con el primer
bucle, donde visualizábamos los caracteres A a la Z, posiblemente no nos diese tiempo de
ver cada una de las letras que iban apareciendo en la pantalla, en la etiqueta Label1, dado
que cambiaría con mucha velocidad, y solamente veríamos la Z, que es donde se detuvo el
programa. Podemos poner un temporizador cada vez que presente una letra, y así nos dará
tiempo a verla. Con los dos bucles vistos anteriormente ya podemos hacerlo.

Si lo que queremos es que el programa se ejecute mientras no se cumpla una determinada


condición, la sentencia será:

X=0

Do Until X > 1000

X=X+1

Loop

Observe que la diferencia entre una y otra es la condición, While para indicar Mientras se
cumpla que ... y Until para indicar Mientras no se cumpla que ....

Para terminar bien el programa anterior utilizaremos la condición de While (Mientras se


cumpla la condición)

For N=65 To 90

Label1.caption = Chr ( N )

Label1.RefreshN' Refresca la etiqueta

X=0

Do While X < 1000

X=X+1

Loop
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Next N

Este es nuestro primer programa en BASIC. En VISUAL BASIC es idéntico, pero nos falta
la interface gráfica. Para realizarla basta con abrir el VB y sobre el formulario que aparece
al abrirlo, introducir una etiqueta, (Label) que llevará el nombre por defecto de Label1.
Solo nos queda pensar donde introducimos el código anterior. Podemos introducir un botón
de comando (Command Button) que saldrá con el nombre por defecto de Command1. Haga
doble click sobre el botón. Aparecerá el procedimiento Click. Este procedimiento es el que
se realiza cuando hacemos click sobre ese botón. Escriba en ese procedimiento este código.

Private Sub Command1_Click() ' Esta línea sale automáticamente

For N=65 To 90

Label1.caption = Chr ( N )

Label1.RefreshN' Refresca la etiqueta

X=0

Do While X < 1000' Bucle de temporización

X=X+1

Loop

Next N' Termina el bucle de temporización

End Sub ' Esta línea sale automáticamente

Hemos puesto nuestra primera piedra en Visual Basic. Este ejemplo es muy sencillo. Visual
Basic es tan sencillo como este ejemplo.

BASIC DE VISUAL BASIC (2)

___________________________

Funciones de cadenas

Se denomina CADENA a una sucesión de caracteres. Una cadena puede tener uno o varios
caracteres alfanuméricos. Una cadena es también una sucesión de números.

Ejemplo de cadenas:
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Curso de Visual Basic

abcdefghijklmnopqrstuvwxyz1234567890

123456789

Hagamos una distinción entre una cadena que contenga números y un número. Un número
tiene un valor, pero también tiene una presentación escrita. El valor es algo que estará en el
ordenador como una sucesión de bits. Dependiendo de como lo hayamos declarado, tendrá
mas o menos bits. Pero esa información no es un número legible por el usuario. Lo que sí
es legible por el usuario es la representación en numeración decimal (u octal, o
hexadecimal, o incluso en binario) de ese número. Esa representación del número en un
determinado sistema de numeración es una cadena.

Así, el número nueve, que en la memoria del ordenador será una sucesión de bits, el
ordenador puede presentárnoslo como:

9 En numeración decimal

9 En numeración hexadecimal

11 En numeración octal

1001 En numeración binaria

Esas formas de presentarnos el número son CADENAS de caracteres. El valor del número
dentro del ordenador es un NUMERO.

Para presentar un número en la pantalla, el ordenador debe convertirlo previamente a una


cadena.

Cuando introducimos un valor numérico por teclado o pantalla, el ordenador para hacer
operaciones con él, debe transformarlo a un número.

Estas consideraciones nos llevan a las dos primeras funciones con cadenas:

Str (número) Convierte un número a una cadena en numeración decimal.

Val (cadena numérica) Obtiene el valor (el número) correspondiente a esa cadena.

Ejemplos

Variablenumerica = Val (TextBox1.Text)


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Este ejemplo convierte la cadena de caracteres (numéricos) que hubiese en la caja de texto
TextBox1 en un número, y asocia este número a la variable Variablenumerica.

Si el contenido de la caja de textos no fuesen caracteres numérico (abcd, por ejemplo),


Variablenumerica tomaría el valor 0.

Label1.Caption = Str (Variablenumerica)

Este ejemplo pondría en la etiqueta Label1 los caracteres correspondientes al valor que
tuviese la variable Variablenumerica .

Nota para recordar: Siempre habrá que convertir un número a una cadena cuando
queramos presentarlo en la pantalla. Siempre habrá que convertir a número la cadena
de caracteres numéricos que hayamos introducido por teclado o por pantalla, cuando
queramos operar con ese número. Un Label, cuando tiene que presentar un único
número, no le pedirá que se lo convierta a cadena, pues VB hace automáticamente esa
conversión. Sin embargo, cuando tiene que presentar un número, y además un texto en
el mismo Label, VB no realizará automáticamente ese cambio, por lo que le dará un
error. Le recomiendo que convierta los números a variables de cadena siempre que los
quiera presentar en un Label o TextBox.

Existe una función mas amplia que Str. Se trata de Cstr. Esta función no solamente
transforma un número a una cadena, como hace Str, sino que convierte cualquier tipo de
variable a una variable tipo String (cadena).

Esta función transforma, por ejemplo, una variable tipo Booleana en una variable de
cadena, devolviendo la cadena "Verdadero" si el valor de la variable booleana es True, y
"Falso" si es False.

Puede también transformar a una cadena de caracteres el valor de un CheckBox o de un


OptionButton. En estos casos devuelve 0 y 1 para el CheckBox (Desactivado / Activado) y
Verdadero ó Falso para el OptionButton (Activado / Desactivado)

label1.Caption = CStr(booleana) Label1.Caption = Verdadero si booleana es true

Label1.Caption = Falso si booleana es False

Label2 = CStr(Check1.Value) Label2.Caption = 1 si Check1 está activado

Label2.Caption = 0 si Check1 está desactivado

Label3 = CStr(Option1.Value) Label3.Caption = Verdadero si Check1 está activado

Label3.Caption = Falso si Check1 está desactivado


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Si se aplica Cstr a una variable tipo Fecha/Hora devuelve la fecha / Hora en formato corto.

Mas funciones de cadena:

Left (cadena, n)

Extrae los n primeros caracteres de una cadena, comenzando por la izquierda.

Si cadena = Curso de Visual Basic (Para todos los ejemplos)

Resultado = Left (cadena, 10) ----> Resultado = Curso de V

Right (cadena, n) Extrae lo n últimos caracteres de la cadena

Resultado = Right (cadena, 10) ----> Resultado = sual Basic

Mid (cadena, m, n) Extrae n caracteres de la cadena, siendo el primer carácter extraído el


que ocupa el lugar m.

(Vea Instrucción Mid mas abajo)

Resultado = Mid (cadena, 3, 10) ----> Resultado = rso de Vis

LCase (cadena) Devuelve otra cadena igual, pero con todos los

caracteres en minúsculas. (LCase = Lower Case)

Resultado = Lcase (cadena) ----> Resultado = curso de visual basic

UCase (cadena) Devuelve otra cadena igual, pero con todos los

caracteres en mayúsculas. (UCase = Upper Case)

Resultado = UCase (cadena) ----> Resultado = CURSO DE VISUAL BASIC

Len (cadena) Devuelve la longitud de la cadena

Resultado = Len (cadena) ----> Resultado = 21

LenB (Cadena) Devuelve el número de Bytes empleados para almacenar la

cadena. Sorpréndase, es el doble que Len (Cadena)

String (n, carácter) Devuelve una cadena de n caracteres como el indicado


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Resultado = String (8, "a") ----> Resultado = aaaaaaaa

Resultado = String (8, Chr(65)) ----> Resultado = AAAAAAAA

Resultado = String (8, 65) ----> Resultado = AAAAAAAA

Space (n) Devuelve una cadena formada por n espacios.

Resultado = "A" + Space (6)+ "B" ----> Resultado = A B

LTrim Elimina los posibles espacios que tenga una cadena por su izquierda.

Rtrim Elimina los posibles espacios que tenga una cadena por su derecha.

Trim Elimina los espacios que tenga una cadena, tanto por su izquierda como por su
derecha. (No elimina los espacios

centrales de la cadena)

Estas tres funciones se emplean para quitar los posibles espacios que pueden resultar de una
entrada de datos. Tienen especial importancia cuando se toman los datos de un archivo o
base de datos, donde fueron introducidos por otro programa.

No se pone ningún ejemplo de estas funciones, pues sería difícil verlo impreso.

InStr (cadena, cadena1) Busca la cadena1 dentro de cadena y devuelve el número de orden
dentro de cadena donde se encuentra la primera letra de cadena1

Resultado = InStr (cadena, "sua") ----> Resultado = 12

StrConvConvierte una cadena de caracteres en otra, según las instrucciones

que le sigan. Puede sustituir a UCase o LCase si la instrucción es

UpperCase o LowerCase respectivamente, o poner la primera letra de todas las palabras de


la cadena en mayúsculas, si la instrucción es ProperCase.

Resultado = StrConv (cadena, UpperCase) ----> Resultado = CURSO DE VISUAL BASIC

Resultado = StrConv (cadena, LowerCase) ----> Resultado = curso de visual basic

Resultado = StrConv (cadena, ProperCase) ----> Resultado = Curso De Visual Basic

Instrucción Mid
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Mid puede usarse también para cambiar el contenido de una cadena. Observe la sutileza
entre Mid como Función de cadena y Mid como Instrucción.

La Instrucción Mid reemplaza un número especificado de caracteres en una variable de


cadena con caracteres de otra cadena.

Sintaxis Mid(cadena1, inicio[, longitud]) = cadena2

Resultado Mid (cadena, 7,2)="Sobre" ---- > Resultado = Curso sobre Visual

Basic

FUNCIONES CON NUMEROS

_________________________

Visual Basic puede operar con números tal como lo haría cualquier persona. Conoce las 4
reglas, y puede utilizar paréntesis de la misma forma que los escribimos sobre el papel.

Los operadores que utiliza para las operaciones básicas son:

+ Suma

- Resta

* Multiplicación

/ División

\ División sin decimales

Mod Resto de una división

^ Eleva a un exponente

Ejemplos

Resultado = 12 + 15 ----> Resultado = 27

Resultado = 15 - 12 ----> Resultado = 3

Resultado = 15 * 12 ----> Resultado = 180

Resultado = 15 / 12 ----> Resultado = 1.25


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Resultado = 15 \ 12 ----> Resultado = 1

Resultado = 15 Mod 12 ----> resultado = 3

Resultado = 12 ^ 2 ----> Resultado = 144

resultado = ( ( 4 * 3 ) / 2 ) ^ 2 ----> Resultado = 36

Estos operadores se denominan Operadores aritméticos.

Existen otras operaciones que se pueden realizar con números: comparaciones. Los
operadores que realizan comparaciones se denominan Operadores relacionales. El
resultado de las operaciones realizadas con estos operadores solamente admiten dos
resultados: True (Cierto) o False (Falso) Estos operadores son:

= Igual que

<> No igual que

< Mayor que

<= Mayor o igual que

> Menor que

=> Igual o menor que

Estos operadores se suelen utilizar en estructuras de programa donde se tome una decisión.

El operador = puede usarse también para comparar cadenas o fechas.

Operadores Lógicos

Estos operadores sólo tienen sentido cuando hablemos de variables Booleanas, es decir,
aquellas que solamente pueden tomar los valores cero y uno.

Operador Función Devuelve True si Devuelve False si

And Función AND A=True y B=True Cualquier otro caso

OrFunción OR A=True o B=True A=False y B=False

Xor Función XOR A=True y B=False A=True y B=True


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
A=False y B=True A=False y B=False

EqvF. Equivalente A=True y B=True A=True y B=False

A=False y B=False A=False y B=True

ImpImplicación A=True y B=True A=True y B=False

A=False y B=True

A=False y B=False

Not Negación A=False A=True

LikeIgualdad A=True A=False

Otras Funciones con números

CInt Parte entera Devuelve la parte entera de un número con decimales

AbsValor Absoluto Devuelve el valor absoluto de un número

SgnSigno Devuelve el signo de un número

Sqr Raíz cuadrada Devuelve la raíz cuadrada de un número

Exp Exponenciación Devuelve el número elevado al exponente indicado

Log Logaritmo Devuelve el logaritmo natural de ese número

Trigonométricas

Sin Seno Devuelve el valor del seno de un ángulo (Expresado

en radianes)

Cos Coseno Devuelve el coseno de un ángulo (En radianes)

Tan Tangente Devuelve la tangente de un ángulo

Atn Arco Tang. Devuelve un arco cuya tangente sea el número

(Angulo en radianes)
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Una función curiosa

TimerTiempo acumulado Devuelve el tiempo (en segundos) que ha pasado desde las 12 de
la noche.

Generación de números aleatorios

Randomize (Numero) Inicia el generador aleatorio tomando como dato de partida el


Numero. Devuelve el resultado en una variable llamada Rnd.

NOTA MUY IMPORTANTE.- Los números aleatorios generados de esta forma son
siempre iguales, eso sí, dependiendo del número que se le introduzca como parámetro.
Esta generación de números no produce números aleatorios pues como se dijo, dependen
del numero que se meta como parámetro, y si este se repite, se repite la sucesión de
números que nos crea el generador aleatorio.

La forma de obtener números realmente aleatorios es introducir como parámetro un número


que sea variable con el tiempo. Ese número no puede ser otro que el número timer visto
antes. Y siempre con la precaución de que medie mas de un segundo entre dos
instrucciones Randomize. La función toma entonces la forma:

Randomize Timer

La función Randomize devuelve una variable Rnd con un número comprendido entre 0 y 1
(Nunca será 0 ni 1) Leyendo el valor de la variable sucesivas veces, se puede obtener una
sucesión de números aleatorios. No es necesario ejecutar la instrucción Randomize Timer
cada vez que se quiera obtener un dato de la variable Rnd.

Un ejemplo. Generador de números para la Lotería Primitiva

Supongamos que tenemos un formulario con una etiqueta de nombre Label1, un botón de
comando de nombre Command1. Cuando hagamos click sobre el botón de comando deberá
generar un número comprendido entre el 1 y el 49. En el procedimiento click de
Command1 pondremos el siguiente código:

Private Sub Command1.click

Randomize Timer

A = Rnd

A = Rnd * 100

A = CInt(A)
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Do While A > 49

A = A - 49

Loop

Do While A < 1

A = A + 49

Loop

Label1.caption = A

End Sub

Realice este pequeño programa, con la instrucción Randomize Timer y sin ella.

Funciones con fechas.

Las fechas son cadenas especiales. Visual Basic sabe obtener y tratar la información
relativa a la fecha y la hora. Dispone para ello de una declaración de variable: Date. Una
variable declarada como date puede contener una fecha, una fecha y una hora o una hora
solamente.

Date Devuelve la fecha de hoy. Esta fecha la toma del reloj del ordenador.

Time Devuelve la hora actual.

Now Devuelve la fecha y hora actual.

WeekDay Devuelve el día de la semana (En número, 1=Domingo, 2=Lunes,...)

Day Obtiene el día, a partir de una fecha

Month Obtiene el mes a partir de una fecha.

Year Obtiene el año a partir de una fecha.

Hour Obtiene la hora a partir de una hora

Minute Obtiene el minuto a partir de una hora.

Second Obtiene el segundo a partir de una hora.


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
DateAddAñade un intervalo de tiempo a una fecha

DateDiff Obtiene el intervalo de tiempo entre dos fechas

DatePart Devuelve una parte de una fecha (semana, trimestre, etc.)

DateSerial Compone una fecha a partir de parámetros relativos

TimeSerial Compone una hora a partir de parámetros relativos.

DateValue Devuelve una fecha a partir de un dato que se le parezca y VB pueda

obtener de él una fecha válida

Mediante estas instrucciones podemos obtener el dato necesario de una fecha u hora. Por
ejemplo, para obtener el día de hoy solamente:

Día = Day (Now)Día será un número

El día de la semana lo obtendríamos

Diasemana = WeekDay (Now) Diasemana será un número

DateValue, una instrucción que le sacará mucho provecho

Fecha = DateValue (120796)

Fecha = DateValue (12 07 96) Fecha =12/07/96

Función FORMAT

Esta función permite presentar cadenas de numéricas o fechas de una determinada forma.
Permite establecer el Formato de esa cadena.

Si recurre a la ayuda de VB acerca de esta función se va a enterar muy poco de lo que


puede dar de sí. La sintaxis que presenta es :

Format(expresión[, formato[, primerdíadesemana[, primerasemanadelaño]]])

Lo mejor que puede hacer con esta definición de la sintaxis de Format es olvidarla. No le
aclara mucho lo que se puede hacer con Format. La función Format se usa para poner una
fecha en un determinado formato. Con la expresión :

FechadeHoy = Format (Now, "yyyy-mm-dd")


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
la variable FechadeHoy tendrá el valor 1998-05-21, que se refiere al día 21 de mayo de
1998, según el formato recomendado por la norma ISO-8601 para la presentación de
fechas. Si hubiésemos puesto la expresión FechadeHoy = Format (Now, "dd/mm/yy") , la
variable FechadeHoy contendría el valor 21/05/98 referido al día citado.

Las posibilidades de Format llegan también al campo de las cadenas numéricas. Por
ejemplo la cifra 123456 se transformará en las siguientes expresiones, según como
empleemos la función Format

Variable = Format(123456, "Currency") Variable = 123.456 Pts

Variable = Format(123456, "Standard") Variable = 123.456,00

Veamos ahora con un poco mas de conocimiento la sintaxis de Format

Variable = Format (expresión[, formato[, firstdayofweek[, firstweekofyear]]])

Donde

expresión es una cadena o fecha válida

formato es uno de los formatos predefinidos (Standard, Currency, etc. Vea mas abajo)

firstdayofweek. Especifica el primer día de la semana. Puede tomar uno de estos valores o
constantes :

Constante Valor Descripción

vbUseSystem 0 El especificado en el sistema operativo.

VbSunday 1 Domingo (valor por defecto)

vbMonday 2 Lunes

vbTuesday 3 Martes

vbWednesday 4 Miércoles

vbThursday 5 Jueves

vbFriday 6 Viernes

vbSaturday 7 Sábado
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
firstweekofyear Especifica cual es la primera semana del año. Puede tomar uno de los
siguientes valores o constantes :

Constante Valor Descripción

vbUseSystem 0 Usa el valor del sistema operativo

vbFirstJan1 1 La primera semana es la que contiene al día 1 de Enero(Valor

por defecto

vbFirstFourDays 2 La primera semana es la que contiene al menos, 4 días de ese

año (Rec. ISO - 8601)

vbFirstFullWeek 3 La primera semana es la que tiene todos sus días en ese año

No se complique la vida con el tema del primer día de la semana ni la primera semana del
año. No lo usará con frecuencia. Centrémonos mas en el parámetro Formato. Puede tomar
muchos valores. Veamos los principales. Primero para números

Observe que usamos la expresión Variable =Format (1234567,"Formato") para todos los
ejemplos de números.

Para poner los números separados por millares :

Variable = Format(1234567, "##,###,###") Variable = 1.234.567

(Cada carácter # indica que ahí va un número. El separador debe ser una coma, no un
punto, aunque esto depende del idioma que esté usando)

Puede poner una de estas expresiones, eso si, siempre entre comillas dobles :

General Number Muestra el número tal como lo tecleó

Currency En formato de la moneda de su sistema operativo

Fixed Sin separador de millar y dos decimales (1234567,00)

Standard Con separador de millares y dos decimales (1.234.567,00)

Percent Multiplica el número por cien y lo presenta cono

porcentaje(123456700,00%)
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Scientific Usa notación científica (1,23E+06)

Para fechas (Observe que usamos el ejemplo Format(Now, "Formato") y Now = 21/07/98

a las 22:16:00 y pico)

General Date 21/07/98 22:16:00

Long Date martes 21 de julio de 1998

Medium Date 21-jul-98

Short Date 21/07/98

yyyy-mm-dd 1998-05-21

yy-mm-dd 98-07-21

Long Time 22:19:53

Medium Time 10:20 PM

Short Time 22:20

hh :mm :ss 22 :21 :29

hh :mm 22 :21

Format dispone de mas opciones. Sería muy largo explicarlas aquí. Para mas información,
en la WEB de Microsoft puede encontrar mas formatos posibles.

MATRICES

__________

Cuando utilizamos varias variables que tienen un significado similar para nosotros, pero
que son distintas (Por ejemplo, el nombre de los alumnos de una clase) podemos utilizar
una matriz. Esta matriz está formada por tantos elementos como alumnos tenga la clase. El
nombre asociado a cada uno de los elementos de la matriz puede ser:

Alumno (n) Donde n es el número por orden de lista de ese alumno.


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Las matrices normalmente comienzan a numerar por el número 0. Este comienzo puede no
ser el mas apropiado para la variable que estamos planteando, pues ningún alumno tiene el
número de orden 0. Para hacer que una matriz comience a numerar por el 1 se debe definir
mediante la instrucción:

Option Base 1

que debe colocarse al comienzo del módulo o formulario donde declaremos la matriz.

Para declarar la matriz se hace como con todas las variables, especificando entre paréntesis
el número de elementos que componen la matriz:

Dim Alumno (25) as String

Hemos declarado que la variable alumno es una cadena, y que hay 25 elementos en esa
matriz.

Una matriz también se puede declarar de la siguiente forma :

Dim Alumno(1 To 25) as String

Donde le decimos que la variable Alumno tiene 25 elementos, que el primero tiene el índice
1 y el último tiene el índice 25.

Pero imaginemos que queremos meter en la misma matriz el nombre, primer apellido y
segundo apellido del alumno. Necesitaremos declarar una matriz de 25 por 3. Como todos
los elementos serán cadenas de caracteres, podemos declararla de la siguiente forma:

Dim Alumno (1 To 25, 1 To 3) As String

De esta forma, el primer apellido del alumno que ocupa el puesto número 15 de la clase,
será el elemento:

Alumno (15, 2)

Podemos definir matrices de dimensión superior a dos. Podemos llegar a un máximo de 60


dimensiones. Una matriz de 5 dimensiones se declararía:

Dim Variable ( 1 To N, 1 To M, 1 To P, 1 To Q, 1 To R)

entendiendo que hay N, M, P, Q y R elementos en cada una de las dimensiones


respectivamente.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Una variable ya declarada como una matriz puede redimensionarse a lo largo del programa
mediante la instrucción ReDim

ReDim Alumno (1To 25)

Mediante esta instrucción, estamos ReDimensionando una matriz ya declarada. No se


puede redimensionar una matriz inexistente.

Mediante la declaración 1 To 25 le estamos diciendo que el primer elemento de la matriz es


el 1, independientemente de lo que hayamos puesto en OPTION BASE. Si se
redimensiona simplemente con el número de elementos :

ReDim (25)

le estamos diciendo que tiene 25 elementos, pero que el primero sea el 0 ó el 1 depende de
haber puesto OPTION BASE 0 u OPTION BASE 1.

Una matriz puede redimensionarse cuantas veces se quiera a lo largo de la aplicación, pero
esa redimensión no puede afectar al número de dimensiones de la matriz. Si
redimensionamos la matriz perderá la información existente. Para evitar perder la
información presente en la matriz, debe utilizar la sentencia ReDim Preserve.

Si usa la palabra clave Preserve en matrices de dimensión superior a 1, va a encontrarse


con comportamientos no esperados. Como podrá ver en la Ayuda de VB, usando ReDim
Preserve sólo puede cambiar el tamaño de la última dimensión de matriz y no puede
modificar en ningún momento el número de dimensiones. NO es cierto del todo. SÍ lo
podrá hacer una sola vez.

Respecto a cambiar el número de dimensiones, si ha declarado la matriz con unas


dimensiones determinadas, ya no podrá cambiar las dimensiones ni con ReDim ni con
ReDim Preserve. Le saldrá un error que dice que las dimensiones de la matriz ya han sido
declaradas.

Pero si ha declarado la matriz sin dimensiones :

Dim MiMatriz()

puede cambiar las dimensiones Dim MiMatriz (1 To 5, 1 To 9)

y volver a cambiarlas Dim MiMatriz (1 To 8, 1 To 15, 1 To 6)

Observe que no solamente la hemos cambiado dos veces de dimensiones (la primera a 2 y
la segunda a 3), sino que también hemos cambiado el número de elementos en cada
dimensión.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Si hubiésemos utilizado ReDim Preserve solamente podríamos haber usado la primera de
las dos líneas anteriores :

ReDim Preserve MiMatriz (1 To 5, 1 To 9)

pero ya no podríamos volver a cambiar el número de dimensiones con la segunda línea.


Nos daría un error.

Con ReDim podemos cambiar el número de elementos de cada dimensión cuantas veces
queramos. Por ejemplo, podemos redimensionar MiMatriz de las siguiente forma :

ReDim MiMatriz (1 To 5, 1 To 9)

ReDim MiMatriz (1 To 15, 1 To 20)

ReDim MiMatriz (1 To 25, 1 To 30)

...........................

Si hubiésemos empleado ReDim Preserve, podríamos cambiar los elementos de todas las
dimensiones de la matriz una vez :

ReDim Preserve (1 To 5, 1 To 9)

a partir de ahora, solamente podemos cambiar los elementos de la última dimensión :

ReDim Preserve (1 To 5, 1 To 20)

ReDim Preserve (1 To 5, 1 To 30)

es decir, no podremos hacer esto :

ReDim Preserve (1 To 10, 1 To 30) donde se señala en negrita el error.

Esto no causa ningún error en una matriz de una dimensión, ya que si la matriz tiene sólo
una dimensión, puede cambiar el tamaño de esa dimensión porque es la única y la última.

Cuando a lo largo de la aplicación se va redimensionando una matriz, podemos llegar la


circunstancia de que, en un momento determinado, no sepamos las dimensiones de esa
matriz.

Para conocer el índice máximo y mínimo de una matriz se usan las funciones UBound y
LBound.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
UBound devuelve el mayor subíndice disponible para la dimensión indicada de una matriz.

Sintaxis UBound(nombredelamatriz[, dimensión])

LBound devuelve el mayor subíndice disponible para la dimensión indicada de una matriz.

Sintaxis LBound(nombredelamatriz[, dimensión])

Ejemplo Tengamos una matriz llamada Mimatriz, de tres dimensiones. En un momento de


la aplicación se ejecutó la siguiente instrucción válida :

ReDim Mimatriz (1 To 100, 0 To 3, 5 To 20)

En otro momento queremos tener el control de los índices de esa matriz, y queremos
averiguar el índice menor y mayor de cada una de sus dimensiones :

(IID1= Indice Inferior Dimensión 1, ISD 1 = Indice Superior Dimensión 1, etc. )

IID 1= LBound (Mimatriz, 1) IID1 = 1

ISD1 = UBound (Mimatriz, 1) ISD1 = 100

IID 2= LBound (Mimatriz, 2) IID1 = 0

ISD2 = UBound (Mimatriz, 2) ISD1 = 3

IID 1= LBound (Mimatriz, 3) IID1 = 5

ISD1 = UBound (Mimatriz, 3) ISD1 = 20

VISUAL BASIC

Tras esta pequeña introdución al lenguaje Basic ya estamos en disposición de encender el


ordenador y comenzar a trabajar con Visual-Basic. Se supone que su PC tiene instalado el
programa Visual basic, bien en su versión de 16 bits si dispone de Windows 3.xx o la de 32
bits si dispone ce Win95 ó Windows NT.

Entre en el programa VB. Le aparecerá en pantalla algo similar a esto : (Para VB Vers. 4)
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net

Este es el comienzo del programa . Observe que en esta pantalla existen varias cosas. En la
parte superior , la barra de título del programa Visual Basic, con el texto :

Proyect1 - Microsoft Visual Basic (Diseño)

Por debajo de esta barra de Título del VB, encontramos la barra de menú de VB, con las
leyendas :

Archivo Edición Ver Insertar Ejecutar Herramientas Complementos Ayuda

Por debajo de esta barra de menú tenemos la barra de herramientas, donde podrá ver
varios iconos, que cada uno representa un determinada operación que Vd. puede realizar.
Estas operaciones está todas en la línea de menú, y puede acceder a ellas abriendo los
menús desplegables que existen en cada una de las palabrea Archivo Edición Ver ...... de
esta línea de menú. El hecho de colocar las operaciones mas usuales en un icono en la barra
de herramientas se hace para mayor comodidad del usuario.

A la izquierda de la pantalla tiene una caja rectangular con tres columnas de iconos. Esa
caja es la Caja de Herramientas (No la confunda con la barra de herramientas de la parte
superior)
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Esta caja de herramientas es, salvando las distancias, lo mismo que una caja de
herramientas real que pueda tener un mecánico para realizar su trabajo. En ella están los
iconos que representan a los controles con los que Vd. va a desarrollar su aplicación VB.
No están todos los que pueden estar, al igual que en una caja de herramientas de un
mecánico no están todas las herramientas que puede usar. Están solamente las mas usuales.
Si necesita alguna mas, puede cogerla de otra parte (barra de Menú, Herramientas,
Controles personalizados) y agregarlos a esa caja de herramientas, al igual que lo haría un
mecánico con una herramienta especial, que la metería en su caja sólo cuando va a realizar
un trabajo determinado para el que la necesite.

Posiblemente esta caja de herramientas no le aparezca tal y como la ve en estos apuntes.


Eso depende si Ud. tiene la versión personal o la profesional, o si usa la versión de 16 ó 32
bits. Esa caja de herramientas puede personalizarla a su gusto. Para ello, deberá cargar un
proyecto ya existente en los discos de distribución de Visual Basic, llamado
AUTO32LD.VBP (versión 32 bits) ó AUTO16LD.VBP (Versión 16 bits) que se encontrará
en el directorio donde haya cargado el programa Visual Basic. Este proyecto no tiene otra
función que determinar las herramientas con las que quiere abrir el VB. Para introducir
herramientas nuevas en la caja de herramientas, basta con desplegar el menú Herramientas
de la barra de menú, e ir a Controles personalizados. Haciendo click en esta línea de
controles personalizados, podemos seleccionar nuevos controles para añadir a la caja de
herramientas, marcando la casilla que está a la izquierda del nombre del control que quiere
introducir. Una vez seleccionados todos los nuevos controles, haga click en ACEPTAR, y
podrá observar que esos nuevos controles ya se le han añadido a la caja de herramientas.
Para que esos nuevos controles le aparezcan de entrada cuando inicia una sesión de VB,
debe salir de Visual basic guardando los cambios. Vuelva a entrar y observará que ya le
aparecen esos nuevos controles en la caja. No es prudente meter muchos controles en la
caja. Ponga solamente los que necesite normalmente en sus aplicaciones. Ocupará menos
memoria y tardará menos tiempo en cargar el programa VB. Además, cuando realice una
aplicación y la distribuya una vez compilada, Visual Basic entregará en los disquetes de
distribución las DLL’s u OCX’s correspondientes a todos los controles personalizados que
Vd. tenga en la caja de herramientas, los necesite el programa o no los necesite. Esto le va a
suponer que está cargando subprogramas inútiles en el ordenador destino de su aplicación.
A la hora de compilar el programa (Crear archivo .EXE) quite todos los controles
personalizados que no necesite su aplicación. (Sólo los controles personalizados. Los
controles comunes - CommandButton, Label, TextBox, etc.-, no se pueden eliminar de la
caja de herramientas)

Para quitar controles de su caja de herramientas, debe proceder de forma análoga, cargando
el programa AUTOxxLD.VBP, abriendo menú de herramientas, Controles personalizados,
quitando la marca al cuadro situado en la parte izquierda del control a eliminar, y
guardando el proyecto al salir.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
En el centro, y ocupando casi toda la pantalla, tenemos el Formulario. Este Formulario es
la interface gráfica de su aplicación, sobre el que podrá añadir los controles que necesite.
Lo veremos mas adelante con todo detalle.

Observa dos ventanas, una denominada Ventana de Propiedades, donde puede ver las
propiedades del formulario, Form1, y otra, denominada Ventana de Proyecto. Existe otra
ventana, que no está en la figura anterior, la Ventana de Depuración. Por cada formulario
y cada control que introduzca en el proyecto, le aparecerá otra ventana, denominada
ventana de código.

No se extrañe de que esta presentación gráfica del Visual Basic coincida con otros sistemas
de desarrollo (Delphi, p.e.). La lógica de desarrollo de una aplicación en Windows ha
llevado a varios fabricantes de software a utilizar un entorno gráfico similar (diríamos
idéntico). A Visual basic le queda el orgullo de ser el primero en utilizarlo.

Con lo descrito anteriormente ya tenemos, al menos, fijado el argot con el que expresarnos
para comenzar a estudiar el VISUAL BASIC. Veamos con un poco mas detalle la Ventana
de Código.

Esta figura le muestra un Formulario con su ventana de código. Cada objeto gráfico de VB
tiene su propia ventana de código. Así, si en este formulario hubiésemos introducido un
Label y dos CommandButton, todos ellos tendrían su propia ventana de código. La ventana
de código la podemos ver haciendo doble click sobre cualquier objeto de nuestro proyecto.
En este caso hemos hecho doble click sobre el único objeto que teníamos : el formulario.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Observe las dos cajas de la parte superior, uno con la inscripción Objeto : que en el
momento que le sacamos la foto tenía Form, y el otro con la inscripción Proc :
(procedimiento), que en el momento de la foto tenía Load. A estas cajas les denominamos
Lista de Objetos y Lista de Procedimientos respectivamente.

Haciendo click sobre la flecha de cada lista, se despliega un menú, en la lista de objetos se
desplegará una lista con los nombres de cada objeto existente en ese momento dentro del
formulario. Haciendo click sobre uno de los nombres, nos presentará la ventana de código
de ese objeto. Todos los objetos gráficos (controles) existentes dentro de un formulario y el
propio formulario aparecerán en la misma lista de objetos.

Haciendo click sobre la flecha de la lista de procedimientos, se despliega la lista con todos
los procedimientos posibles para ese objeto. Siempre saldrá uno. Si tenemos escrito código
en uno de los procedimientos, saldrá por defecto ese procedimiento para el cual hemos
escrito el código. Si no hay código en ninguno de los procedimientos, saldrá el que tenga
por defecto cada objeto.

Solamente nos queda por decir, para cerrar este capítulo, que es un procedimiento.

Para ello vamos a explicar lo que es un evento. Un Evento es algo que le puede ocurrir a un
objeto. En una internase gráfica, lo que le puede ocurrir a un objeto es que se le haga click,
doble click, que se pase el cursor del ratón por encima, etc. Este es el Evento. El
Procedimiento es la respuesta por parte de ese objeto, al evento que le está sucediendo.

Esa respuesta, esa forma de Proceder del objeto al evento que le está sucediendo, debemos
programarla según nuestras necesidades, es decir, debemos escribir el código que necesite
nuestra aplicación como respuesta al evento que acaba de ocurrir. Posiblemente, no
queramos ninguna respuesta a muchos de los eventos que pueden acaecer a un objeto. Cada
objeto tiene muchos eventos y solamente queremos aprovechar los que nos interesan. Para
que un evento no produzca ningún efecto, basta con dejar sin código el procedimiento
correspondiente a ese evento. En los eventos que queramos que realice alguna operación, le
escribiremos en su procedimiento el código necesario para que esa operación se realice. Sin
darnos cuenta, hemos comenzado a escribir el código de la aplicación.

Observará que el primer elemento del menú desplegable de la lista de objetos se denomina
General. Este no es en realidad ningún objeto, sino un apartado existente en cada
formulario, que, al desplegar su lista de procedimientos tiene la sección de declaraciones,
donde debemos declarar las variables que queremos que afecten a todo el formulario y sus
controles, y tendrá además, los nombres de todos los procedimientos que introduzcamos
(véase un poco mas adelante). En este menú desplegable de la lista de procedimientos del
General verá con frecuencia cosas que Vd. no puso allí. Cosas tales como
Command1_click, y en la ventana un determinado código. Esto ocurre cuando se borra
algún control que tenía escrito código en alguno de sus procedimientos. Visual Basic sabe
lo mucho que cuesta escribir el código asociado a un control. Si borramos un control de
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
nuestro formulario accidentalmente, después de haber introducido todo el código asociado a
él, Visual Basic nos sorprende con que ese código no lo tira inmediatamente, sino que lo
reserva como un procedimiento en ese apartado General del formulario. Si en realidad
queríamos borrar el control y todo su código, debemos quitarlo de ese apartado General de
nuestro formulario, pues en realidad, si no lo queremos, no hará otra cosa que estorbar. Para
quitarlo basta con borrar todo el código que aparece en la ventana de código cuando
hacemos click sobre el nombre del control eliminado. Deberemos borrar todo el código,
incluida la cabecera donde figura el nombre del control eliminado, y la parte final, que
siempre termina con EndSub.

El primer estorbo lo observará si crea otro control con el mismo nombre, cosa fácil ya que
VB da un nombre por defecto a cada control (Command1, Command2....). El código
asociado al control eliminado pasará automáticamente al nuevo control con el mismo
nombre.

Una aplicación puede tener todo su código escrito en los sucesivos procedimientos del
formulario y de los controles que tenga ese formulario.

Puede ocurrir que un determinado evento no esté entre los posibles eventos de los controles
de nuestra aplicación. Piense por ejemplo, el evento de que la variable A sea igual a la
variable B. No existe en ninguno de los controles ese procedimiento. No se preocupe,
puede crear un procedimiento que se ejecute cuando su programa lo decida. Podemos
añadir cuantos procedimientos queramos. Estos procedimientos se añaden al formulario, y
deberán definirse por un nombre que Vd. debe elegir. Para que se ejecuten las instrucciones
(código) incluido en ese procedimiento, basta simplemente con nombrarlo por ese nombre.

Para insertar un procedimiento debe ir a la barra de menú, hacer click sobre Insertar, y en el
menú que le desplegará, volver a hacer click sobre Procedimiento. VB le presentará un
cuadro donde le pedirá el nombre, si quiere que sea un procedimiento, una función o una
propiedad. A lo largo del curso irá viendo que es cada cosa.

Escribiendo el código en los sucesivos procedimientos, bien en los propios de cada objeto,
bien en los procedimientos que vayamos creando, es posible completar la aplicación. Pero
en una aplicación larga esta forma de escribir el código no sería la mas adecuada. Es mas,
posiblemente sería demasiado engorroso escribirla de esta forma, y muy probablemente
deberíamos escribir el mismo código para varios procedimientos, lo que alargaría
inútilmente el programa y el tiempo de desarrollo.

Para disponer de un sitio donde escribir parte (o la mayor parte) de su programa, puede
introducir uno o varios módulos. Expliquemos lo que es un módulo.

Un Módulo es una parte del programa donde solamente puede escribir código. Es igual que
un formulario, sin interface gráfica. Un profesor de Visual Basic lo expresaba diciendo que
un Módulo es un Formulario sin cara. En un módulo pueden existir procedimientos al igual
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
que en los formularios, pero como un módulo no tiene interface gráfica, esos
procedimientos debe introducirlos el programador tal y como explicamos un poco mas
atrás. El módulo tiene su propia ventana de código, al igual que un formulario, con un
objeto único, el apartado General. Aquí también tenemos la sección de declaraciones, al
igual que los formularios. En esta sección de declaraciones se comporta de manera similar a
la de los formularios, pero permite algo que no nos permite la sección de declaraciones de
un formulario : Declarar variables que se pueden utilizar en todo el programa. Esto ya lo ha
visto mas atrás, con las sentencia de declaración Global y Public.

Los módulos se emplean para la declaración de variables globales, y para escribir el código
de la aplicación que sea común a varios formularios. Esto nos evita tener que repetir código
inútilmente. Ese código común se escribirá en un procedimiento que previamente habremos
insertado en este módulo, y lo citaremos por su nombre desde cualquier parte del programa.

¿Cual es el nombre de un procedimiento existente dentro de un módulo ? Depende. Si


estamos ejecutando código escrito en otro procedimiento dentro del mismo módulo, es
decir, si estamos dentro de ese mismo módulo, basta con citarlo por su nombre : p.e., si en
el MóduloA tenemos un procedimiento llamado Procedimiento1, y queremos llamarle
desde una línea de código dentro de ese mismo módulo, basta con referirse a él con :

Procedimiento1

Si la línea de código donde nos vamos a referir a él está fuera de MóduloA, deberemos
referirnos a ese procedimiento con :

MóduloA.Procedimiento1

Lo mismo podemos decir para cualquier procedimiento insertado en un formulario. Desde


dentro del formulario basta con referirse a él citándolo por su nombre. Desde fuera de ese
formulario deberemos citarle como :

Formulariox.Procedimientoy

donde damos por hecho que Formulariox es el nombre del formulario que lo contiene, y
Procedimientoy es el nombre del procedimiento.

Fíjese en el punto usado como separador entre el nombre del formulario y el nombre del
procedimiento. VB usa como separador un punto. Usa el separador para separar el nombre
de un control y una de sus propiedades (Label1.Caption), para separar el nombre del
formulario del nombre de uno de sus controles (Formulario1.label1.caption) Se irá
familiarizando con la terminología VB según vayamos avanzando en el curso.

Funciones
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Al igual que introducimos Procedimientos, podemos introducir Funciones en nuestra
aplicación. Una Función es un Procedimiento al que le pasamos uno o varios parámetros.
(O Ninguno) Verá los Procedimientos y funciones mas adelante (Cap. 15). Al igual que los
Procedimientos, pueden ser públicas (se verán en toda la aplicación) o privadas (se verán
solamente en el formulario donde estén.

Main

Merece la pena pararse un poco para estudiar el Procedimiento Main. Para verlo con mas
detalle, comentaremos como comienza a trabajar una aplicación realizada en Visual Basic.

Imaginemos una aplicación que tiene 3 Formularios. En cada uno de ellos tiene código.
Logicamente la aplicación tendrá que presentar uno de ellos en primer lugar. Deberemos
decirle a Visual Basic cual es el formulario inicial, y será ese por el que empiece. En ese
formulario dispondremos el código necesario para que la aplicación se ejecute en el orden
deseado.

Si hacemos click en la Barra de Menú de Visual Basic, en Herramientas | Opciones


obtendremos el siguiente cuadro de diálogo :

Verá que tiene 4 pestañas, y actualmente tiene abierta la pestaña correspondiente a


Proyecto, y tiene desplegada una lista donde nos pide el Formulario Inicial. En esa lista
figura también la expresión Sub Main. Si ponemos como formulario inicial uno de los
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
formularios, la aplicación comenzará por ese formulario. Si en uno de los Módulos
existentes en el proyecto, ponemos un procedimiento llamado Main, podemos comenzar la
ejecución de la aplicación justamente por ese procedimiento. En ese procedimiento
pondremos el código necesario para que, posteriormente, se muestre uno de los
formularios. Esto es muy practico cuando queremos hacer una función previa a mostrar
cualquier formulario (abrir una base de datos, por ejemplo). Para comenzar la aplicación
por Main se elige esa opción en la lista Formulario Inicial.

¡ Recuerde que Main debe estar en un Módulo !

El cuadro de diálogo anterior sirve además para otras cosas. Entre ellas poner el nombre del
proyecto (nombre que no aparecerá por ninguna parte, solo en los datos internos de la
aplicación) y su descripción.

En otra pestaña podemos configurar varias prestaciones del entorno de trabajo :

Guardar la aplicación antes de ejecutar. Esta prestación nos va a evitar muchos


disgustos. Es muy práctico guardar la aplicación antes de ejecutarla, pues de esta forma
evitamos que, si nuestra aplicación tiene un error tal que hagamos colgarse a Windows,
siempre tendremos la aplicación metida en el disco duro. Pero también es una pequeña
pesadez tener que esperar a que se guarde cada vez que la ejecutamos.

Si tenemos la activada la casilla Declaración de variables requerida nos pondrá


automáticamente Option Explicit en el encabezamiento de todas las secciones de
declaraciones de la aplicación.

Podemos elegir también las ventanas que queremos que estén siempre visibles, y que
verifique automáticamente la sintaxis de una instrucción en el momento de escribirla.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net

La pestaña de Editor nos permite fundamentalmente 2 cosas :

Ver solamente el código correspondiente al procedimiento que estamos escribiendo ó Ver


el código del Módulo (o Formulario) completo. En este último caso es un poco mas difícil
de manejar la ventana de código, sobre todo si el programador no está muy habituado a
ello. Le presenta procedimiento tras procedimiento, separados por una línea. Para
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
seleccionar una u otra opción hay que seleccionar o deseleccionar la casilla Ver módulo
completo.

Cambiar el color de la letra y del fondo del código, según el tipo que sea (código,
comentario, error devuelto, etc.). Los alumnos mas aventajados y con ganas de marear al
profesor y, lo que es peor, a sus compañeros, conocen la forma de poner como invisible
una parte del texto del código. Si observa comportamientos raros en el texto donde escribe
el código, revise el cuadro de Colores de Código.

Visual Basic - Guía del Estudiante Cap. 2

FORMULARIO

____________

El primer objeto Visual Basic con que nos encontramos es el FORMULARIO. De hecho,
cada vez que iniciamos Visual Basic (VB) nos presenta en pantalla un nuevo formulario,
que tiene por defecto el nombre de Form1

El Formulario es un objeto, que sirve de soporte de otros objetos. El nombre de


FORMULARIO lo toma precisamente porque, al igual que un formulario de papel contiene
textos escritos, lugares donde podemos escribir, figuras, cajas donde podemos elegir una u
otra opción, etc., en este cuadro gráfico que llamamos formulario, podemos introducir
textos escritos, lugares donde podemos escribir, figuras, cajas donde podemos elegir una u
otra opción ....

En realidad un formulario es lo que normalmente conocemos por VENTANA. El nombre


de formulario le viene muy bien cuando ese formulario es una ventana donde vamos a
introducir datos alfanuméricos. Cuando en vez de introducir datos, lo que tenemos es, por
ejemplo, una ventana donde se reproducen exactamente los controles de operación de una
máquina, parece en principio que sería mas correcto el nombre de "ventana". De alguna
forma lo hay que llamar, y esa forma es FORMULARIO. Posiblemente a lo largo de estos
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
apuntes nos referiremos al formulario con el nombre de ventana, o incluso, pantalla.
Procuraremos usar el nombre apropiado: FORMULARIO.

Forma inicial del formulario.


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Ejemplo de un formulario para una aplicación industrial. Este formulario reproduce el panel
de control de un transmisor - receptor de radio. En este caso, parece que el nombre de
ventana le viene mejor que el de formulario. Observe que dentro del formulario existen
gran cantidad de objetos. Botones, que hacen la misma función que el botón real en el
equipo de radio, y un par de displays, que muestran un texto, en este caso las frecuencias de
transmisión y recepción.

Como cualquier objeto Visual Basic, un formulario tiene propiedades y procedimientos:

PROPIEDADES.

Name Nombre

Define al objeto durante la ejecución del programa. Se introduce en tiempo de diseño y no


se puede variar durante la ejecución. Nombre por defecto: Form1 (Form2 y sucesivos) Este
nombre por defecto debe cambiarse, (debería cambiarse por norma en el momento de
introducir el formulario), ya que de no hacerlo corremos el riesgo de borrar el código
existente de otro formulario del mismo nombre en el momento de guardar la aplicación.

Caption Título

Es el texto que aparecerá en la barra de Título cada vez que aparezca en pantalla este
formulario. No tiene otra función dentro del programa. El programa no accede a este
formulario por el título, sino por el nombre. Puede cambiarse en tiempo de ejecución.

NOTA.- No confundir Nombre (Name) con Título (Caption)

Control BoxControl "menos" del Formulario Valor por defecto : True

Propiedad booleana que admite los valores de true (verdadero) o False (Falso). Si esta
propiedad es True, aparecerá en la esquina superior izquierda el "menos" para desplegar el
menú de control de este formulario. Si esta propiedad se pone como False, no existirá dicho
"menos" y por tanto no se puede desplegar dicho menú.

MinButton

MaxButton Valor por defecto: True

Botones (flechas) de minimizar y maximizar este formulario. Son igualmente propiedades


booleanas, que admiten el valor True o False. Si están en true, aparecerá la flecha
correspondiente. Si están en False, no aparecerá dicha flecha. Deben configurarse de una u
otra forma, dependiendo si se quiere minimizar / maximizar este formulario durante la
ejecución.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Nota. En los formularios MDI child, es necesario poner a true las propiedades
ControlBox, MinButton y MaxButton para poder maximizar el formulario hijo. De no
ponerlas a true, sí se pretende maximizar el formulario hijo, (Propiedad WindowState=2)
el formulario no aparece.

BorderStyle Tipo de borde

Define el tipo de borde que tendrá el formulario durante la ejecución. No se puede cambiar
en tiempo de ejecución,

Admite los siguientes valores:

0 - None El formulario no tiene borde alrededor

1 - Fixed Single

El formulario tendrá un borde fino, y no podrá cambiarse su tamaño durante el tiempo de


ejecución. Con este valor, el formulario puede tener un menú de control, barra de título y
botones de maximizar y minimizar. Solo podrá cambiarse de tamaño utilizando estos
botones.

2-Sizable

El formulario tendrá borde grueso, y se podrá cambiar su tamaño en tiempo de ejecución


mediante los botones de maximizar y minimizar, y mediante el arrastre de uno de los
bordes con el ratón.

3 - Fixed Dialog

El formulario tendrá borde grueso, y no se podrá redimensionar durante la ejecución. No


puede tener los botones de maximizar ni minimizar.

4 - Fixed ToolWindow

En las versiones de 16 bits de Windows y Windows NT 3.51 y anteriores se comporta


como Fixed Single. No puede cambiar de tamaño. En Windows 95 muestra el botón Cerrar,
y el texto de la barra de titulo aparece con un tamaño de fuente reducido. El formulario no
aparece en la barra de tareas de W95.

5 - Sizable ToolWindow

En las versiones de 16 bits se comporta como Sizable. En W95 muestra el botón Cerrar y el
texto de la barra de titulo aparece con un tamaño de fuente reducido. El formulario no
aparece en la barra de tareas de W95.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Valor por defecto: 2 . Sizable

Nota: Al cambiar a determinados valores, las propiedades MaxButton y MinButton se


ponen a False. Pueden cambiarse a True posteriormente.

AppearanceApariencia Valor por defecto: 3D

Admite los valores 0 (=Flat, plano) y 1 (=3D) Si tiene el valor 1 (3D), el formulario
aparecerá con cierto efecto tridimensional, y los controles que le introduzcamos a este
formulario aparecerán como esculpidos dentro de él. Con valor 0 (Flat) en esta propiedad,
el formulario aparecerá durante la ejecución como una superficie plana. El color de fondo
se ve afectado al cambiar esta propiedad. Si se cambia a 3D, el fondo (Backcolor) toma el
color definido en Windows en el Panel de Control. Si se cambia a Flat, toma el color blanco

Autoredraw Valor por defecto: False

Propiedad booleana. Esta propiedad, estando en True, permite actualizar el contenido del
formulario y de sus controles incluso cuando no están visibles. Imaginemos que en este
formulario existe un texto, una etiqueta (Label) o caja de texto (Text Box) cuyo texto se
haya cambiado, bien por programa, bien por una entrada, mientras este formulario no
estaba visible. Lo mismo podemos decir de las propiedades de cualquier otro control. Si
esta propiedad Autoredraw está en False, al hacer visible este formulario, aparecerá igual
que cuando se ocultó. Si esta propiedad está en True, aparecerá actualizado.

Backcolor Color del fondo

Establece el color del fondo del formulario. Puede cambiarse en tiempo de ejecución.

Valor por defecto: El establecido en el Panel de Control de Windows.

ClipControls Valor por defecto: False

Propiedad Booleana. Establece si un evento Paint vuelve a dibujar el objeto entero (True) o
si solamente dibujan las partes que han sufrido cambios (False)

DrawMode

Establece un valor que determina el aspecto de la salida de un método gráfico o el aspecto


de un control Shape o Line. Verá mas adelante los efectos de esta propiedad.

DrawStile Valor por defecto : 0

Establece el estilo de línea de la salida de métodos gráficos:


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Valores: 0 - Línea continua

1 - Rayas

2 - Puntos

3 - Raya-Punto

4 - Raya - Punto - Punto

5 - Transparente

6 - Continuo interior.

DrawWidth Valor por defecto: 1

Establece el ancho de una línea dibujada. El valor debe expresarse en pixeles.

Enabled Activado Valor por defecto: True

Propiedad booleana. Si está en True, el formulario está activado y se puede interactuar con
él. Si está en False, se desactiva el formulario, impidiendo de esta forma, que se pueda
trabajar con él.

ForeColor Valor por defecto: Negro

Establece el color del primer plano del formulario. Es el color que tendrán las letras si
escribimos en él, o los dibujos, si lo que hacemos es dibujar. En tiempo de diseño,
determina el color de la rejilla,.

FillStyleTipo de relleno Valor por defecto: 2

Establece el modo de rellenar controles Shape, o figuras (círculos o cuadrados) creados con
los métodos gráficos Circle y Line.

Valores: 0 - Continuo

1 - Transparente

2 - Línea Horizontal

3 - Línea Vertical

4 - Diagonal hacia arriba


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
5 - Diagonal hacia abajo

6 - Cruzado

7 - Diagonal cruzada

FillColorColor de relleno

Especifica el color del relleno contemplado en FillStyle.

FontTipo de letra Valor por defecto: El determinado en la personalización.

Especifica el tipo y tamaño de la letra que se usará en el formulario. Al seleccionar esta


propiedad en la ventana de propiedades, aparece un cuadro de dialogo donde se eligen
ambos parámetros.

Cuando introduzca nuevos controles en el Formulario, la propiedad Font de estos controles


tomará el valor que tenga esta propiedad en el Formulario. Puede servirle este pequeño
truco para utilizar en todos los controles una determinada fuente sin tener que teclearla para
cada control.

FontTranparentTexto Transparente Valor por defecto: True

Establece si el texto o gráfico de fondo del formulario se muestra (True) o no se muestra


entre los caracteres de texto escritos en el propio formulario.

FontSize Tamaño de letra

Establece el tamaño de la letra. Esta propiedad, que puede variarse en tiempo de ejecución,
varía solamente el tamaño, y no el tipo de letra. El tamaño debe expresarse en puntos.
Máximo, 2160 puntos.

FontBold, FontItalic, FontStrikethru, FontUnderline

Permiten, en tiempo de ejecución, cambiar un texto a negrita, cursiva, tachado y subrayado.


Son propiedades booleanas True / False

HeightAltura Valor por defecto: No existe

Define la altura del formulario. El valor de esta propiedad no se introduce normalmente


como un dato numérico, sino que toma el valor automáticamente, dependiendo de las
dimensiones del formulario durante el tiempo de diseño. Puede cambiarse durante el tiempo
de ejecución.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
HelpContextID Valor por defecto: 0

Establece un número de contexto asociado para este formulario. Este número se aplica para
determinar la ayuda interactiva asociada a este formulario. Vea mas adelante, el tema
Ayuda de Windows.

Puede tomar los siguientes valores : 0 - No se especifica número de contexto

>0 Un entero que especifique un contexto válido.

IconIcono

Esta propiedad define el icono que va a representar a este formulario cuando esté
minimizado. Si el formulario es el formulario padre o formulario de inicio de una
aplicación, este icono es el que toma el Asistente de Instalación para colocarlo como icono
de apertura del programa en el grupo de programas Windows correspondiente. Como valor
de esta propiedad se le puede asignar directamente el icono o el nombre de un archivo (con
su path correspondiente) que lo contiene, haciéndolo directamente sobre la caja de
propiedades.

Valor por defecto: el icono que se le haya programado en la personalización.

KeyPreview Valor por defecto: False

Propiedad Booleana. Cuando un formulario tiene dentro de sí varios controles, uno de ellos
es el que está activo. En estas condiciones, si se pulsa una tecla, esa pulsación la recibe en
primer lugar el control que esté activo, y si éste no la procesa, pasa esa pulsación al
formulario. Para hacer que esa pulsación pase directamente al formulario, debe ponerse esta
propiedad en True.

LeftBorde Izquierdo Valor por defecto: No existe

Indica la posición del borde izquierdo del formulario. Normalmente no se introduce como
valor numérico, sino que lo toma automáticamente de la posición que tenga el formulario
en el tiempo de diseño. Puede cambiarse en tiempo de ejecución, para mover el formulario.

LinkMode Valor por defecto: 0

Permite que una aplicación destino inicie una conversación DDE con el formulario (origen
de datos). Puede tomar los siguiente valores:

0 - No hay interacción DDE


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
1 - Source. Indica que este Formulario es origen de una comunicación DDE. El dato que se
va a traspasar en esa comunicación DDE estará en un TextBox, en un Label o en un
PictureBox de este Formulario.

LinkTopic

Establece el tema al que este formulario va a responder a una conversación DDE, cuando
funciona como origen. Es por este tema por el que se debe llamar a este formulario cuando
actúa de origen en una conversación DDE

MDIChild Valor por defecto: False

Establece que este formulario es un formulario Hijo dentro de un formulario MDI. No se


puede cambiar en tiempo de ejecución. Es una propiedad booleana

True = es formulario hijo False =No lo es

MouseIcon Valor por defecto: ninguno

Establece un icono personalizado para el puntero del ratón cuando esté encima de este
Formulario. Este icono puede ser un bit-map de los existentes en el directorio Icons de
Visual Basic o cualquiera que tengamos. Si se pone 99 como valor de la propiedad
MousePointer (siguiente), cada vez que el puntero del ratón pase por este Formulario,
cambiará su forma y adoptará la del icono elegido.

MousePointer Valor por defecto: flecha

Determina la forma del puntero del ratón cuando se coloca encima del formulario. Puede
elegirse uno de los punteros preestablecidos (15 en total) o el personalizado visto en la
propiedad anterior. Para elegir ese icono personalizado, debemos poner en esta propiedad el
valor 99.

Picture Gráfico Valor por defecto: No existe

Mediante esta propiedad podemos poner un gráfico como fondo del formulario. El gráfico
puede ser un bit-map o un fichero .ICO

ScaleHeight, ScaleWidth, ScaleMode,

Indican la unidad de medida de dimensión de altura y anchura del Formulario. ScaleMode


indica en qué unidades de medida se van a medir esas dimensiones. Acepta Twips (1),
Point(2), Pixel (3), Character (4), Pulgadas (Inch) (5), Milímetros (6), Centímetros (7). Si
colocamos la propiedad ScaleMode en cualquiera de estos valores, las propiedades
ScaleHeight y ScaleWidth nos vendrán dadas automáticamente dependiendo del ancho del
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Formulario, y no se extrañe si encuentra para estas propiedades valores tan peregrinos
como 4815 y 7423. Al haber elegido la unidad de medida, los valores de ancho
(ScaleWidth) y alto (ScaleHeight) serán los que tengan que ser, medidos en la unidad que
hemos elegido. Podemos elegir una cifra para el ancho y el alto del Formulario de forma
que podamos controlar mejor las distintas posiciones que van a ocupar en él los controles,
los textos o los dibujos. Podemos poner, por ejemplo, que el Formulario mida 400 de ancho
(ScaleWidth = 400) y 300 de alto (ScaleHeight = 300) forzándole estas propiedades, bien
en tiempo de diseño en la caja de propiedades, o en tiempo de ejecución mediante código.
Entonces sabemos que el formulario, independientemente de las dimensiones físicas que
tenga sobre la pantalla, medirá 400 de ancho y 300 de alto, y si en estas condiciones
queremos colocar un control o un dibujo justo en el medio del Formulario, sabemos que
tenemos que colocarle en las coordenadas 200, 150. ¿Que unidad de medida estaremos
utilizando entonces en el Formulario ? Unas definidas por el usuario (distintas para el ancho
y el alto) que serán las necesarias para que el Formulario mida de ancho lo que le hayamos
puesto en la propiedad ScaleWidth y de alto lo que le hayamos puesto en la propiedad
ScaleHeight. Observe que la propiedad ScaleMode se ha cambiado automáticamente a
User (0) al introducir las dimensiones de ancho y alto que nosotros queremos.

Estas unidades de medida afectarán a los controles que metamos en este Formulario. Se
medirán en su ancho y alto con la unidad de medida definida para el ancho y alto del
Formulario. Lógicamente también afectará a las propiedades Left y Top de los controles,
pero estas propiedades se verán afectadas además por las propiedades ScaleLeft y
ScaleTop del Formulario que se verán a continuación.

ScaleLeft, ScaleTop

Estas propiedades, medidas en la unidad de medida elegida para el ancho y alto mediante
las propiedades ScaleMode, ScaleWidth y ScaleHeight anteriores, expresan las
coordenadas iniciales de la parte izquierda y de la parte superior respectivamente del
Formulario. Estas propiedades no afectan a la posición del Formulario en la pantalla (Si
está maximizado seguirá ocupando toda la pantalla, si está en "Normal" ocupará el mismo
sitio que se dio en tiempo de diseño). Supongamos que se le asigna a un Formulario, las
propiedades ScaleWidth = 400, y ScaleHeight = 300. Si colocamos un control justamente
en el centro del Formulario tendrá sus propiedades Top =150 y Left=200. Si ponemos
ahora las propiedades del Formulario ScaleLeft a 30 y ScaleTop a 10, ese control, para
seguir en el centro del Formulario deberá tener sus propiedades Top a 160 (150 + 10) y
Left a 230 (200 + 30).

Recuerde que las medidas de un formulario crecen, desde la esquina superior izquierda,
según avanzamos hacia abajo y hacia la derecha.

Como aclaración de las relaciones entre distintas unidades de medida, puede ver en la
siguiente table la correspondencia entre cada una de ellas y la unidad imaginaria Twip.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
1 Point=20 Twips ; 1Pixel=15 Twips : 1 Charecter=240 Twips ; 1 Inch (pulgada) =1440
Twips 1mm=56,52 Twips 1 cm=566 Twips

Tag Valor por defecto: No existe

Esta propiedad no la usa directamente Visual-Basic. Sirve para asociar al formulario


información adicional para fines externos a la programación. Pero también le puede servir
para almacenar en ella una variable para que la use un código ajeno al formulario. El autor
de estos apuntes tiene por costumbre utilizar la propiedad Tag del formulario inicial para
guardar el parámetro que se le pasa a algunos programas para acceder a ellos con unos
determinados privilegios. Resumiendo, está ahí para lo que el programador quiere.

TopPosición del borde superior Valor por defecto: No existe

Esta propiedad establece la posición del borde superior del formulario. Normalmente no se
introduce como valor numérico sino que lo toma automáticamente de la posición que tenga
el Formulario durante el tiempo de diseño Este valor puede cambiarse durante la ejecución
para, conjuntamente con Left, variar la posición del Formulario. Los valores de Top y Left
definen la esquina superior izquierda del Formulario.

Visible Valor por defecto: True

Propiedad Booleana. Asignándole el valor True la pantalla es visible, y asignándole el valor


False, no se ve. Este valor puede cambiarse durante el tiempo de ejecución para ocultar y
hacer visible el formulario.

WidthAncho Valor por defecto: No existe

Define la anchura del formulario. Normalmente no se introduce como valor numérico sino
que lo toma automáticamente del tamaño que tenga el formulario durante el tiempo de
diseño. Juntamente con Height define el tamaño del formulario. Puede cambiarse durante
el tiempo de ejecución.

WindowState

Establece el estado en el que aparecerá el formulario cuando se activa y presenta en


pantalla. Admite tres opciones:

0 - Normal El formulario recupera la posición y tamaño que tenía en el tiempo de diseño.

1 - Minimizado El formulario aparece minimizado, representado por su icono.

2 - Maximizado El formulario aparece maximizado, ocupando toda la pantalla.


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
PROCEDIMIENTOS

ActivateActivación ClickClick

DblClickDoble click DeactivateDesactivación

DragDropArrastrar y soltar DragOverArrastrar por encima

GotFocusObtener el foco KeyDown Mantener pulsada una tecla

KeyPressPulsar una tecla KeyUpSoltar una tecla

LinkErrorError de enlace LinkExecuteEjecución de un enlace de datos

LinkOpenRomper el enlace LoadCargar el formulario

LostFocusPerder el foco MouseDownPulsar una tecla del ratón

MouseMoveMover el ratón (Detecta la posición del ratón sobre el formulario)

MouseUpSoltar una tecla del ratón PaintPintar

QueryUnloadConfirmación de descarga ResizeCambio de tamaño

UnloadDescargar el formulario

Un Formulario sirve, fundamentalmente, de contenedor de controles. Es la ventana de


Windows de nuestra aplicación. Una aplicación puede tener varios Formularios y dentro de
cada uno de ellos, los controles necesarios para cada paso o estado de la aplicación.

Un Formulario puede servir también como soporte de textos o dibujos.

CONTROLES

Una vez introducido un Formulario, se pueden colocar los objetos (controles) que forman
parte de la aplicación. Estos controles se irán viendo en próximos capítulos.

Los controles, lo mismo que el Formulario, tienen Propiedades y Procedimientos.

Las Propiedades definen las características del Control. Los Procedimientos definen la
forma de actuar (la forma de proceder) de un control frente a un evento.

Tanto las propiedades como los procedimientos deben ser definidos por el programador.
Las propiedades dejan un pequeño margen de actuación, los procedimientos son en su
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
totalidad, definidos por el programador. Estos procedimientos forman parte del programa.
Podría incluso hacerse una aplicación que no tuviese mas código que el introducido en los
procedimientos.

Para colocar un control en un Formulario, basta con "tomarlo" de la caja de herramientas


existente en la parte izquierda de la pantalla de VB y llevarlo al Formulario. Si no existiese
el control deseado en la caja de herramientas, deberemos ir a "cogerlo" a Controles
personalizados que está en el menú desplegable Herramientas de la barra de Menú de VB.
Se elige el nuevo control, marcando la caja de opción a la izquierda de su nombre, y
haciendo click en ACEPTAR. Este control ya pasa a la caja de herramientas.

COMMAND BUTTONBOTON DE COMANDO

_______________________________________

El Command Button es un objeto que sirve para introducir datos a través de la pantalla. El
Botón de Comando tiene la siguiente forma:

El botón de comando puede usarse para la entrada de datos con el ratón, o para validar
cualquier operación. El tamaño puede cambiarse a voluntad, pero la forma siempre es
rectangular. En la figura anterior vemos dos botones de comando, uno de ellos (el
Command2) marcado con unos puntos en su contorno. Estos puntos nos permiten variar su
tamaño en tiempo de diseño. También puede cambiarse su tamaño y posición en tiempo de
ejecución.

PROPIEDADES

NameNombre

Es el nombre que define a este objeto durante la ejecución del programa. No se puede
cambiar en tiempo de ejecución. El nombre por defecto es Command1, Command2, etc.
Estos nombres por defecto deberían cambiarse por otros que nos indiquen algo respecto a
este control, aunque en este caso no es tan imprescindible como para los formularios.

CaptionTítulo

Es el texto que aparece en el botón. Puede cambiarse en tiempo de ejecución. No tiene otra
función dentro del programa.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
NOTA.- No confundir Nombre (Name) con Título (Caption)

Appearance Apariencia

Determina la forma del botón. Admite los valores de Flat (Plano) y 3D. No se aprecia en
gran medida la diferencia.

BackcolorColor de fondo

Es el color de un pequeño cuadrado que aparece rodeando el título, NO el color del botón,
que es invariable. Puede cambiarse en tiempo de ejecución.

Cancel

Establece un valor que indica si un botón de comando es el botón Cancelar de un


formulario. Es una propiedad booleana, y admite los valores True o False. Puede utilizar la
propiedad Cancel para dar al usuario la opción de cancelar los cambios que no se han hecho
efectivos y devolver el formulario a su estado anterior. En un formulario sólo puede haber
un botón de comando con la propiedad Cancel = True.

Default

Establece un valor que determina el control CommandButton que es el botón de comando


predeterminado de un formulario. Sólo un botón de comando de un formulario puede ser el
botón de comando predeterminado. Cuando Default se define a True para un botón de
comando, se define automáticamente a False para el resto de los botones de comando del
formulario. Cuando la propiedad Default del botón de comando está establecida a True y su
formulario primario está activo, el usuario puede elegir el botón de comando (invocando su
evento Click) presionando ENTRAR. Cualquier otro control que tuviera el enfoque no
recibe evento de teclado (KeyDown, KeyPress o KeyUp) de la tecla ENTRAR a menos que
el usuario haya movido el enfoque a otro botón de comando del mismo formulario. En este
caso, al presionar ENTRAR se elige el botón de comando que tiene el enfoque en lugar del
botón de comando predeterminado.

DragIcon

Establece el icono que se presenta como puntero en una operación de arrastrar y colocar.

DragMode

Establece un valor que determina si se usa el modo de arrastre manual o automático en una
operación de arrastrar y colocar. Los valores posibles de número son:

0 Manual (Predeterminado)
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
1 Automático

Enabled Habilitado

Propiedad Booleana que habilita o deshabilita el botón. Cuando está deshabilitado (Enabled
= False), el botón no tiene efecto, y su apariencia varía, presentando un tono pálido tanto en
su cuerpo como en su título. Puede variarse en tiempo de ejecución.

Font Fuente

Es el tipo de letra para el título. Puede cambiarse en tiempo de ejecución.

Height Altura

Establece la altura del botón. Normalmente esta propiedad no se introduce numéricamente,


sino que la toma automáticamente de las dimensiones que se le den al botón en tiempo de
diseño. Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecución.

HelpContextID

Establece un número de contexto asociado para este control. Este número se aplica para
determinar la ayuda interactiva.

Puede tener los siguientes valores:

0 = No se especifica número de contexto

>0 Un entero que especifica un contexto válido.

Index Indice

En el caso de que se tengan varios botones que realicen una función similar (Las teclas
numéricas de una calculadora, p.e.) puede hacerse un array con estos botones de comando.
Todos tendrán el mismo nombre, y se diferencian por un índice. Esta propiedad Index toma
el número de ese índice.

Left

Posición de su parte izquierda. Indica la posición del botón, concretamente de la parte


izquierda del mismo. Normalmente esta propiedad no se introduce numéricamente, sino
que la toma automáticamente de la posición que se le de al botón en tiempo de diseño.
Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecución.

MouseIconIcono para el puntero del ratón


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Determina el icono que presenta al puntero del ratón cuando pasa por encima del botón,
cuando se especifica en la propiedad MousePointer que el puntero del ratón es el definido
por el usuario. (Custom)

MousePointer Puntero ratón

Determina la forma del puntero del ratón cuando éste pasa por encima del botón. Puede
elegirse uno de los punteros preestablecidos (15) o incluso uno diseñado especialmente.
Para especificar que el puntero es uno diseñado especialmente, hay que poner a esta
propiedad el valor 99 (Custom), y en este caso aparecerá el icono determinado por la
propiedad MouseIcon

TabIndex Nº de orden para tabulador

Cuando disponemos de varios controles en un mismo formulario, solamente uno de ellos


tiene el foco. Esta expresión de tener el foco significa que ese control está remarcado y en
esa condición, si pulsamos la tecla ENTER haría el mismo efecto que hacer click con el
ratón en ese control. Esto es necesario, ya que existen ordenadores que no disponen de
ratón (típico de algunos portátiles). En estos casos, para elegir uno u otro control debemos
pulsar repetidas veces la tecla TABulador. El foco irá cambiando de uno a otro control
(pueden ser controles de distinto tipo) cada vez que pulsemos la tecla TABulador. Esta
propiedad TabIndex marca el orden que seguirá el foco a través de cada control.

TabStopSale del control de la tecla TAB

Propiedad booleana. Cuando esta propiedad está a False, el botón no tomará el foco cuando
se pulse la tecla del Tabulador. Sin embargo sigue manteniendo el índice de la propiedad
TabIndex descrita anteriormente. Puede cambiarse en tiempo de ejecución. Esto nos
permite descartar algún botón de tomar el foco, cuando por facilidad para el usuario, sea
conveniente en determinados puntos del programa.

Tag

Esta propiedad no la usa directamente Visual-Basic. Sirve para asociar a este control alguna
información adicional para fines externos a la programación. Similar a la del formulario.

Top

Indica la coordenada de la parte superior del control. Puede variarse durante el tiempo de
ejecución. Esta propiedad, juntamente con Left definen la esquina superior izquierda del
botón de comando. Normalmente esta propiedad no se introduce numéricamente, sino que
la toma automáticamente de la posición que se le den al botón en tiempo de diseño. Puede
cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecución.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
VisibleVisible

Propiedad Booleana. Si es true, el botón se ve, si es False el botón no se ve. Puede


cambiarse en tiempo de ejecución. De hecho, es un recurso muy usado para dejar visibles
en un formulario, solamente los objetos (controles) necesarios.

WhatThisHelpID (Propiedad, Windows 95)

Devuelve o establece un número de contexto asociado a un objeto. Se utiliza para dotar a


las aplicaciones de Ayuda interactiva con el menú emergente ¿Qué es esto? de la Ayuda de
Windows 95.

Width Ancho

Define el ancho del botón. Con Height determina la dimensión del botón.

PROCEDIMIENTOS DEL BOTON DE COMANDO

Click DragDrop DragOver GotFocus

KeyDown KeyPress KeyUp LostFocus

MouseDown MouseMove MouseUp

¡ El botón de Comando no tiene el procedimiento DbClick !

LABEL ETIQUETA

____________________

Una etiqueta es un control que nos permite presentar un texto. La etiqueta debe usarse en
aquellos casos en los que exista una información estática o dinámica que no deba ser
cambiada por el operador.

Puede adoptar estas formas: con borde tridimensional, borde plano o sin borde, y el texto
justificado a la izquierda, a la derecha o centrado.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net

Se ha incluido la trama para poder observar los límites de la etiqueta sin borde.

PROPIEDADES

AlignmentJustificación

Establece si el texto se justifica a la izquierda, a la derecha, o se centra sobre la etiqueta.

Appearance Apariencia Plana o tridimensional.

AutosizeTamaño

Propiedad booleana. Si se pone a True, el tamaño de la etiqueta se ajusta al texto que


contiene.

BackcolorColor de fondo

Es el color de fondo de la etiqueta. Puede cambiarse en tiempo de ejecución.

BackStyle Tipo de fondo

Opaco o transparente. Cuando se selecciona transparente, se ve solamente el texto de la


etiqueta. Cuando se selecciona opaco, este texto se vé sobre un fondo gris.

BorderStyleTipo de borde

Sin borde o con borde. En caso de haber elegido en la propiedad Appearance el modo
tridimensional, y eligiendo con borde en esta propiedad, el aspecto adopta una forma como
incrustada en el formulario.

CaptionTítulo
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Es el texto de la etiqueta. Puede cambiarse en tiempo de ejecución, lo que permite usar la
etiqueta como dispositivo de presentación de textos. No se puede cambiar por el
procedimiento de arrastrar con el ratón, por lo que es el control adecuado cuando se quiere
presentar un texto que no se pueda cambiar por el operador.

DataField DataSource

Establecen la base de datos y el campo donde está el texto Datos que se llevará a la
propiedad Caption. Estas propiedades permiten presentar los datos de una Base de Datos
mediante un procedimiento muy sencillo, con la ayuda de un control Data (Se verá mas
adelante)

DragIcon

Establece el icono que se presenta como puntero en una operación de arrastrar y colocar.

DragMode

Establece un valor que determina si se usa el modo de arrastre manual o automático en una
operación de arrastrar y colocar. Los valores posibles de número son:

0 Manual (Predeterminado)

1 Automático

Enabled Habilitado

Propiedad Booleana que habilita o deshabilita la etiqueta Cuando está deshabilitado


(Enabled = False), no tienen efecto los eventos que se produzcan sobre ella, y su apariencia
varía, presentando un tono pálido tanto en su cuerpo como en su título. Puede variarse en
tiempo de ejecución.

Font Fuente

Es el tipo de letra para el título. Puede cambiarse en tiempo de ejecución.

ForeColor

Es el color de la letra de la etiqueta. Puede cambiarse en tiempo de ejecución.

Height Altura
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Establece la altura de la etiqueta. Normalmente esta propiedad no se introduce
numéricamente, sino que la toma automáticamente de las dimensiones que se le den a la
etiqueta en tiempo de diseño.

Index Indice

En el caso de que se tengan varios etiquetas que realicen una función similar puede hacerse
un array con etiquetas. Todas tendrán el mismo nombre, y se diferencian por un índice. Esta
propiedad Index toma el número de ese índice.

Left Posición de su parte izquierda

Indica la posición de la etiqueta, concretamente de su parte izquierda. Normalmente esta


propiedad no se introduce numéricamente, sino que la toma automáticamente de la posición
que ocupaba en tiempo de diseño. Puede cambiarse, cambiando el valor a esta propiedad,
en tiempo de ejecución.

LinkItem LinkMode LinkTimeout LinkTopic

Estas propiedades establecen la forma en que debe llevarse a cabo una conexión DDE con
otra aplicación. Se verán con mas detalle al estudiar los enlaces DDE

MouseIconIcono del puntero del ratón

MousePointer Puntero ratón

Para estas propiedades es aplicable todo lo dicho para las mismas en el Botón de Comando

NameNombre

Es el nombre de la etiqueta con el que se le conocerá a lo largo del programa

TabIndex Nº de orden

Al igual que para los botones de comando, la etiqueta tiene propiedad TabIndex. Sin
embargo, una etiqueta NUNCA tomará el foco. Vea la propiedad UseMneumonic mas
adelante.

Tag

Esta propiedad no la usa directamente Visual-Basic. Sirve para asociar a este control alguna
información adicional para fines externos a la programación.

Top
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Indica la coordenada de la parte superior del control. Puede variarse durante el tiempo de
ejecución. Esta propiedad, juntamente con Left definen la esquina superior izquierda del
botón de comando. Normalmente esta propiedad no se introduce numéricamente, sino que
la toma automáticamente de la posición que se le den a la etiqueta en tiempo de diseño.
Puede cambiarse, cambiando el valor a esta propiedad, en tiempo de ejecución.

UseMneumonic

Devuelve o establece un valor que indica si al incluir el signo (&) en el texto de la


propiedad Caption del control Label se define una tecla de acceso. Es una propiedad
Booleana.

Los valores que puede tomar son True o False.

True (Predeterminado) Los caracteres (&) que aparezcan en el texto de la propiedad


Caption definen al carácter siguiente como tecla de acceso. El signo (&) no aparece en la
interfaz del control Label.

False Los caracteres (&) que aparezcan en el texto de la propiedad Caption aparecen como
tales en la interfaz del control Label.

En tiempo de ejecución, al presionar ALT+ la tecla de acceso definida en la propiedad


Caption del control Label, el enfoque se desplaza al control siguiente al control Label en el
orden de tabulación.

VisibleVisible

Propiedad Booleana. Si es true, la etiqueta se ve, si es False no se ve. Puede cambiarse en


tiempo de ejecución.

WhatThisHelpID (Propiedad, Windows 95)

Devuelve o establece un número de contexto asociado a un objeto. Se utiliza para dotar a


las aplicaciones de Ayuda interactiva con el menú emergente ¿Qué es esto? de la Ayuda de
Windows 95.

Width Ancho

Define el ancho de la etiqueta. Con Height determina la dimensión de la misma.

WordWrap
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Devuelve o establece un valor que indica si un control Label con el valor True en su
propiedad AutoSize se expande vertical u horizontalmente para adaptarse al texto
especificado en su propiedad Caption. Es una propiedad Booleana.

Esta propiedad puede cambiarse en tiempo de ejecución

True El control Label se expande o contrae horizontal y verticalmente para adaptarse al


texto y al tamaño de la fuente. Contempla para la expansión horizontal la colocación de los
espacios del texto.

False (Predeterminado) El texto no se ajusta a la siguiente línea; el control Label se


expande o contrae horizontalmente para adaptarse a la longitud del texto y verticalmente
para adaptarse al tamaño de la fuente y al número de líneas.

Nota Si se establece False en AutoSize, el texto siempre se ajustará a la línea siguiente,


independientemente del tamaño del control Label y del valor de la propiedad WordWrap.
Esto puede ocultar parte del texto, ya que el control Label no se expande en ninguna
dirección.

PROCEDIMIENTOS DEL LABEL

Click Change DbClick DragDrop

DragOver LinkClose LinkError LinkNotify

TEXT BOXCAJAS DE TEXTO

_____________________________

Las cajas de texto son los controles en los que Visual Basic presenta o introduce textos. Es
por tanto un control bidireccional. Normalmente se usan para introdución de textos, o para
la presentación de aquellos que el operador pueda cambiar. Para cambiar o escribir un texto
en una caja de texto, basta con conseguir que esa caja de texto tenga el foco y teclear el
texto en el teclado. Esto se puede lograr, bien haciendo click con el ratón en esa caja de
texto, bien con la tecla TAB, bien por programa.

La caja de texto no se debe usar nunca para presentar textos que el operador de la
aplicación no deba cambiar. Úsese para ello la etiqueta, control no bidireccional, que
además tiene la ventaja de ocupar menos memoria de programa.

Las cajas de texto pueden tener una o varias líneas, según esté la propiedad Multiline. La
capacidad máxima de una caja de textos es de 64 Kbytes.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
La forma de una caja de texto es la siguiente, dependiendo de las propiedades BorderStyle
y Appearance:

PROPIEDADES

AlignmentJustificación

Establece si el texto se justifica a la izquierda, a la derecha, o se centra sobre la etiqueta.


Esta propiedad solamente tiene efecto cuando la propiedad Multiline está a True,
ignorándose en caso contrario. Es decir, permite colocar el texto justificado a la derecha
cuando ese texto puede ser de varias líneas. Para una única línea, se justifica siempre a la
izquierda.

Esta propiedad no puede cambiarse en tiempo de ejecución, pero sí puede leerse en que
condición está.

Appearance Apariencia

Plana o tridimensional.

BackcolorColor de fondo

Es el color de fondo de la caja de texto. Puede cambiarse en tiempo de ejecución.

BorderStyleTipo de borde

Sin borde o con borde. En caso de haber elegido en la propiedad Appearance el modo
tridimensional, y eligiendo con borde en esta propiedad, el aspecto adopta una forma como
incrustada en el formulario.

DataField

DataSourceFuente de Datos
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Establecen la base de datos y el campo donde está el texto que se llevará a la propiedad
Text. Estas propiedades permiten presentar de una forma muy sencilla datos de una Base
de Datos. Se verán cuando se estudie el control Data y el motor de bases de datos

DragIcon

Establece el icono que se presenta como puntero en una operación de arrastrar y colocar.

DragMode

Establece un valor que determina si se usa el modo de arrastre manual o automático en una
operación de arrastrar y colocar. Los valores posibles de número son:

0 Manual (Predeterminado)

1 Automático

Enabled Habilitado

Propiedad Booleana que habilita o deshabilita la etiqueta Cuando está deshabilitado


(Enabled = False), no tienen efecto los eventos que se produzcan sobre el TextBox. No se
puede escribir el él ni pasarle el foco, pero sí se le puede cambiar el texto mediante el
programa. Puede ser una buena alternativa para impedir que el usuario pueda cambiar un
determinado texto. Esta propiedad puede variarse en tiempo de ejecución.

Font Fuente

Es el tipo de letra que se utilizará en el TextBox. Puede cambiarse en tiempo de ejecución.

ForeColorColor de la letra

Determina el color de las letras del texto.

Height Altura

Establece la altura de la caja de texto. Normalmente esta propiedad no se introduce


numéricamente, sino que la toma automáticamente de las dimensiones que se le den a la
caja en tiempo de diseño.

HelpContextID

Establece un número de contexto asociado para este control. Este número se aplica para
determinar la ayuda interactiva.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Puede tener los siguientes valores:

0 = No se especifica número de contexto

>0 Un entero que especifica un contexto válido.

Index Indice

En el caso de que se tengan varias cajas de texto que realicen una función similar puede
hacerse un array con ellas. Todas tendrán el mismo nombre, y se diferencian por un índice.
Esta propiedad Index toma el número de ese índice.

Left Posición de su parte izquierda.

Indica la posición de la caja de texto, concretamente de su parte izquierda. Normalmente


esta propiedad no se introduce numéricamente, sino que la toma automáticamente de la
posición que ocupaba en tiempo de diseño. Puede cambiarse, cambiando el valor a esta
propiedad, en tiempo de ejecución.

LinkItem LinkMode LinkTimeout LinkTopic

Estas propiedades establecen la forma en que debe llevarse a cabo una conexión DDE con
otra aplicación. Se verán con mas detalle al estudiar los enlaces DDE

Locked

Establece si el texto se puede editar, es decir, cambiar. Cuando se pone esta propiedad a
True, el texto existente en la caja puede resaltarse con el ratón, e incluso copiarlo al
portapapeles, pero no puede variarse tecleando un nuevo texto. Se puede cambiar por
programa, cambiando la propiedad Text.

Si está en False, puede cambiarse el texto mediante teclado.

MaxLenght

Indica, si se establece, la longitud máxima del texto.

MouseIconPuntero del ratón personalizado

MousePointer Puntero ratón

Determina la forma del puntero del ratón cuando éste pasa por encima de la caja de texto.
Puede elegirse uno de los punteros preestablecidos en esta propiedad, (15 en total) e incluso
un puntero personalizado en la propiedad MouseIcon. Para que aparezca este puntero
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
personalizado, MousePointer debe ponerse al valor 99. Lo típico para esta propiedad es el
I-Beam (barra vertical)

NameNombre

Es el nombre de la caja de texto con el que se le conocerá a lo largo del programa

PasswordChar

En ocasiones, es conveniente que no se pueda leer lo que se escribe en la caja de texto, caso
por ejemplo de la entrada de un password o palabra de paso. Esta propiedad nos permite
indicar un carácter que sustituye a cualquier carácter que tenga la caja de texto. (Típicos el
* o ?). El texto que tenga en la propiedad Text no cambia por el hecho de presentar en
pantalla un carácter distinto. Esta propiedad puede cambiarse en tiempo de ejecución. Para
quitar el PasswordChar basta con forzarlo al carácter nulo : Text1.PasswordChar = ""

Esta propiedad se ignora cuando la propiedad Multiline está a True.

ScrollBars

Cuando la propiedad Multiline de la caja de texto está a True, se pueden colocar barras de
desplazamiento del texto hacia arriba y abajo, o hacia los lados. Esto nos permite tener una
caja de texto de tamaño reducido y poder leer en ella un texto mayor que la propia caja.
Esta propiedad puede tomar los siguiente valores :

0 - No salen barras

1 - Barras de desplazamiento horizontal

2 - Barras de desplazamiento vertical

3 - Ambas barras.

TabIndex Nº de orden para obtener el foco

Al igual que para los botones de comando, esta propiedad para tabulador marca el orden en
el que le llegará el foco al pulsar la tecla TAB

Tag

Esta propiedad no la usa directamente Visual Basic. Sirve para asociar a este control alguna
información adicional para fines externos a la programación.

Top
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Indica la coordenada de la parte superior del control. Puede variarse durante el tiempo de
ejecución. Esta propiedad, juntamente con Left definen la esquina superior izquierda de la
caja de texto. Normalmente esta propiedad no se introduce numéricamente, sino que la
toma automáticamente de la posición que se le de en tiempo de diseño. Puede cambiarse,
cambiando el valor a esta propiedad, en tiempo de ejecución.

VisibleVisible

Propiedad Booleana. Si es true, la caja de texto se ve, si es False no se ve. Puede cambiarse
en tiempo de ejecución.

WhatThisHelpID (Propiedad, Windows 95)

Devuelve o establece un número de contexto asociado a un objeto. Se utiliza para dotar a


las aplicaciones de Ayuda interactiva con el menú emergente ¿Qué es esto? de la Ayuda de
Windows 95.

Width Ancho

Define el ancho de la caja de texto. Con Height determina la dimensión de la misma.

PROCEDIMIENTOS DE LA CAJA DE TEXTO

Click Change DblClick DragDrop DragOver GotFocus

KeyDown KeyPress KeyUp LinkClose

FRAME RECUADRO

Se obtiene directamente de la caja de herramientas

Tiene la siguiente forma :


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net

Un control Frame proporciona un agrupamiento identificable para controles. También


puede utilizar un Frame para subdividir un formulario funcionalmente por ejemplo, para
separar grupos de controles OptionButton.

Para agrupar controles, en primer lugar trace el control Frame y, a continuación, meta los
controles dentro de Frame. De este modo podrá mover al mismo tiempo el Frame y los
controles que contiene. Si traza un control fuera del Frame y, a continuación, intenta
moverlo dentro de éste, el control se colocará sobre el Frame, pero no pertenecerá a el. Es
decir, si es un OptionButton este se comportará como si estuviese fuera del Frame, aunque
físicamente esté dentro de el.

Cuando un control Frame tiene dentro otros controles, y hacemos invisible al Frame,
mediante su propiedad Visible = False, los controles interiores al Frame quedan también
invisibles.

PROPIEDADES

Las señaladas con (*) no presentan novedades respecto a las ya comentadas para los
controles precedentes.

Appearance (*)

Backcolor (*)

CaptionEs el título que aparece en el borde del Frame.

ClipControls

Si esta propiedad está a True, los métodos gráficos en eventos Paint vuelven a dibujar el
objeto entero. Antes del evento Paint se crea una zona de recorte alrededor de los controles
no gráficos del formulario. Si esta propiedad está a False dibujarán solamente las áreas
últimamente expuestas. En tiempo de ejecución, esta propiedad es de sólo lectura.

DragIcon(*)

DragMode(*)
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Enabled

Cuando esta propiedad está a False, tanto los procedimientos asociados al propio control
Frame como todos los controles dentro del Frame estarán inhabilitados. Si esta propiedad
está a True, todos ellos están habilitados.

Font

En esta propiedad, el tipo de letra afecta solamente al título del Frame, no a los controles
internos a el.

ForeColor

Color de las letras del título del Frame.

Height(*)

HelpContextID(*)

Index(*)

Left(*)

MouseIcon(*)

MousePointer(*)

Name(*)

TabIndex(*)

Tag(*)

Top(*)

Visible

Cuando un Frame está con la propiedad Visible = False, tanto el propio Frame como todos
los controles interiores a el serán invisibles.

WhatsThisHelpID(*)

Width(*)
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
PROCEDIMIENTOS DEL FRAME

Click DblClick DragDrop DragOver MouseDown

MouseMove MouseUp

CHECK BUTTON Y OPTION BUTTON (BOTONES DE ELECCION Y OPCION)

Se obtienen directamente de la caja de herramientas.

Dada la similitud de ambos controles, se comentan conjuntamente.

El control CheckBox, o casilla de verificación, permite elegir una opción


(activada/desactivada, True/False) que el usuario puede establecer o anular haciendo click.
Una X en una casilla de verificación indica que está seleccionada, activada, o con valor
True. Cada casilla de verificación es independiente de las demás que puedan existir en el
formulario, pudiendo tomar cada una de ellas el valor True o False, a voluntad del
operador.

Un control OptionButton muestra una opción que se puede activar o desactivar, pero con
dependencia del estado de otros controles OptionButton que existan en el formulario.

Generalmente, los controles OptionButton se utilizan en un grupo de opciones para


mostrar opciones de las cuales el usuario sólo puede seleccionar una. Los controles
OptionButton se agrupan dibujándolos dentro de un contenedor como un control Frame,
un control PictureBox o un formulario. Para agrupar controles OptionButton en un
Frame o PictureBox, dibuje en primer lugar el Frame o PictureBox y, a continuación,
dibuje dentro los controles OptionButton. Todos los controles OptionButton que están
dentro del mismo contenedor actúan como un solo grupo, e independientes de los controles
OptionButton de otros grupos distintos.

Aunque puede parecer que los controles OptionButton y CheckBox funcionan de forma
similar, hay una diferencia importante: Cuando un usuario selecciona un OptionButton,
los otros controles del mismo grupo OptionButton dejan de estas disponibles
automáticamente. Por contraste, se puede seleccionar cualquier número de controles
CheckBox.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net

En el ejemplo de la figura, existen tres grupos de OptionButton, uno en un PictureBox,


que actúa, al tiempo que como cuadro de imagen, como contenedor de controles
OptionButton. Otro grupo está en el interior de un control Frame, y el otro grupo está en
el formulario. Los tres grupos son independientes entre sí, pero interiormente al grupo
solamente puede seleccionarse uno de los OptionButton que lo componen.

En el formulario también existen tres CheckBox, que como puede verse, se pueden
seleccionar los que se desee, sin ningún tipo de exclusión entre ellos.

PROPIEDADES

Las señaladas con (*) son comunes a ambos controles y no presentan novedades respecto a
las ya comentadas para los controles precedentes.

AlignmentComún a ambos controles.

Admite los siguientes valores :

0 - Left Justify

1 - Right Justify

Cuando se elige el valor 0, justificado a la izquierda, el título del control aparece a la


derecha del botón, pegado a la figura del botón. Cuando se elige el valor 1, justificado a la
derecha, el título (Caption) aparece a la izquierda del botón, comenzando en la parte
izquierda del cuerpo total del control, es decir, no tiene porqué aparecer con su parte
derecha pegado al botón, caso que el cuerpo total del control se haya hecho mas largo que
la palabra del título.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Appearance (*)

Backcolor (*)

Caption(*).

DataField DataSource Propiedades del CheckBox solamente.

Establecen la base de datos y el campo donde están los datos (True / False) que se llevarán
a la propiedad Value . Al igual que en los controles Label y TextBox esta propiedad nos
permite visualizar datos de una base de datos de una forma muy sencilla. En este caso, el
CheckBox solamente permite presentar (logicamente) datos de tipo Booleano.

DragIcon(*)

DragMode(*)

Enabled(*)

Font(*)

ForeColor(*)

HeightComún a ambos controles.

La altura del control solamente afecta a la colocación del Titulo (Puede ponerse un título
largo en varias líneas), no al tamaño del botón, que es invariable.

HelpContextID(*)

Index(*)

Left(*)

MouseIcon(*)

MousePointer(*)

Name(*)

TabIndex(*)

TabStop (*)
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Tag(*)

Top(*)

Value Común a ambos controles

El valor de esta propiedad indica si el control está seleccionado (Value = 1) o no


seleccionado (Value = 0 ó Value = False). Esta propiedad puede cambiarse en tiempo de
ejecución. Mediante esta propiedad, podemos tanto forzar el valor como leerlo.

Atención. Presenta una diferencia entre uno y otro control respecto a la forma de
expresarse respecto a su valor cuando está seleccionado. Para forzar que el control NO esté
seleccionado, o para leer el Value cuando no está seleccionado, podemos utilizar tanto
Value = 0 como Value = False. Sin embargo, cuando lo que se quiere es poner la
propiedad a True hay una diferencia entre ambos controles.

Para el OptionButton podemos utilizar indistintamente las siguiente formas :

Option1.Value = True Option1.Value = 1

Con cualquiera de ellas seleccionaremos ese control por programa.

Para el CheckBox solamente se podrá usar para este propósito la instrucción :

Check1.value = 1

El poner como Value el valor True nos dará en este control un error.

Para la lectura del Value, existe una diferencia entre el valor devuelto por el CheckBox y el
devuelto por el OptionButton.

Para leer el dato existente en un CheckBox es necesario utilizar la forma :

variable = Check1.Value donde variable tomará el valor 1 (no True)

Para el control OptionButton emplearemos una instrucción igual :

variable = Option1.Value donde variable tomará el valor True (no 1)

Visible(*)

WhatsThisHelpID(*)

Width(*)
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
PROCEDIMIENTOS

Click DblClick (Solo OptionButton) DragDrop DragOver GotFocus

KeyDown KeyPress KeyUp LostFocus

LIST BOX Y COMBO BOX

Estos dos controles, debido a su similitud, se estudian conjuntamente.

Se obtienen directamente de la caja de herramientas :

Un control ListBox muestra una lista de elementos en la que el usuario puede seleccionar
uno o más. Si el número de elementos supera el número que puede mostrarse, se agregará
automáticamente una barra de desplazamiento al control ListBox.

Un control ComboBox combina las características de un control TextBox y un control


ListBox. Los usuarios pueden introducir información en la parte del cuadro de texto y
seleccionar un elemento en la parte de cuadro de lista del control. En resumen, un
ComboBox es la combinación de un ListBox, que se comporta como si de un ListBox se
tratase, y de un TextBox, con comportamiento análogo a un TextBox sencillo, con la
particularidad aquí de que el texto se le puede introducir por teclado, o elegir uno de los que
figuran en la parte ListBox del Combo.

Estos controles toman la siguiente forma :


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Puede verse en la figura un ejemplo de presentación de un ListBox (izquierda), un
ComboBox con la lista desplegada (Centro) y un ComboBox con la lista sin desplegar
(Combo2 a la derecha).

La lista tiene varios elementos. Cada línea de esta lísta es un elemento de la lista. Como el
número de elementos de la lista tiene mas elementos de los que le podían caber, generó
automáticamente la barra de desplazamiento vertical.

El ComboBox está normalmente sin desplegar. Se despliega cuando se hace click con el
ratón en la flecha que tiene en su parte derecha (véase fig. Anterior). Al desplegarse,
muestra la lista con todos sus elementos. Haciendo click con el ratón en cualquiera de sus
elementos, el elemento elegido pasa a la parte TextBox del Combo y la lista vuelve a
replegar.

El ListBox (y por tanto el ComboBox) tiene unas propiedades y métodos particulares que
solamente se pueden aplicar durante el tiempo de ejecución :

ListCount - Indica el número de elementos que tiene la lista

ListIndex - Indica el número de orden del elemento seleccionado dentro de la lista.

AddItem - Añade un elemento a la lista.

RemoveItem - Elimina un elemento de la lista.

Text - Obtiene el elemento seleccionado.

List (n) - Obtiene el elemento cuyo orden dentro de la lista es n.

ListCount valdrá 0 si la lista no tiene ningún elemento, y n si tiene n elementos.

Para seleccionar un elemento de la lista, basta con hacer click con el ratón sobre él. Ese
elemento se resaltará con fondo en azul. Una vez seleccionado un elemento, la propiedad
ListIndex tomará el valor del número de orden que ocupa ese elemento en la lista,
comenzando por el 0 para el elemento que ocupa el primer lugar. Si no se selecciona
ningún elemento, el valor de la propiedad ListIndex será -1. El primer elemento de la lista
es ListIndex 0, y el valor de la propiedad ListCount siempre es uno más que el valor
mayor de ListIndex.

En el ComboBox la propiedad Text contiene el texto que contenga la parte TextBox del
Combo, bien haya sido introducida desde teclado o mediante la recuperación de un
elemento la parte ListBox del mismo.

Ejemplos
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Supongamos que tenemos un ListBox llamado List1, y un ComboBox llamado Combo1.
Se enumeran distintas formas de obtener información de ellos.

Variable = List1.Listcount

Variable contendrá un número con el número total de elementos de la lista List1.

Variable = List1.ListIndex

Variable contendrá un número con el número de orden del elemento de la lista seleccionado
en ese momento.

List1.AddItem "ELEMENTO NUEVO"

Añade un elemento a List1. En este caso, el elemento añadido es la palabra ELEMENTO


NUEVO.

Variable = "VISUALBASIC"

List1.AddItem Variable

Añade un elemento a List1. En este caso, el elemento añadido es la palabra


VISUALBASIC.

Variable = List1.Text

Variable contendrá el elemento que estaba seleccionado en List1. (Variable será una
cadena de caracteres)

Variable = List1.List (n)

Variable contendrá el elemento que ocupa el número de orden n dentro de la lista.

Variable = List1.List (List1.ListIndex)

Variable contendrá el elemento que estaba seleccionado en List1. Se ha utilizado la


propiedad List para obtener el elemento, y en vez de introducir un número para definir el
elemento que se desea, se introdujo el valor ListIndex de List1, que es concretamente, el
número de orden del elemento seleccionado en ese momento. Observe que poner List1.List
(List1.ListIndex) es idéntico a poner List1.Text.

List1.RemoveItem (n)

Elimina el elemento n de List1.


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
List1.RemoveItem (List1.ListIndex)

Elimina el elemento que estaba seleccionado en ese momento.

List1.listIndex = n

Selecciona el elemento n de List1 (Se resalta en azul el elemento n)

PROPIEDADES DE ListBox y de ComboBox

Las señaladas con (*) son comunes a ambos controles y no presentan novedades respecto a
las ya comentadas para los controles precedentes.

Appearance (*)

Backcolor (*)

ColumnsPropiedad de ListBox solamente.

Determina si los elementos se presentan en una sola columna o en varias columnas, y la


forma de presentar los elementos en el ListBox. Si esta propiedad se pone a 0 la lista tendrá
solamente una columna, y presentará los elementos uno debajo de otro. Cuando los
elementos sean mas que los que se pueden presentar en la lista, aparecen automáticamente
unas barras de desplazamiento vertical.

Si la propiedad se pone a un número distinto a 0, el ListBox es de tipo multicolumna,


presentará en cada columna los elementos que le quepan dependiendo de su dimensión
vertical, y tendrá tantas columnas como sea necesario para albergar el número de elementos
que tenga. Presentará en su cuadro tantas columnas como se le indique en el valor de esta
propiedad, y si no puede presentar todos los elementos en las columnas que muestra, le
aparecerán barras de desplazamiento horizontales para poder movernos por todas las
columnas que tenga.

Recuerde : El número que se le asigna a la propiedad Columns no indica el número de


columnas que tendrá el ListBox sino el número de columnas que presenta.

Esta propiedad puede asignarse en diseño, mediante la caja de propiedades, o en tiempo de


ejecución mediante una instrucción como esta :

Nombrelista.Columns = número

.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Esta propiedad no puede definirse a 0 o cambiada desde 0 en tiempo de ejecuciones decir,
no se puede convertir en tiempo de ejecución un ListBox de múltiples columnas en un
ListBox de columna única o un ListBox de columna única en un ListBox de múltiples
columnas. Sin embargo, sí es posible cambiar durante la ejecución el número de columnas
de un ListBox de múltiples columnas.

DataField DataSource .

Establecen la base de datos y el campo donde están los datos que se llevarán al TextBox o
ComboBox para presentar datos procedentes de una Base de Datos.

DragIcon(*)

DragMode(*)

Enabled(*)

Font(*)

ForeColor(*)

Height(*)

HelpContextID(*)

Index(*)

IntegralHeight No aplicable a ListBox o ComboBox

ItemDataPropiedad muy importante.

Devuelve o establece un número específico para cada elemento de un control ComboBox o


ListBox.

Sintaxis

objeto.ItemData(índice) [= número]

La sintaxis de la propiedad ItemData tiene las siguientes partes:

objeto Nombre del ListBox o ComboBox.

índice El número de un elemento concreto del objeto.


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
número El número que se asocia con el elemento especificado.

Comentarios

La propiedad ItemData es una matriz de valores enteros largos cuyo número de elementos
es el valor de la propiedad ListCount del control. Los números asociados con cada
elemento se pueden usar para cualquier fin. Por ejemplo, se puede usar en la confección de
una lista de teléfonos, el número de identificación de un empleado, etc. Cuando se rellena el
ListBox, también se rellena los elementos correspondientes de la matriz ItemData con los
números correspondientes.

La propiedad ItemData se usa a menudo como índice de una matriz de estructuras de datos
asociados con los elementos de un control ListBox.

Nota Cuando se inserta un elemento en una lista con el método AddItem, el elemento
también se inserta automáticamente en la matriz ItemData. Sin embargo, el valor no se
reinicializa a cero; retiene el valor que estaba en esa posición antes agregar el elemento a la
lista. Cuando se usa la propiedad ItemData, asegúrese de establecer su valor al agregar
nuevos elementos a la lista.

Left(*)

List Es el contenido de la lista.

Si la lista de elementos es corta e invariable, pueden introducirse los elementos en el cuadro


de propiedades durante el diseño.

MouseIcon(*)

MousePointer(*)

Name(*)

Sorted

Establece o devuelve un valor que indica si los elementos de un ListBox o ComboBox se


colocan automáticamente en orden alfabético. Los valores que puede adoptar son True o
False.

TrueLos elementos de la lista se ordenan alfabéticamente (sin distinguir entre mayúsculas


y minúsculas).

False(Predeterminado) Los elementos de la lista no se ordenan alfabéticamente.


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Cuando esta propiedad tiene el valor True, Visual Basic se encarga de casi todo el
procesamiento de cadenas necesario para mantener el orden alfabético, incluyendo el
cambio de los números de índice cuando se agregan o eliminan elementos.

Nota El uso del método AddItem para agregar un elemento en una posición específica de la
lista puede romper el orden alfabético, y los elementos agregados con posterioridad pueden
no ordenarse correctamente.

TabIndex(*)

TabStop (*)

Tag(*)

Top(*)

Visible(*)

WhatsThisHelpID(*)

Width(*)

PROCEDIMIENTOS

Click Change (Solo ComboBox) DblClick DragDrop DragOver

DropDown (Solo ComboBox) GotFocus KeyDown KeyPress

KeyUp LostFocus MouseDown (Solo ListBox) MouseMove (Solo ListBox)

MouseUp (Solo ListBox)

NOTA MUY IMPORTANTE

El procedimiento Change del ComboBox solamente se efectúa cuando el cambio se


produce mediante la entrada de un texto DESDE EL TECLADO, no por un cambio en la
parte Text de este control, producido al llevar un elemento desde la parte List a la parte
Text.

CONTROLES HScrollBar y VScrollBar

Son dos controles similares, para introducir un dato cuasi-analógico en una aplicación. Se
toman directamente de la caja de herramientas, y tienen un aspecto parecido al de un
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
control de volumen de un equipo de música. El HScrollBar está en posición horizontal, y el
VScrollBar en posición vertical.

Mediante estos controles se pueden introducir datos variando la posición del cursor.

PROPIEDADES de HScrollBar y VScrollBar

Las señaladas con (*) son comunes a ambos controles y no presentan novedades respecto a
las ya comentadas para los controles precedentes.

DragIcon(*)

DragMode(*)

Enabled(*)

Height (*)

HelpContextID(*)

Index(*)

LargeChange

Esta propiedad establece la variación de la propiedad Value cada vez que se hace click en
el interior de la barra de desplazamiento, en la parte por donde pasa el cursor.

Left(*)

Max

Esta propiedad establece el valor máximo para la propiedad Value, es decir, el valor de esta
propiedad cuando el cursor está en su parte máxima. (Recuerde que el cursor está en el
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
máximo, cuando está mas a la derecha, caso del HScrollBar, o cuando está en la parte mas
baja, caso del HScrollBar.

Min

Esta propiedad establece el valor mínimo para la propiedad Value, es decir, el valor de esta
propiedad cuando el cursor está en su parte mínima. (Recuerde que el cursor está en el
mínimo, cuando está mas a la izquierda, caso del HScrollBar, o cuando está en la parte mas
alta, caso del HScrollBar.

MouseIcon(*)

MousePointer(*)

Name(*)

SmallChange

Esta propiedad establece la variación de la propiedad Value cada vez que se hace click en
las flechas superior o inferior de la barra de desplazamiento.

TabIndex(*)

TabStop (*)

Tag(*)

Top(*)

Value

Esta propiedad lee o establece el valor dado por la posición del cursor. Este valor tiene un
mínimo, establecido por Min y un máximo, establecido por Max. Esta propiedad es la que
se debe leer para conocer la posición del cursor.

Visible(*)

WhatsThisHelpID(*)

Width(*)

PROCEDIMIENTOS DE HScrollBar y VScrollBar

Change DragDrop DragOver GotFocus KeyDown KeyPress


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
KeyUp LostFocus Scroll

Comentario El Procedimiento Change se produce cuando, tras mover el cursor, se suelta


el botón del ratón. Esto produce el efecto de que el cambio que se tenga que producir con el
movimiento del cursor no se realiza de una manera continua. El procedimiento Scroll se
realiza en el instante que se está moviendo el cursor. Por lo tanto, es este procedimiento el
que se debe usar para conseguir el efecto de un cambio continuo mientras se está moviendo
el cursor.

TIMER TEMPORIZADOR

Este objeto permite establecer temporizaciones. Presenta una novedad respecto a los
controles estudiados hasta ahora. El control Timer solamente se ve durante el tiempo de
diseño. En tiempo de ejecución, el control permanece invisible.

La temporización producida por el Timer es independiente de la velocidad de trabajo del


ordenador. (Casi independiente. El timer no es un reloj exacto, pero se le parece)

Se toma directamente de la caja de herramientas, y tiene el aspecto siguiente :

PROPIEDADES

Enabled (*)

Index (*)

Interval

El valor de esta propiedad nos dará el intervalo de tiempo (en milisegundos) en que se
producirá un evento Timer y consecuentemente, realizará el procedimiento asociado a este
evento. Si el valor de la propiedad Interval está a 0 (Predeterminado), no se produce el
evento Timer. (El control Timer está deshabilitado cuando se pone la propiedad Interval
= 0)

Left (*)

Name (*)

Tag (*)
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Top (*)

PROCEDIMIENTOS

Timer

Se produce cada vez que se cumple un intervalo completo.

SHAPE

Se toma directamente de la caja de herramientas :

Shape es un control gráfico que se muestra como un rectángulo, un cuadrado, una elipse, un
círculo, un rectángulo redondeado o un cuadrado redondeado.

Utilice controles Shape en tiempo de diseño en lugar o además de invocar los métodos
Circle y Line en tiempo de ejecución. Puede dibujar un control Shape en un contenedor,
pero no puede actuar como contenedor. (Esto quiere decir que un control Shape nunca le
servirá, por ejemplo, para albergar varios OptionButton y pretender que sean
independientes de otros controles OptionButton que se encuentren fuera del control
Shape.

Este control no tiene Procedimientos. En realidad, solamente sirve para mostrar un


determinado gráfico, envolver gráficamente a otros controles, pero no tiene ninguna
aplicación en cuanto a programa. Es un "adorno" para sus aplicaciones.

PROPIEDADES

Backcolor (*)

BackStyle

Esta propiedad establece si Shape permite ver a su través (Transparent) o n lo permite


(Opaque)

BorderColor

Establece el color del borde.


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
BorderStyle

Establece el tipo de borde. Puede ser : Transparent, (No se ve el borde), Solid, (Borde de
línea continua),Dash, (línea a rayas), Dot, (línea a puntos), Dash-Dot, (línea de raya -
punto), dash-Dot-Dot, (línea de raya - punto - punto), InsideSolid, (raya continua)

El efecto de establecer la propiedad BorderStyle depende del valor de la propiedad


BorderWidth. Si BorderWidth no es 1 y BorderStyle no es 0 o 6, BorderStyle se establece
como 1.

BorderWidth

Establece el ancho de la línea.

DrawMode (*)

FillColor (*)

FillStyle(*)

Height (*)

Index (*)

Left (*)

Name (*)

Shape

Establece la forma del control. Puede ser : Rectangular, cuadrado, redondo, ovalado,
cuadrado con esquinas redondeadas y rectangular con esquinas redondeadas.

Tag (*)

Top (*)

Visible (*)

Width (*)

PROCEDIMIENTOS No tiene.

.LINE
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Se toma directamente de la caja de herramientas

Line, al igual que Shape, es un control gráfico que solamente sirve para poner una línea en
un formulario. Del mismo modo, no tiene procedimientos, por lo que no sirve para aportar
código al programa. Solo sirve para aportar una característica gráfica, es un adorno.

PROPIEDADES

BorderColor

Establece el color de la línea.

BorderStyle

Establece el tipo de línea : Puede ser : Transparent, (No se ve la línea), Solid, (Línea
continua),Dash, (línea a rayas), Dot, (línea a puntos), Dash-Dot, (línea de raya - punto),
dash-Dot-Dot, (línea de raya - punto - punto), InsideSolid, (raya continua)

BorderWidth

Establece el ancho de la línea.

DrawMode (*)

Index (*)

Left (*)

Name (*)

Tag (*)

Visible (*)

X1, X2 Establece las coordenadas x del inicio y final.

Y1, Y2 Establece las coordenadas y del inicio y final

PROCEDIMIENTOS No tiene.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
CONTROL GAUGE

Este control presenta una información numérica de forma gráfica, bien como un display
lineal (típico por ejemplo en ecualizadores de audio ), o como una aguja. No está
normalmente en la caja de herramientas, por lo que hay que traerla desde los Controles
Personalizados (Menú desplegable de Herramientas). Se denomina MicroHelp Gauge
Control. El archivo que lo contiene se denomina GAUGE16.OCX, (Ver. 16 bits)
GAUGE32.OCX (Ver. 32 bits)

Mediante este control, podemos presentar una magnitud numérica de una forma cuasi-
analógica. Podríamos decir que es un control similar al HScrollBar, que en vez de meter
información a la aplicación, la presenta.

Este control puede servir, por ejemplo, para presentar el tanto por ciento de ejecución de
una tarea, como elemento tranquilizante. Puede presentar el nivel de un depósito de agua,
etc.

Presenta las dos formas siguientes :

En la figura puede verse un Gauge de aguja, uno de barra horizontal y otro de barra
vertical. Para mejorar la presentación, el Gauge permite poner un gráfico como fondo,
cambiar el color de la barra, color de fondo, etc.

El control Gauge crea medidores definidos por el usuario, que puede elegir entre los estilos
lineales (relleno) o de aguja.

Nota para la distribución Cuando cree y distribuya aplicaciones con controles Gauge,
tendrá que instalar el archivo apropiado en el subdirectorio SYSTEM de Windows del
cliente. El Kit para instalación que incluye Visual Basic, le proporciona herramientas para
escribir los programas que instalan las aplicaciones correctamente.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
PROPIEDADES

Autosize, Backcolor, DragIcon, DragMode, Enabled, ForeColor, Height,


HelpContextID,

Index, InnerBottom, InnerLeft, InnerRight, InnerTop, Left, Max, Min, MouseIcon,


MousePointer, Name, NeedleWidth, Picture, Style, TabIndex, Tabstop, Tag, Top,
Value, Visible, WhatsThisHelpID, Width.

Son destacables por nuevas o particulares, las siguientes propiedades :

ForeColor Color de la barra

InnerBottom Distancia entre la parte baja del control y el comienzo de la barra o aguja.

InnerLeft, InnerRight, InnerTop. Idéntico al anterior, respecto a otros lados.

Max Valor de la propiedad Value a fondo de escala

Min Valor de la propiedad Value para indicación cero.

NeedleWidth Ancho de la aguja

Style Tipo de marcador. Puede tomar los siguientes valores :

0 = de barra, horizontal.

1 = de barra, vertical.

2 = de aguja, de 180 grados

3 = de aguja, de 360 grados.

Value

Valor numérico a presentar. Debe ser igual o menor que la propiedad Max, e igual o mayor
que la propiedad Min.

PROCEDIMIENTOS

Change DblClick DragDrop DragOver GotFocus KeyDown

KeyPress KeyUp LostFocus MouseDown MouseMove MouseUp


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net

Visual Basic - Guía del Estudiante Cap. 3

Controles (Continuación) El CommonDialog

El CommonDialog es un control del que se libran muy pocas aplicaciones. Dada la


importancia de este control, se le dedica un capitulo único en esta Guía del Estudiante.

CUADRO DE DIALOGO CommonDialog

Normalmente se encuentra en la caja de herramientas

Este control no se presenta en tiempo de diseño mas que con un simple icono :

El cuadro de diálogo, CommonDialog se utiliza para varias funciones :

 Abrir Ficheros

 Guardar Ficheros

 Elegir colores

 Seleccionar Impresora

 Seleccionar Fuentes
 Mostrar el fichero de Ayuda

En realidad el cuadro de diálogo permite conocer datos con los cuales, y mediante el código
adecuado, abriremos o guardaremos ficheros, elegiremos colores o seleccionaremos
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
fuentes. Es decir, el CommonDialog NO realiza mas funciones que mostrar ficheros
existentes, fuentes disponibles, colores, para que, mediante código, abramos esos ficheros o
usemos una determinada fuente.

Dependiendo de la aplicación para la que vaya a usarse se deberá activar de distintas


formas. Si el cuadro de diálogo se va a usar para seleccionar la impresora y para otras
aplicaciones, es recomendable usar uno exclusivamente para seleccionar la impresora.

Esta última recomendación se debe a que, para el control de la impresora, el


CommonDialog SI realiza las funciones de selección de impresora predeterminada. Esta
diferencia operativa hace que si usamos el mismo CommonDialog para seleccionar
impresora y abrir ficheros, por ejemplo, se "cuelgue" el CommonDialog.

El control CommonDialog es un control personalizado (Microsoft CommonDialog Control


COMDLG16.OCX / COMDLG32.OCX), y como casi todos los controles personalizados
presenta un asistente de propiedades propio. Puede accederse a las propiedades mediante el
cuadro de propiedades típico de otros controles, o mediante el asistente, pulsando el botón
derecho del ratón con el puntero colocado encima del icono del cuadro de diálogo.

Analizando las propiedades, vemos que tiene gran cantidad de ellas. Esto es porque agrupa
todas las propiedades correspondientes a la cinco funciones que puede desarrollar. Se
detalla a continuación la forma de usar el CommonDialog para cada aplicación.

Se entiende que el nombre - Name - que se ha puesto para el cuadro de diálogo en todos
los ejemplos es CD1)

FUENTES

Para mostrar el cuadro de diálogo correspondiente a Tipos de Letra ( Fonts ), debe


ejecutarse la instrucción:

CD1.ShowFont

y haber puesto, en la propiedad Flags del cuadro de diálogo, el valor de 1, 2 ó 3,


correspondiente respectivamente a los tipos de letra de la pantalla, de la impresora o ambos.
(Véase la propiedad Flags mas adelante) Si no pone uno de estos valores, le dirá que no
tiene fuentes instaladas.

El cuadro de diálogo que se presenta es el siguiente:


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net

Los valores que se pueden obtener de este cuadro de dialogo son:

CD1.FontName Indica el nombre de la fuente

CD1.FontSize Indica el tamaño de la fuente

CD1.Color Indica el color de la fuente (Abrir con Flags=256+1, 2 ó 3)

CD1.FontBold = (True / False) Si es True, se ha elegido "Negrita"

CD1.FontItalic = (True / False) Si es True, se ha elegido "Cursiva"

CD1.FontStrikethru = (True / False) Si es True, se ha elegido "Tachada "

CD1.FontUnderline = (True / False) Si es True, se ha elegido "Subrayada"

Si se elige una versión Negrita Cursiva serían True las opciones FontBold y FontItalic

El objeto Font no puede aplicarse al CommonDialog. Es decir, no podemos poner :

Variable = CD1.Font.Size sino Variable = CD1.Fontsize

En el ejemplo que acompaña a este capítulo, puede ver como se introducen las
características de una determinada fuente elegida en un cuadro de texto.

COLOR
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Para mostrar el cuadro de diálogo correspondiente al color, se deberá ejecutar la
instrucción:

CD1.ShowColor

El cuadro de diálogo presentado tiene esta forma:

(La parte derecha del cuadro puede no salir. Depende del valor de la propiedad Flags. Se
saca haciendo click en Definir colores personalizados, si está activado. También depende
de la propiedad Flags)

El número correspondiente al color elegido se puede conocer analizando la propiedad color


de cuadro de diálogo. En nuestro ejemplo, lo obtendríamos con

Variablecolor = CD1.Color

donde Variablecolor contendrá un número correspondiente al color elegido.

Nota acerca del número del color.

Para establecer un color por medio de código, se pondrá un valor de color a la propiedad
correspondiente de ese objeto. El valor del color puede establecerse de tres formas que se
comentan a continuación.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Colores en Visual Basic.

Visual Basic acepta para especificar un color, tres procedimientos: Mediante el número de
color, mediante la sentencia RGB ( rojo, verde, azul ) o mediante la función QBColor.

Por número

El número que representa el color en VB está formado por la suma de la componente roja,
la componente verde y la componente azul. Podríamos verlo muy bien en numeración
Hexadecimal:

Color = Hex XX YY ZZ

Donde ZZ es un número Hexadecimal que representa la cantidad del color rojo. El mínimo
estaría en 0 (H00) y el máximo en 255 (HFF)

YY representaría la cantidad de color verde y XX la de color azul, ambos con los mismos
límites explicados para el rojo.

Por ejemplo: el rojo puro sería: Hex(0000FF) = 255

el verde puro sería: Hex(00FF00) = 652280

el azul puro sería: Hex(FF0000) = 16711680

Una mezcla de un poco de rojo (HB1), otro poco de verde (H56) y otro poco de azul (H1F)
daría el siguiente número:

Hex(1F56B1) = 2053809

El número de color puede estar comprendido entre 0 (correspondiente al negro) y el


16777215 (correspondiente al blanco. Observe que esa cantidad, 16.777.215 (FFFFFF en
hexadecimal) corresponde a los famosos 16 millones de colores de las tarjetas gráficas.

Si queremos poner el color de fondo a un control Label, usaremos la propiedad Backcolor.


Si el Label se llama Label1, pondríamos la instrucción

Label1.Backcolor = 12345678

Por la sentencia RGB

Se puede expresar el color, poniendo simplemente RGB (rojo, verde, azul), donde rojo es
un número entre 0 y 255 que indica la cantidad de color rojo que se aporta al color, verde
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
un número comprendido entre 0 y 255 indicando la cantidad de verde, y lo mismo para
azul.

Esta es la forma mas sencilla de poner la propiedad color, y con la que mejor controlaremos
el mismo.

Si queremos poner al Label anterior un color mediante la sentencia RGB, ejecutaríamos la


sentencia :

Label1.Backcolor = RGB (128, 30, 100)

Mediante la Función QBColor

Esta función se ha puesto en Visual Basic para compatibilidad con los colores que se usan
en Quick-Basic y Qbasic. Mediante esta función se obtienen solamente 16 colores.

Sintaxis Objeto.QBColor(color)

El argumento color es un número entero entre 0 a 15, según la siguiente lista:

Número Color Número Color

0 Negro 8 Gris

1 Azul 9 Azul claro

2 Verde 10 Verde claro

3 Aguamarina 11 Aguamarina claro

4 Rojo 12 Rojo claro

5 Fucsia 13 Fucsia claro

6 Amarillo 14 Amarillo claro

7 Blanco 15 Blanco brillante

Para el mismo Label anterior, usaríamos la sentencia :

Label1.Backcolor = QBColor (12)

Fin de la nota acerca del número del color


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
IMPRESORAS

Nota: Si utiliza un CommonDialog para impresoras y otras aplicaciones, puede tener


problemas. Utilice un CommonDialog exclusivamente para impresoras.

Para presentar el cuadro de elección de impresora, ejecute la instrucción:

CD2.ShowPrinter

(A este cuadro de dialogo le hemos llamado CD2 para evitar los problemas referidos en la
nota).

Aparecerá el siguiente cuadro de diálogo:

La impresora elegida puede conocerla llamando a la propiedad DeviceName de un objeto


que aún no hemos visto: el objeto Printer. Este objeto es el encargado de pasar al
Administrador de Impresión todos los trabajos de impresión que generen las aplicaciones
Visual Basic:

Nombredelaimpresora = Printer.DeviceName

Para que la impresora quede como impresora por defecto de Windows, debe tener a True la
propiedad PrinterDefault del cuadro de diálogo.

En este cuadro puede observarse, que además de los botones de ACEPTAR y


CANCELAR, existe otro, INSTALAR. Haciendo click en este, podemos cambiar la
impresora por cualquier otra que tenga instalada.

ABRIR Y GUARDAR ARCHIVOS


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Posiblemente las opciones mas usadas del cuadro de diálogo. Para presentar el cuadro de
diálogo correspondiente a Abrir Archivo, debe ejecutar la instrucción:

CD1.ShowOpen

Si lo que necesita es abrir el cuadro de diálogo para guardar un fichero, debe ejecutar la
instrucción :

CD1.ShowSave

pero antes deberá introducir el filtro o filtros de archivos que necesite. Ojo, ¡ ANTES !

Un filtro sirve para que en el cuadro de diálogo se presenten solamente los ficheros de
nuestro interés. Se pueden seleccionar por el nombre, la extensión o las dos cosas. La
sintaxis para introducir un filtro es la siguiente:

CD1.Filter = "Descripción del fichero|nombre.extensión"

donde "nombre" puede ser un nombre o usar caracteres comodín. Lo mismo para
"extensión"

Por ejemplo, para buscar archivos ejecutables, con cualquier nombre y extensión .EXE

CD1.Filter = "Ficheros ejecutables |*.exe"

Observe el carácter separador entre la descripción de los ficheros (Ficheros ejecutables) y el


parámetro de busca (*.EXE). No ponga ningún espacio entre el separador y los caracteres
de busca. El separador es el carácter ASCII 124.

Puede buscar varios tipos de ficheros, separando los caracteres de busca por medio del
carácter punto y coma (;)

CD1.Filter = "Ficheros ejecutables |*.EXE;*.COM;*.BAT"

Puede también introducir dos filtros, separados por el separador | (En una línea solamente).

CD1.Filter="Ficheros de un tipo |*.EXE |Ficheros de otro |*.COM |Otros ficheros |*.BAT"

Por ejemplo : CD1.Filter = "Ficheros Word |*.DOC|Ficheros Write |*.WRI"

¡ No se pueden poner dos líneas con filtros, se quedaría solamente con la última !

En este caso, cuando se presente el cuadro de diálogo, solamente presentará uno de los
filtros, y deberá seleccionar manualmente el otro en un cuadro situado en la parte inferior
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
izquierda del cuadro de diálogo. Para predeterminar cuál de los dos filtros saldrá sin tener
que seleccionarlo, deberá ejecutar esta instrucción, ANTES de invocar el cuadro de diálogo

CD1.FilterIndex = 2

En este caso, aparecerá por defecto el filtro escrito en segundo lugar. El orden de los filtros
comienza por 1.

El cuadro de diálogo deberá presentar un directorio. Este directorio con el que, por defecto,
aparece el cuadro de diálogo, se puede introducir mediante la propiedad InitDir, que
deberá contener el nombre del directorio y su path. Si no se especifica, comenzará por el
directorio actual.

Para conocer el nombre del fichero elegido, se emplea la propiedad FileName :

Nombrefichero= CD1.filename

El nombre del fichero, Nombrefichero en la sentencia anterior, viene con su path, es decir,
nombre y dirección completa, por lo que puede emplearse directamente la salida del
CommonDialog para abrir un fichero.

El cuadro de diálogo de abrir o cerrar tiene esta forma :

El cuadro de guardar es similar. Observe que en este caso hemos desplegado la segunda
opción de filtro de ficheros :
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net

Como ve ambos cuadros son prácticamente iguales. Solamente se difieren en que uno pone
Abrir y el otro Guardar como en su barra de título. También en que el cuadro Guardar
como presenta los nombres de los ficheros con un tono apagado. Funcionalmente difieren.
Por ejemplo, si quiere guardar un fichero con un nombre ya existente, y dependiendo de la
propiedad Flags que verá mas adelante, le aparecerá la siguiente advertencia :

Si desea otra leyenda en la barra de título, puede cambiarla usando el asistente de


propiedades, que lo obtendrá colocando el cursor del ratón sobre el icono del
CommonDialog y pulsando el botón derecho. Haga click sobre Propiedades en el popmenú
que se presenta. Aparecerá esto :
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net

PRESENTAR AYUDAS

Mediante el CommonDialog se puede presentar un fichero de ayuda. (Ficheros del tipo


.HLP de Windows)

Pese a que se pueden presentar estos ficheros basándonos en el CommonDialog, es


preferible usar directamente el programa WinHelp.Exe, que puede ejecutarlo mediante
la función Shell :

VariableID = Shell ("WinHelp.Exe FicheroAyuda.hlp",1)

Para mostrar el fichero de ayuda debe poner el nombre (y Path) del fichero de ayuda en la
propiedad HelpFile del CommonDialog

CD1.HelpFile = "C:\MiCarpeta\MiFicheroAyuda.HLP"

Puede mostrar el índice, o una página concreta de ese fichero. Para ello debe jugar con la
propiedad HelpCommand, que le va a indicar al CommonDialog qué ayuda debe mostrar.

CD1.HelpCommand =Valor

Las opciones para valor son:

1 &H1 cdlContext

Muestra la Ayuda de un contexto determinado. Cuando se usa esta valor, también se debe
especificar un contexto con la propiedad HelpContext.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
2 &H2 cdlQuit

Notifica a la aplicación Ayuda que el archivo de Ayuda especificado ya no se está


utilizando.

3 &H3 cdlContents

Muestra el tema de contenido de ayuda, definido con la opción Contents de la sección


[OPTION] del archivo .HPJ.

3 &H3 cdlIndex

Muestra el índice del archivo de Ayuda especificado. Las aplicaciones sólo deben utilizar
este valor para un archivo de Ayuda con índice único.

4 &H4 cdlHelpOnHelp

Muestra la Ayuda para utilizar la propia aplicación Ayuda.

5 &H5 cdlSetContents

Determina el tema de contenido a mostrar cuando el usuario presiona la tecla F1.

5 &H5 cdlSetIndex

Establece el contexto especificado en la propiedad HelpContext como índice actual para el


archivo especificado en la propiedad HelpFile. Este índice seguirá siendo el actual hasta
que el usuario acceda a un archivo de Ayuda distinto. Utilice este valor sólo para los
archivos de Ayuda con más de un índice.

8 &H8 cdlContextPopup

Muestra en una ventana emergente un tema de Ayuda determinado, identificado por un


número de contexto definido en la sección [MAP] del archivo .HPJ.

9 &H9 cdlForceFile

Asegura que WinHelp muestre el archivo de Ayuda correcto. Si se muestra el archivo


correcto, no sucede nada. Si se muestra un archivo incorrecto, WinHelp abrirá el correcto.

257 &H101 cdlKey

Muestra la Ayuda sobre una palabra reservada determinada. Al usar esta opción, deberá
especificar también una palabra reservada con la propiedad HelpKey.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
258 &H102 cdlCommand

Ejecuta una macro de Ayuda.

261 &H105 cdlPartialKey

Muestra el tema de la lista de palabras claves que coincide con la palabra pasada en el
parámetro dwData, si sólo se encuentra uno. Si se encuentra más de uno, aparecerá el
cuadro de diálogo Buscar mostrando los temas encontrados en el cuadro de lista Ir a. Si no
se encuentra ninguno, se mostrará el cuadro de diálogo Buscar. Para que aparezca el cuadro
de diálogo Buscar sin pasar una palabra reservada, utilice un puntero largo a una cadena
vacía.

Si queremos que se muestre el índice de la ayuda, pondríamos esta propiedad de la forma :

CD1.HelpCommand = cdlHelpIndex

Para mostrar la página que se ha puesto en el fichero de ayuda como Contexto 2 (En
Sección [MAP] del fichero .HPJ (Vea Creación de Ficheros de Ayuda),

CD1.HelpCommand = cdlHelpContext

CD1.HelpContext = 2

Para mostrar la Ayuda de la Ayuda de Windows :

CD1.HelpCommand = cdlHelpHelpOnHelp

Una vez establecidas estas propiedades, mostraremos la ayuda con el Método ShowHelp

CD1.ShowHelp

Repitiéndole que no se debe usar el CommonDialog para mostrar ayudas, pero para cumplir
el objetivo de plasmar en este texto la mayor información acerca de cada control, se
enumeran a continuación el resto de propiedades que afectan a la presentación de ayuda :

HelpFile

HelpContext

HelpKey

PROPIEDADES DEL CommonDialog


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
La Propiedad Action

La propiedad Action se incluye en la versión 4 de VB solamente por motivos de


compatibilidad con anteriores versiones. Realiza las mismas funciones que ShowFont,
ShowColor, ShowPrinter, ShowOpen y ShowSave. No debe usarse esta propiedad, sino
los equivalentes citados, en previsión de que pueda ser eliminada en futuras versiones.

La sintaxis de Action es : Nombre.Action [= valor]

Valor Descripción

0 Ninguna acción.

1 Muestra el cuadro de diálogo Abrir.

2 Muestra el cuadro de diálogo Guardar como.

3 Muestra el cuadro de diálogo Color.

4 Muestra el cuadro de diálogo Fuente.

5 Muestra el cuadro de diálogo Impresora.

6 Ejecuta WINHELP.EXE.

NO utilice la propiedad Action. Utilice en su lugar ShowFont, ShowPrinter, ShowSave,


ShowOpen , ShowColor y ShowHelp

CancelError

Devuelve o establece un valor que indica si se genera un error cuando el usuario elige el
botón Cancelar.

Sintaxis : objeto.CancelError = (True / False)

True Se genera un error.

False (Predeterminado) No se genera ningún error.

Cuando se establece True en esta propiedad, se producirá el error número 32755


(cdlCancel) cada vez que el usuario elija el botón Cancelar.

Debe poner esta propiedad a true cuando quiera detectar que se ha pulsado el botón
CANCELAR. Luego, debe detectar con la rutina de detección de errores adecuada, si el
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
error producido ha sido el 32755. De ser así, es que han pulsado ese botón, y Vd. procederá
en consecuencia.

Color

Esta propiedad es de lectura / escritura

De escritura :Establece el color predeterminado con que aparecerá el CD para elegir

color. Puede introducirse como RGB o numéricamente, como se explicó mas atrás. Para
que aparezca este color predeterminado, debe poner la propiedad Flags a 1.

De lectura : Entrega el color elegido, bien en el cuadro de elección de color, bien en el

cuadro de elección de fuente.

Copies

Establece el valor predeterminado para número de copias que aparecerá en el CD cuando se


abra para elegir impresora.

DefaultExt

Devuelve o establece la extensión de archivo predeterminada para el cuadro de diálogo.

Sintaxis objeto.DefaultExt [= cadena]

Puede utilizar esta propiedad para especificar una extensión de archivo predeterminada,
como por ejemplo .TXT o .DOC.

Importante para el CommonDialog de Guardar: Cuando se guarde un archivo sin


extensión, se le agregará automáticamente la especificada en esta propiedad.

DialogTitle

Devuelve o establece la cadena mostrada en la barra de título del cuadro de diálogo.

Sintaxis Nombre.DialogTitle [= título]

Esta propiedad puede introducirse en la ventana de propiedades, o por programa. Puede


utilizar esa propiedad para mostrar el nombre del cuadro de diálogo en la barra de título.

Nota El control CommonDialog ignora el valor de la propiedad DialogTitle cuando


muestra los cuadros de diálogo Color o Fuente.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
El título predeterminado para un cuadro de diálogo Abrir es Abrir, y para un cuadro de
diálogo Guardar como es Guardar como.

FileName

Devuelve o establece la ruta y el nombre de archivo de un archivo seleccionado. La lectura


de esta propiedad devuelve el nombre del archivo seleccionado actualmente en la lista. Si
no hay ningún archivo seleccionado, FileName devuelve una cadena vacía.

Filter

(Explicada mas atrás)

Devuelve o establece los filtros que aparecen en el cuadro de lista Tipo de un cuadro de
diálogo.

Sintaxis CD1.Filter [= descripción1 |filtro1 |descripción2 |filtro2...]

Utilice el símbolo de canalización ( | , (ASCII 124) ) para separar los valores de descripción
y de filtro. No incluya espacios antes ni después del símbolo de canalización, pues
aparecerían en los valores de descripción y valor.

Al especificar más de un filtro en un cuadro de diálogo, utilice la propiedad FilterIndex


para especificar el filtro predeterminado.

Nota para los que no tiene teclado de 102 teclas. Para obtener el carácter ASCII 124,
pulse la tecla ALT y, sin dejar de pulsarla, teclee 124 en el teclado numérico.

FilterIndex

Devuelve o establece un filtro predeterminado para un cuadro de diálogo Abrir o Guardar


Como.

Sintaxis CD1.FilterIndex [= número]

Esta propiedad indica el filtro predeterminado cuando se han especificado varios filtros
para un cuadro de diálogo Abrir o Guardar. El índice del primer filtro definido es 1.

FlagsPropiedad que tiene distintos significados para cada tipo de cuadro de diálogo.

Tiene la misma sintaxis para todos los cuadros.

Sintaxis CD1.Flags [= valor]


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
El parámetro valor establece distintas alternativas, dependiendo de cada cuadro.

Para el cuadro de diálogo Color

Las opciones para valor son:

1 &H1& cdlRGBInit

Establece como valor de color inicial para el cuadro de diálogo el indicado en su propiedad
Color.

2 &H2& cdlFullOpen

Hace que el cuadro de diálogo se muestre completo al crearlo, incluyendo la sección que
permite al usuario crear colores personalizados. Sin esta opción, el usuario debe elegir el
botón de comando Definir colores personalizados para mostrar tal sección.

4 &H4& cdlPreventFullOpen

Desactiva el botón de comando Definir colores personalizados, evitando que el usuario


defina colores.

8 &H8& cdlShowHelp

Hace que el cuadro de diálogo muestre un botón Ayuda.

Se pueden poner varias de estas condiciones, poniendo como valor Flags la suma de los
valores de cada una de las condiciones a poner.

Para los cuadros Abrir y Guardar

Las opciones para valor son:

1 &H1& cdlReadOnly

Hace que la casilla de verificación Sólo lectura aparezca marcada inicialmente al crear el
cuadro de diálogo. Este indicador también señala el estado de la casilla Sólo lectura cuando
el cuadro de diálogo está cerrado.

2 &H2& cdlOverwritePrompt

Hace que el cuadro de diálogo Guardar como genere un cuadro de mensaje si el archivo
seleccionado ya existe. El usuario deberá confirmar que desea sobrescribir el archivo.
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
4 &H4& cdlHideReadOnly

Oculta la casilla de verificación Sólo lectura.

8 &H8& cdlNoChangeDir

Hace que el cuadro de diálogo restablezca como directorio actual el que lo era en el
momento de abrirse.

16 &H10& cdlShowHelp

Hace que el cuadro de diálogo muestre el botón Ayuda.

256 &H100& cdlNoValidate

Especifica que el cuadro de diálogo común permita caracteres no válidos en el nombre de


archivo devuelto. Funciona tanto con el cuadro de Abrir como con el de Cerrar. Tenga
cuidado a la hora de crear un archivo con nombre no válido !

512 &H200& cdlAllowMultiselect

Especifica que el cuadro de lista Nombre de archivo admita selecciones múltiples. El


usuario puede seleccionar más de un archivo en tiempo de ejecución presionando la tecla
MAYÚS y utilizando las teclas FLECHA ARRIBA y FLECHA ABAJO para seleccionar
los archivos deseados. Al hacerlo, la propiedad FileName devolverá una cadena con los
nombres de todos los archivos seleccionados. Los nombres están delimitados en la cadena
con espacios.

1024 &H400& cdlExtensionDifferent

Indica que la extensión del nombre de archivo devuelto es distinta de la especificada en la


propiedad DefaultExt. Este indicador no estará activado si la propiedad DefaultExt es
Null, si las extensiones coinciden, o si el archivo no tiene extensión. El valor de este
indicador puede comprobarse al cerrar el cuadro de diálogo.

2048 &H800& cdlPathMustExist

Especifica que el usuario sólo pueda introducir una ruta de acceso válida. Si se establece
este indicador y el usuario introduce una ruta no válida, aparecerá un mensaje de
advertencia.

4096 &H1000& cdlFileMustExist


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Especifica, para el cuadro de Abrir, que el usuario sólo pueda escribir en el cuadro de texto
Nombre de archivo nombres de archivos existentes. Si este indicador está activado y el
usuario introduce un nombre de archivo no válido, aparecerá una advertencia. Este
indicador activa automáticamente cdlPathMustExist.

8192 &H2000& cdlCreatePrompt

Especifica, para el cuadro de diálogo de abrir, que si no existe el fichero consulte al usuario
antes de crear un archivo que no existe actualmente. Esta advertencia dice : Este Archivo
no existe ¿desea crearlo ? y aparecen los botones de ACEPTAR y CANCELAR. Si el
usuario pulsa aceptar el CommonDialog se cierra normalmente, si se le pulsa CANCELAR
desaparece esta advertencia y el CommonDialog espera a que se le escriba o seleccione
otro fichero. Este indicador establece automáticamente los indicadores cdlPathMustExist y
cdlFileMustExist.

16384 &H4000& cdlShareAware

Especifica que se ignoren los errores al compartir archivos.

32768 &H8000& cdlNoReadOnlyReturn

Especifica que el archivo devuelto no tenga el atributo de Sólo lectura ni esté en un


directorio protegido contra escritura. Presenta un aviso (tanto en el cuadro de abrir como en
el cerrar) que impide elegir un fichero de estas características.

Se pueden poner varias de estas condiciones, poniendo como valor Flags la suma de los
valores de cada una de las condiciones a poner.

Para el cuadro Mostrar Fuentes:

Las opciones para valor son:

1 &H1& cdlScreenFonts

Hace que el cuadro de diálogo muestre solamente las fuentes de pantalla que admite el
sistema.

2 &H2& cdlPrinterFonts

Hace que el cuadro de diálogo muestre solamente las fuentes que admite la impresora,
especificadas por la propiedad hDC.

3 &H3& cdlBoth
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Hace que el cuadro de diálogo muestre las fuentes de impresora y de pantalla disponibles.
La propiedad hDC identifica el contexto de dispositivo asociado a la impresora

4 &H4& cdlShowHelp

Hace que el cuadro de diálogo muestre un botón Ayuda.

256 &H100& cdlEffects

Especifica que el cuadro de diálogo permita efectos de tachado, subrayado y color.

1024 &H400& cdlANSIOnly

Especifica que el cuadro de diálogo sólo permita seleccionar las fuentes que utilizan el
juego de caracteres de Windows. Si se establece este indicador, el usuario no podrá
seleccionar una fuente que sólo contenga símbolos.

2048 &H800& cdlNoVectorFonts

Especifica que el cuadro de diálogo no permita seleccionar fuentes vectoriales.

4096 &H1000& cdlNoSimulations

Especifica que el cuadro de diálogo no permita simulaciones de fuente de interfaz de


dispositivo gráfico (GDI).

8192 &H2000& cdlLimitSize

Especifica que el cuadro de diálogo seleccione sólo los tamaños de fuente comprendidos en
el rango especificado por las propiedades Min y Max.

16384 &H4000& cdlFixedPitchOnly

Especifica que el cuadro de diálogo seleccione sólo fuentes de espaciado fijo.

32768 &H8000& cdlWYSIWYG

Especifica que el cuadro de diálogo permita seleccionar solamente fuentes disponibles al la


vez en la pantalla y en la impresora. Si se establece este indicador, también deben
establecerse cdlBoth (sume 3 a este número) y cdlScalableOnly (sume 131072 a este
número)

65536 &H10000& cdlForceFontExist


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Especifica que aparezca un cuadro de mensaje cuando el usuario intente seleccionar una
fuente o un estilo que no existan.

131072 &H20000& cdlScalableOnly

Especifica que el cuadro de diálogo permita seleccionar solamente fuentes escalables.

262144 &H40000& cdlTTOnly

Especifica que el cuadro de diálogo permita seleccionar solamente fuentes TrueType.

Nota Antes de mostrar el cuadro de diálogo Fuentes, debe establecer cdlScreenFonts,

cdlPrinterFonts o cdlBoth en la propiedad Flags. En caso contrario, se producirá el error No


hay fuentes. (O dicho de otra forma, Flags=1, 2 ó 3)

Se pueden poner varias de estas condiciones, poniendo como valor Flags la suma de los
valores de cada una de las condiciones a poner.

Para el Cuadro de Diálogo Imprimir

(Observará seguramente que lo que se describe a continuación no se cumple siempre.


Depende de las impresoras que tenga Vd. instaladas)

Las opciones para valor son:

0 &H0& cdlAllPages

Devuelve o establece el estado del botón de opción Todas las páginas.

1 &H1& cdlSelection

Devuelve o establece el estado del botón de opción Selección. Si no se especifica


cdlPageNums ni cdlSelection, el botón de opción Todas estará seleccionado.

2 &H2& cdlPageNums

Devuelve o establece el estado del botón de opción Páginas.

4 &H4& cdlNoSelection

Desactiva el botón de opción Selección.

8 &H8& cdlNoPageNums
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Desactiva el botón de opción Páginas y el control de edición asociado.

16 &H10& cdlCollate

Devuelve o establece el estado de la casilla de verificación Intercalar.

32 &H20& cdlPrintToFile

Devuelve o establece el estado de la casilla de verificación Imprimir a un archivo.

64 &H40& cdlPrintSetup

Hace que el sistema muestre el cuadro de diálogo Configurar impresora en lugar de


Imprimir. Use este Flag cuando lo que desea es cambiar la impresora predeterminada.

128 &H80& cdlNoWarning

Evita que aparezca una advertencia cuando no hay una impresora predeterminada.

256 &H100& cdlReturnDC

Devuelve un contexto de dispositivo para la impresora seleccionada en el cuadro de


diálogo. El contexto se devuelve en la propiedad hDC del cuadro de diálogo.

512 &H200& cdlReturnIC

Devuelve un contexto de información para la impresora seleccionada en el cuadro de


diálogo. Un contexto de información proporciona un método rápido de obtener información
sobre el dispositivo sin crear un contexto de dispositivo. El contexto de información se
devuelve en la propiedad hDC del cuadro de diálogo.

2048 &H800& cdlShowHelp

Hace que el cuadro de diálogo muestre el botón Ayuda

262144 &H40000& cdlUseDevModeCopies

Si un controlador de impresora no admite copias múltiples, al establecer este indicador se


desactiva el control de edición de número de copias. Si el controlador sí admite múltiples
copias, al establecer este indicador el cuadro de diálogo almacenará el número de copias
solicitado en la propiedad Copies.

524288 &H80000& cdlDisablePrintToFile


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Desactiva la casilla de verificación Imprimir a un archivo.

1048576 &H100000& cdlHidePrintToFile

Oculta la casilla de verificación Imprimir a un archivo.

Propiedades que afectan al tipo de letra.

Las seis propiedades siguientes nos dan las características especiales de la fuente elegida
(negrita, cursiva, etc.). Una vez seleccionado el tipo de letra, el valor de estas propiedades
contiene la opción elegida para la letra (si FontBold=True es que hemos elegido negrita,
etc.)

FontBold

Propiedad Booleana que establece o devuelve que el tipo de letra usado es Negrita.

Sintaxis Variable = CD1.FontBold

Los valores de Variable son:

True Se ha elegido negrita False (Predeterminado) No se ha elegido negrita.

FontItalic

Propiedad Booleana que establece o devuelve que el tipo de letra usado es Cursiva.

Sintaxis Variable = CD1. FontItalic

Los valores de Variable son:

True si se ha elegido cursiva, False (Predeterminado) en caso contrario.

FontStrikethru

Propiedad Booleana que establece o devuelve que el tipo de letra usado es Tachada.

Sintaxis Variable = CD1. FontStrikethru

Los valores de Variable son:

True si se ha elegido tachado, False (Predeterminado) en caso contrario.

FontUnderline
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Propiedad Booleana que establece o devuelve que el tipo de letra usado es Subrayado.

Sintaxis Variable = CD1.FontUnderline

Los valores de Variable son:

True, si se ha elegido subrayado, False (Predeterminado) en caso contrario

FontName

Devuelve el nombre de la fuente elegida. Es una variable tipo String

Sintaxis Variable = CD1.FontName

(Variable toma el valor del nombre de la fuente. Por ejemplo, Variable = "Arial"

En general, deberá modificar FontName antes de establecer los atributos de tamaño y estilo
con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline.

Nota En tiempo de ejecución puede obtener información sobre las fuentes disponibles a
través de las propiedades FontCount y Fonts. Lo verá mas adelante

FontSize

Devuelve de la fuente elegida. Debe ser una variable tipo Integer o Long

Sintaxis Variable = CD1.FontSize

donde Variable será una expresión numérica que especifica el tamaño de fuente a utilizar,
en puntos.

Nota Las fuentes disponibles en Visual Basic varían dependiendo de la configuración del
sistema y de los dispositivos de presentación e impresión. En las propiedades relacionadas
con las fuentes sólo pueden establecerse valores para los que exista una fuente.

En general, deberá modificar FontName antes de establecer los atributos de tamaño y estilo
con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline.
Sin embargo, cuando especifique un tamaño inferior a 8 puntos para una fuente TrueType,
primero deberá establecer el tamaño en puntos con la propiedad FontSize, luego especificar
la propiedad FontName y después establecer de nuevo el tamaño con FontSize. El entorno
operativo Microsoft Windows utiliza una fuente distinta para las fuentes TrueType con un
tamaño inferior a 8 puntos.

Index
Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
Igual que el ya estudiado para otros controles.

InitDir

Devuelve o establece el directorio de archivos inicial.

Sintaxis objeto.InitDir [= cadena]

La sintaxis de la propiedad InitDir consta de las siguientes partes:

objeto Nombre que define al CommonDialog

cadena Expresión de cadena que especifica el directorio de archivos inicial.

Si no se especifica esta propiedad, se utilizará el directorio actual.

Left y Top

Estas propiedades solamente afectan a la colocación del icono en el formulario. No afectan


a la colocación del CommonDialog durante la ejecución. La posición del CommonDialog
en tiempo de ejecución no puede controlarse.

Esta afirmación de que la posición del CommonDialog no es controlable es válida para


sistemas a 32 bytes. En VB 4 de 16 bits, el CommonDialog aparece aproximadamente en la
parte superior izquierda del formulario que lo contiene. Algunos programadores han optado
por poner un formulario para contener solamente al CommonDialog, y así, controlando la
posición de ese formulario, poder controlar la posición (aproximada) en la que aparece el
CD.

Esto no ocurre para sistemas a 32 bytes, en los que el CD aparece siempre en la parte
superior izquierda de la pantalla, independientemente de donde esté el formulario que lo
contiene.

MaxFileSize

Devuelve o establece el tamaño máximo del nombre de archivo abierto con el control
CommonDialog.

Sintaxis objeto.MaxFileSize [= valor]

La sintaxis de la propiedad MaxFileSize consta de las siguientes partes:

objeto = Nombre que define al CommonDialog


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net
valor = Número entero que especifica el tamaño máximo del nombre de archivo en bytes.
El rango de esta propiedad es 132KB. El valor predeterminado es 256.

Name

Nombre que define al CommonDialog

PrinterDefault

Devuelve o establece una opción que determina si la configuración elegida por el usuario
en el cuadro de diálogo Imprimir se utiliza para modificar la configuración predeterminada
de impresora del sistema.

Sintaxis objeto.PrinterDefault [= valor]

objeto = Nombre que define al CommonDialog

valor = Expresión booleana que especifica si lo seleccionado por el usuario se utiliza para
modificar la configuración de impresora predeterminada del sistema, según se indica en
Configuración.

Las opciones para valor son:

True Las opciones que elija el usuario en el apartado Configurar del cuadro de diálogo
Imprimir (selección de la impresora, orientación, etcétera) se utilizan para modificar la
configuración de impresora en el archivo WIN.INI del usuario. (En el sistema operativo
Windows NT, esta información se almacena en el Registro).

False Las opciones que elija el usuario no se utilizan para modificar la configuración de
impresora predeterminada del sistema.

Utilice esta propiedad, que por defecto está a True, para poner o no poner como impresora
predeterminada, la impresora seleccionada con el CommonDialog. Puede por ejemplo,
querer imprimir un texto en una impresora determinada, pero solo ese texto, y no quiere
cambiar la impresora predeterminada por el hecho de haber seleccionado en este momento
otra impresora. Ponga esta propiedad a False (recuerde que por defecto está a True) para
que la impresora seleccionada no se quede como impresora por defecto.

Tag

Lo mismo que se ha explicado para otros controles.


Visual Basic: guía del estudiante
Descargada de ww.alucardwarez.net

También podría gustarte