(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 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
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 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.
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
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
(*) 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
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.
¿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
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
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
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 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)
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.
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:
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.
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
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
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:
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)
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
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
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
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
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
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)
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)
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.
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")
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
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%)
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.
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.
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.
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.
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)
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)
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.
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.
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 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 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
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 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.
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 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.
Guía de Visual Basic: – Segunda Parte – Tercera Parte – Bajar
Trabajo
Página siguiente |