Está en la página 1de 50

INTRODUCCION A LA PROGRAMACION EN

VISUAL BASIC 6.0


Carlos Armando Cuevas Vallejo
DME-CINVESTAV-IPN
¿Qué es un lenguaje de programación? Un lenguaje de
programación de alto nivel es una especie de traductor que
nos permite comunicarnos con los circuitos internos de una
microcomputadora. En efecto, mediante un lenguaje de
programación, comunicamos acciones, como escribir en la
pantalla, calcular, dibujar, etc; a los circuitos internos de
una computadora. Ella efectúa las tareas asignadas y una vez
que las completa, comunica, también a través del mismo
lenguaje, los resultados obtenidos. Existen diversos
lenguajes como: C++, Java, Prolog, Lisp, Fortran, Visual
Basic, Visual Net, etc. Todos ellos con ciertos fines
particulares. Por ejemplo, Java es el lenguaje de la red
(Internet), C un lenguaje de funciones, Lisp procesa listas y
se utiliza para la programación en inteligencia artificial y
así sucesivamente. En esta introducción veremos uno de los
lenguajes más utilizados y amigables1 Visual Basic versión
6.0 (VB6).
VB6 es un lenguaje dirigido a objetos, esto significa que
programar en VB6 es programar objetos computacionales.
Programar la computadora mediante un lenguaje significa dar
una serie de instrucciones a la máquina para que las ejecute

1
Por amigable se entiende un lenguaje cuya interfaz de comunicación con el usuario es clara y sencilla de
entender.
CARLOS ARMANDO CUEVAS VALLEJO

en una cierta secuencia. Pero empecemos por partes. En primer


término se tiene que “instalar” el lenguaje VB6 en la
computadora. VB6 viene desarrollado en tres compactos, el
primero instala el lenguaje propiamente y los otros dos
instalan bibliotecas con programas necesarios para el buen
funcionamiento del lenguaje. La instalación es autocontenida
y sólo basta ir poniendo disco a disco conforme lo solicita y
por lo tanto no nos detendremos en explicar algo acerca de lo
mismo. Una vez instalado el lenguaje para empezar a programar
se “carga” el lenguaje de la siguiente forma:
1 Has clic2 con el Mouse en y después has clic en [
]
2. Una vez que se abre el abanico del menú elegimos de ahí
Microsoft Visual Basic 6.0 (véase figura 3.1), haciendo clic sobre el
mismo.

Figura 3.1. Carga de Visual Basic en escritorio,


De inmediato aparece la siguiente una interfase (véase figura
3.2).
2
Por hacer clic sobre un objeto, se entiende situar el cursor sobre el objeto y oprimir el botón izquierdo del
ratón.

2
INTRODUCCION A VISUAL BASIC 6.0

Figura 3.2. Interfase para iniciar un proyecto en


Visual Basic ver 6.0.
La ventana de la figura 3.2, nos permite crear diversos tipos
de programas que eventualmente describiremos; por lo pronto
iniciemos con un proyecto realizado en una forma estándar.
Proyecto Juego Melate
El juego de melate consiste en elegir seis números entre 51
que se proponen. Un jugador toma una tabla y de ella elige
seis números con los que podrá jugar con una opción entre
18,009,460 posibilidades. El proyecto que se propone consiste
en generar una séxtupla aleatoria. Es decir, una persona al
correr este programa generará seis números aleatorios entre
los 51 propuestos. De esta forma la persona podrá jugar al
melate con “la combinación de la suerte” dada por la
computadora.
Si se elige la opción EXE estándar, haciendo clic sobre el icono
asociado aparece la interfase dada en la figura 3.3.

3
CARLOS ARMANDO CUEVAS VALLEJO

Opcionalmente, se abre también, señalando esta opción y


posteriormente se oprimiendo el botón [Abrir]

Figura 3.3. Interfase de VB6 con forma estándar.


Describiremos a continuación los elementos de esta interfase.
Dejando para después los tres primeros renglones.
La primera columna contiene los objetos que podemos instalar
en la forma. A esta columna se le llama caja de herramientas
y se describen brevemente en la figura 3.4.

4
INTRODUCCION A VISUAL BASIC 6.0

Figura 3.4. Objetos de VB6


que podemos insertar en una
forma.
La siguiente columna contiene la Forma.
La forma define la interfase con el usuario. Utilizando una
analogía, la forma es como un lienzo en blanco en donde
podemos ubicar los diversos objetos que se tienen en
herramienta y que una vez finalizado se presenta al usuario.
Describamos la idea de cómo se realizará el proyecto.
Deseamos que en una pantalla mediante la opresión de un botón
se genere una séxtupla de números aleatorios que será “la
combinación ganadora” para jugar el melate. Una idea será
como la que se exhibe en la figura 3.5

5
CARLOS ARMANDO CUEVAS VALLEJO

Figura 3.5. Interfase para generar una


séxtupla de melate.
Desde luego esta interfase puede contener más letreros
colores, figuras, etc. El diseño lo define el que crea el
programa, pero esencialmente estos serán los objetos de la
interfase.
La tercera y última columna (véase figura 3.6), en la parte
superior contiene información sobre el proyecto que se está
construyendo con todas las formas que contuviera. Debajo de
esta parte, aparece el nombre del objeto con el que se este
trabajando y sus propiedades. El objeto puede ser una forma
(véase figuras 3.6 y 3.7), etiqueta, caja de texto, etc.
Finalmente en la parte inferior se describe el objeto
brevemente (véase figura 3.7).

6
INTRODUCCION A VISUAL BASIC 6.0

Figura 3.6. Figura 3.7. Parte


Parte de la interfase de la interfase de
de VB6 que describe VB6 que describe el
el proyecto y las proyecto y las
propiedades del propiedades del
objeto forma. objeto caja de
texto.

Observación

Si por el momento tiene alguna confusión por no entender


cabalmente, no se preocupe. Los objetos que se describen
alcanzarán un grado de comprensión mayor en cuanto empecemos
a trabajar con ellos. La programación y el uso de los objetos
es algo que se logra gradualmente en el tiempo.

Iniciemos ampliando el campo visible de la forma haciendo


clic en el cuadrito □ tanto de la forma como del proyecto

7
CARLOS ARMANDO CUEVAS VALLEJO

(véase figura 3.8) hasta que quede de la forma que se ilustra


en la figura 3.9.

Figura 3.8. Toda forma


tiene tres opciones que
se ofrecen en los tres
cuadritos de la dere-
cha. La primera [-]
reduce y esconde la
forma del escritorio,
la segunda [□▫] amplia
o reduce la forma y la
tercera [X] finaliza y
descarga la forma.

Figura 3.9. Forma ampliada.

Nota
A veces para obtener la ventana deseada para trabajar es
necesario ajustarla mediante las barras al lado izquierdo y
debajo de la ventana de forma (véase figura 3.9).

Insertemos ahora los objetos que queremos para definir la


interfase. Primero insertamos una etiqueta para rotularla con
el nombre MELATE. También es posible instalar seis etiquetas
más en donde pondremos los números aleatorios que se
generarán para jugar el melate. Para ello, hacemos clic en el
objeto etiqueta que se identifica, en herramienta, por tener
una letra en un cuadrito A . Enseguida movemos el ratón hasta
la forma y en donde deseemos ubicar el letrero hacemos clic
oprimiendo y dejando oprimido el botón izquierdo del mismo
ratón. Al mover el ratón, con el botón izquierdo oprimido, se
va delineando el largo y ancho de la etiqueta que deseamos

8
INTRODUCCION A VISUAL BASIC 6.0

definir (véase figura 3.10). Las dimensiones de una etiqueta


se pueden definir posteriormente, así que tan sólo se
establece la etiqueta con una dimensión aproximada. Una vez
que se suelta el botón del ratón, puede mover el objeto si
simplemente ubica al ratón sobre él y al oprimir y dejar
oprimido el botón izquierdo lo mueve al lugar deseado.
También una vez que se hace clic sobre el objeto aparecen los
cuadritos en los bordes que nos permiten estirar (modificar
su longitud) o reducir (modificar el ancho) del objeto (véase
figura 3.11).

Figura 3.10. Una etiqueta de Figura 3.11. Cuadritos en los


dimensión aproximada. bordes de etiqueta que
permiten ajustar su dimensión.
Vamos ahora a definir algunas propiedades de este objeto.
Al hacer clic sobre el objeto también aparecen en la parte
derecha inferior las propiedades de la etiqueta (véase figura
3.12). Vamos a ir estableciendo algunas de ellas.
En primer lugar hacemos clic al lado derecho de donde dice
(Nombre). Este será el nombre que tendrá en el programa el
objeto. Es decir, con este nombre lo identificará el
programador y por supuesto lo bautiza el mismo. En este caso
le pondremos lblMelate01. Aunque el nombre lo elige el
programador, es acuerdo internacional el que todo objeto de
etiqueta inicie con las letras lbl. De esta manera al

9
CARLOS ARMANDO CUEVAS VALLEJO

programar se tendrán identificados todos los objetos que sean


etiquetas de otros objetos al identificar lbl en el nombre.
Caption (subtitulo). Al hacer clic al lado derecho de la
palabra Caption se permite capturar el texto o titulo que
llevará la etiqueta.
En nuestro caso escribiremos en mayúsculas MELATE.
Font (fuente). Permite definir tipo, tamaño y cualidad de
letra. Al hacer clic al lado derecho de Font aparece un
cuadrito con tres puntos . Al hacer clic
sobre el cuadrito, aparece una ventana (véase figura 3.13)
que nos permite elegir el tamaño (número), tipo (fuente) y
estilo (negrita, cursiva) de letra que deseamos. En nuestro
caso elegimos: Arial, 48 y negrita.

Figura 3.13.
Ventana para definir tipo, tamaño
y cualidad del texto.

Figura 3.12.
Propiedades del objeto
etiqueta.

10
INTRODUCCION A VISUAL BASIC 6.0

Alignment (Alineación). Define la alineación que llevara el


texto de la etiqueta. Elegimos 2-center que es centrar.
Appearance (Apariencia). Define la apariencia de la etiqueta,
entre plana o de tres dimensiones. Nosotros elegimos 1-3D.
AutoSize (Autotamaño). Permite establecer el tamaño de la
etiqueta de acuerdo al tamaño del texto. Se define como
variable lógica y por ende tiene el valor False (Falso) o True
(verdadero). En este caso será True.
BackColor (Color de fondo). Define el color de fondo de la
etiqueta. Sobre este color se escribirá el texto. Para
colorear el fondo al hacer clic al lado derecho aparece una
punta de flecha (véase figura 3.14) y al hacer clic sobre
ella aparece una ventana emergente como se ve en la figura
3.14. Los colores que aparecen con la pestaña Sistema, son
colores propios del sistema y son tonos negros y grises. Al
hacer clic en la pestaña Paleta aparecen diversos colores y
haciendo clic en el color elegido, definimos el color del
fondo de la etiqueta. En este caso naranja.

Figura 3.14. Colores que Figura 3.14. Colores que


aparecen con Sistema. aparecen con Paleta.
BackStyle (estilo del fondo). De nuevo al hacer clic a la
derecha, aparece una punta de flecha que al oprimirla permite

11
CARLOS ARMANDO CUEVAS VALLEJO

elegir entre 1-Opaque (fondo opaco) o 0–Transparent

(transparente).
BorderStyle (Estilo del borde). Al hacer clic a la derecha,
aparece una punta de flecha que al oprimirla permite elegir
entre dos opciones 1-Fixed Single (arreglo único) o 0-none

(ninguno).
Enabled (Habilitado). Esta propiedad habilita o deshabilita un
objeto. De nuevo esta propiedad queda definida como variable
lógica y por ende tiene el valor False (Falso) para
deshabilitar o True (verdadero) para habilitar. En este caso
será True.
ForeColor (Color de texto). Como su nombre lo indica define el
color del texto y se opera en forma semejante a BackColor.
Height (altura o ancho). Define la altura de la etiqueta de un
objeto en twips.
El twip es una unidad independiente de la pantalla utilizada
para asegurar que la colocación y la proporción de los
elementos de la pantalla de la aplicación son los mismos en
todos los sistemas de pantallas. Un twip es una unidad de
medida de la pantalla igual a 1/20 de un punto de impresora.
Existen aproximadamente 1440 twips en una pulgada lógica o
567 twips en un centímetro lógico (la longitud de un elemento
de pantalla que mide una pulgada o un centímetro al
imprimirse).
Width (largo). Define el largo de la etiqueta u objeto y
también se mide en twips.
Index (índice). Cuando se definen varios objetos de etiqueta
con el mismo nombre, para distinguirlos a cada uno de ellos

12
INTRODUCCION A VISUAL BASIC 6.0

se le asocia un índice (v. gr. lblEtiq(0),lblEtiq(1),


lblEtiq(2), etc.).
Left (Izquierda). Mide en wips la distancia relativa de
izquierda a derecha, del extremo izquierdo de la forma a la
etiqueta.
Top (Tope o cima) Mide en wips la distancia relativa al tope
de la etiqueta a la forma o a algún contenedor.
Visible (visible). Define si el objeto que se inserto es
visible o no en tiempo de ejecución. Esta propiedad queda
definida como variable lógica y por ende tiene el valor False
(Falso) para no visible o True (verdadero) para que sea
visible. En este caso será True.
Ejercicio. Posicione el objeto de etiqueta recién definido
dando valores a la altura, ancho, color de fondo, de letra,
tipo y cualidad de letra, etc.
Hemos definido en detalle algunas propiedades de este objeto
puesto que muchos de los otros objetos como botón de comando,
caja de texto, etc. comparten estas propiedades. De tal forma
que conociéndolas se aplican al nuevo objeto.
Continuando con la construcción del programa melate, después
de ubicar la etiqueta con el nombre, podemos insertar otra
etiqueta para el número que aparecerá, quedando como se
ilustra en la figura 3.15.
El largo, ancho, color, tipo y tamaño del número se definen
dando los respectivos valores en las propiedades. Aunque es
posible definir así cada una de las seis etiquetas para los
números propongo la siguiente manera que creo es más
eficiente. Una vez definida el largo, ancho, color de fondo,

13
CARLOS ARMANDO CUEVAS VALLEJO

color de texto, tipo o fuente, tamaño, cualidad (negrita) de


la primer etiqueta se le marca haciendo clic sobre de ella y
aparecen los cuadritos en el borde para reajustar el tamaño.
En ese momento se dirige uno al menú de barra (superior), se
hace clic en Edición y se elige del menú persiana que se abre
la opción Copiar. Al cerrarse este menú se vuelve a la opción
Edición y al abrirse el menú persiana se elige Pegar. En ese
momento una ventana nos anuncia que si se desea crear una
matriz de controles (etiquetas) se oprime el botón de si e
inmediatamente aparece otra etiqueta con las propiedades
definidas con anterioridad (véase figura 3.16).

Figura 3.16. Copiando en la forma


Figura 3.15. Estado de la forma una etiqueta.
en construcción.
Repitiendo este proceso conseguimos definir las seis
etiquetas requeridas para los números.
Vamos a introducir un nuevo objeto que es muy útil para el
diseño de interfases. Su utilidad queda mostrada cuando
tratamos de alinear las seis etiquetas para los números. Como
estamos en diseño y construcción es muy posible que
necesitemos cambiar de posición a las seis etiquetas, pero al
hacer esto se tendrían que alinear de nuevo las seis, de tal
forma que si esto por razones de estética se tuviera que

14
INTRODUCCION A VISUAL BASIC 6.0

hacer varias veces, el trabajo de alinearlas sería de verdad


insufrible por lo laborioso. El nuevo objeto que vamos a
introducir se llama Frame (marco) y como su nombre lo dice es
un marco contenedor de varios objetos de tal forma que al
mover el marco se mueve con todos los objetos que tenga
contenidos en él. Además los objetos quedan referenciados a
este marco.
De nuevo al hacer clic en el cuadrito que tiene en el borde

xy en herramienta y, al arrastrar el ratón en la forma


podemos definir aproximadamente longitud y ancho del marco.
Ahora definimos sus propiedades de la siguiente forma
(Nombre) fraMelate.
Las iniciales fra son las que anteceden o parte del nombre
para cualquier frame o marco que se inserte en una forma
Apearance: 1-3D
BackColor: El que guste de la paleta
BorderStyle: Fixed Single
Caption: En este caso borramos el nombre Frame1 que por defecto
pone VB6, de esta forma sólo queremos el marco sin ningún
nombre para el mismo.
Height: 1350
Width: 6700
Y son todas las propiedades que definiremos.

Tip
Cuando se desea ajustar un marco (frame) o cualquier otro
objeto, puede ajustarlo en la misma forma haciendo uso de los
cuadritos de ajuste de cualquier control. Una vez que llegue

15
CARLOS ARMANDO CUEVAS VALLEJO

a convencerse de las dimensiones, le da un segundo ajuste


definiendo las propiedades Left, Rigth, Height y Width.

Hasta el momento tendremos una forma como la que se observa


en la figura 3.17, en la cual pueden cambiar tamaño y color
de los objetos.

Figura 3.17. Avance del proyecto melate.


Posiblemente el lector, tenga hasta el momento la inquietud
de ¿Cuándo se empieza a programar? Si esto fuera así es
conveniente mencionar que Visual Basic es un lenguaje de
programación por objetos, es decir, que el programa inicia o
se dispara cuando se actúa sobre los objetos. Así lo que se
programan son los objetos.
En este caso, se ha pensado el programa de forma que inicie
las operaciones en cuanto el usuario oprima un botón que diga
“Combinación Ganadora”. Esto brevemente quiere decir que toda
la acción recaerá sobre este botón.
Finalmente para terminar de ubicar los objetos en la forma
pondremos los dos botones que faltan.

16
INTRODUCCION A VISUAL BASIC 6.0

Para ello se dirige el ratón a herramienta y hacemos clic

sobre el objeto que es un botón de comando (Command


button) y, al arrastrar el ratón en la forma podemos definir
aproximadamente las dimensiones del botón.
Enseguida definiremos sus propiedades de la siguiente forma
(Nombre) cmdMelate.
Las iniciales cmd son las que anteceden o parte del nombre
para cualquier botón de comando que se inserte en una forma
Apearance: 1-3D
BackColor: El que guste de la paleta
Font; tipo Comic Sans MS; tamaño 12, cualidad negrita
Caption: Combinación Ganadora
Height: 600
Style: 1-Graphical
Width: 2700
Enseguida podemos definir el segundo botón de la siguiente
forma:
(Nombre) cmdCancelar.
Apearance: 1-3D
BackColor: El que guste de la paleta
Font; tipo Arial; tamaño 12, cualidad negrita
Caption: Cancelar
Height: 600
Style: 1-Graphical
Width: 2700
Una vez definidos todos los objetos de la forma, vayamos a la
programación del proyecto melate.

17
CARLOS ARMANDO CUEVAS VALLEJO

Haciendo doble clic sobre el botón [Combinación Ganadora]


aparece una ventana como la que se aprecia en la figura 3.18.

Figura 3.18. Ventana para programar un método del


objeto botón de comando.
Este es el momento de aclarar un poco sobre la programación
de los objetos. Todo objeto (etiqueta, caja de texto, forma,
etc.) tiene propiedades y eventos o métodos. Las propiedades,
como ya hemos visto, definen las características de su
presentación. Los eventos por el contrario definen acciones
del objeto ante una acción del usuario. Es, valga la
analogía, como cuando se infla un globo, las propiedades son
tamaño, color, etc. Y el evento será ¿qué sucede cuando se le
pincha? ¿Cuándo se le suelta?
Los eventos asociados al objeto botón de comando (command
button) se pueden obtener haciendo clic en la flecha de la
ventana derecha de la figura 3.18 (véase figura 3.20)

Figura 3.21. Lista de objetos


instalados en la forma.

Figura 3.20. Eventos


asociados a botón de comando.

18
INTRODUCCION A VISUAL BASIC 6.0

Todos ellos tienen su función y en la medida de avance y


necesidad los iremos explicando. En este caso iniciamos con
el evento click.
Click. Este evento se dispara en cuanto el usuario hace clic
sobre el botón.
Y dentro del proyecto este evento tendrá toda la
responsabilidad del mismo. Es decir, en este evento se deben
de generar los seis números aleatorios y además ponerlos en
las respectivas etiquetas. Pero antes de iniciar propiamente
la programación mencionaremos algunas generalidades de los
lenguajes de programación:
Todo lenguaje contiene en su programación los siguientes
elementos: variables, operaciones de tipo aritmético y
lógico, ciclos numéricos y lógicos, funciones y subrutinas.
Cuando se hace el esbozo de un programa se cuenta las
variables y tipo de tal forma que en un programa en VB6 lo
primero que se tiene que hacer es declarar todas las
variables que usemos dentro de este programa o evento.
Daremos una descripción general de cada uno de estos
elementos y enseguida se mostrará el programa para el
proyecto melate.
Una variable es un lugar de almacenamiento con nombre que
puede contener cierto tipo de datos que puede ser modificado
durante la ejecución del programa. Cada variable tiene un
nombre único que la identifica dentro de su nivel de ámbito.
Puede especificar un tipo de datos o no. Los nombres de
variable deben comenzar con un carácter alfabético, deben ser
únicos dentro del mismo ámbito, no deben contener más de 255

19
CARLOS ARMANDO CUEVAS VALLEJO

caracteres y no pueden contener un punto o carácter de


declaración de tipo. Las variables, pueden ser de tres tipos.
Variables que sólo tiene validez en el procedimiento en que
se definen. Usualmente se les llama variables locales.
Variables que tienen validez en toda la forma y se les llama
variables locales a la forma y finalmente variables que son
válidas en todo el proyecto. A estas variables se les suele
llamar variables globales. Ahora bien las variables en VB6
pueden ser de varios tipos, por el momento daremos dos. Tipos
de variables. Las variables numéricas y las variables
lógicas.
Las variables numéricas son números por lo tanto pueden ser
del tipo Integer (Entera). Las variables Integer se almacenan
como números de 16 bits (2 bytes) con valores que van de
-32, 768 a 32,767. El carácter de declaración de tipo para el

tipo Integer es el signo de porcentaje (%). Como se puede


observar el rango para los posibles valores de una variable
entera es relativamente pequeño [ -32, 768 , 32, 768] y esto tiene

que ver con la memoria que ocupa una variable de este tipo.
Sin embargo, si se desea un mayor rango puede optar por Long.
Long. Las variables Long (enteros largos) se almacenan como
números con signo de 32 bits (4 bytes) con un valor
comprendido entre -2,147,483,648 y 2147,483,647. El carácter
de declaración de tipo para Long es el signo &.
Observe que Long ocupa el doble de memoria que Integer.
La otra variable numérica usual es Double.

20
INTRODUCCION A VISUAL BASIC 6.0

Double. Las variables dobles (punto flotante de doble


precisión) se almacenan como números IEEE de coma flotante de
64 bits (8 bytes) con valores de -1,79769313486232E308 a
-4,94065645841247E-324 -1.797 �10308 , - 4.940 �10-324 �

� � para valores
negativos y de 4,94065645841247E-324 a 1,79769313486232E308
4.940 �10 -324 , 1.797 �10308 �

� � para valores positivos. El carácter de
declaración de tipo para Double es el signo de número (#).
Sin embargo, si uno desea una variable tipo doble o no
entera de menos precisión (menor memoria) puede optar por
Single.
Single. Las variables Single (punto flotante de precisión
simple) se almacenan como números IEEE de coma flotante de 32
bits (4 bytes) con valores que van de
-3.402823E38 a -1.401298E-45 -3.4028 �1038 , 1.401�10-45 �

� �para
valores negativos y de
1.401�10 -45 , 3.4028 �1038 �
1.401298E-45 a 3.402823E38 �
� � para valores
positivos. El carácter de declaración de tipo para Single es
el signo de exclamación (!).
Las funciones son programas que se pueden invocar en un
programa para que realice cierto proceso y/o operaciones.
Las funciones que utilizaremos en este programa son dos.
Rnd[(número)]: Rnd son las siglas para la función Random
(aleatorio). Esta función genera o devuelve un número
aleatorio entre 0 y 1 de tipo Single. número es un argumento
opcional y es tipo Single o cualquier expresión numérica
válida. Cuando no se pone argumento y sólo se usa Rnd esta
función devuelve un número mayor o igual a cero y menor que

21
CARLOS ARMANDO CUEVAS VALLEJO

uno. El valor de número determina cómo la función Rnd genera


un número aleatorio:
Para cualquier valor de semilla inicial se genera la misma
secuencia de números. Esto es debido a que cada llamada
sucesiva a la función Rnd usará el número anterior como valor
de semilla para el siguiente número de la secuencia.
Valores devueltos

Si número es Rnd genera

Menor que cero El mismo número todas las veces, utilizando


número como valor de semilla.

Mayor que cero El siguiente número aleatorio de la secuencia.

Igual a cero El número generado más recientemente.

No se El siguiente número aleatorio de la secuencia.


especifica

Por ejemplo
N=rnd*4 Esta operación devuelve en N, un número de tipo
single mayor o igual a 0 y menor a 4.
Observe que el valor de una función debe asignarse a una
variable. De no ser así el programa marcaría un error por que
no sabría que hacer con el valor que la función devuelve.
Es conveniente anotar que esta función no genera números
aleatorios en sentido estricto, sino que los genera en un
cierto orden. Es por eso que suele llamarse a esta función
SEUDOALEATORIA. Si uno quisiera simular una generación de
números aleatorios es conveniente utilizar la función

22
INTRODUCCION A VISUAL BASIC 6.0

Randomize.
Randomize [número]: El argumento opcional número es un tipo
Variant o cualquier expresión numérica válida.
La instrucción Randomize utiliza número para inicializar el
generador de números aleatorios de la función Rnd y le asigna
un nuevo valor de semilla. Si omite número, el valor devuelto
por el reloj del sistema se usa como el nuevo valor de
semilla.
Si no utiliza la instrucción Randomize, la función Rnd (sin
argumentos) utiliza el mismo número como valor de semilla la
primera vez que se la invoca, usando después como valor de
semilla el último número generado.
Otra función que utilizaremos es la función Int.
Int(número). Esta función entrega o devuelve la parte entera de
un número double o single. Si el número es mayor que uno
devuelve la parte entera si es menor a uno entrega cero.
Finalmente también utilizaremos una instrucción de ciclo
numérico el cual tiene la siguiente estructura:
For i = k to n
Instrucción 1
Instrucción 2
……
Next i
Esta instrucción ejecuta las instrucciones dentro del cuerpo
For-next tantas veces como lo indique el contador desde k
hasta n aumentando de uno en uno.
La sintaxis se describe a continuación
For contador = principio To fin [Step incremento]

23
CARLOS ARMANDO CUEVAS VALLEJO

[instrucciones]
[Exit For]
[instrucciones]
Next [contador]
La sintaxis consta de las siguientes partes:

Parte Descripción

Contador Requerido. Variable numérica que se utiliza


como contador de bucle o ciclo. La variable no
puede ser Booleana (lógica) ni un elemento de
matriz.

Principio Requerido. Valor inicial del contador.

Fin Requerido. Valor final del contador.

incremento Opcional. Cantidad en la que cambia el


contador cada vez que se ejecuta el ciclo. Si
no se especifica, el valor predeterminado de
incremento es uno.

instrucciones Opcional. Una o más instrucciones entre For y


Next que se ejecutan un número especificado de
veces.

Comentarios
El incremento puede ser positivo o negativo. El valor del
argumento incremento determina la manera en que se procesa el
bucle, como se muestra a continuación:

Valor El bucle se ejecuta si

24
INTRODUCCION A VISUAL BASIC 6.0

Positivo o 0 contador < = (menor o igual a)


fin

Negativo contador > = (mayor o igual a)


fin

Una vez que se inicia el bucle y se han ejecutado todas las


instrucciones en el bucle, incremento se suma a contador. En
este punto, las instrucciones del bucle se pueden ejecutar de
nuevo (si se cumple la misma prueba que causó que el bucle se
ejecutara inicialmente) o bien se sale del bucle y la
ejecución continúa con la instrucción que sigue a la
instrucción Next.
Sugerencia: Cambiar el valor de contador mientras está dentro
de un bucle hace difícil su lectura y depuración.
Se pueden colocar en el bucle cualquier número de
instrucciones Exit For como una manera alternativa de salir
del mismo y, transfiere el control a la instrucción que sigue
inmediatamente a la instrucción Next.
Se pueden anidar bucles For...Next, colocando un bucle
For...Next dentro de otro. Para ello, proporcione a cada
bucle un nombre de variable único como su contador. La
siguiente construcción es correcta:
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
...
Next K
Next J
Next I

Nota Si omite un contador en una instrucción Next, la


ejecución continúa como si se hubiera incluido. Se produce un

25
CARLOS ARMANDO CUEVAS VALLEJO

error si se encuentra una instrucción Next antes de su


instrucción For correspondiente.
Para finalizar la introducción de objetos instrucciones y
funciones daremos una instrucción de tipo lógico. La
instrucción If...Then..
Esta instrucción ejecuta condicionalmente un grupo de
instrucciones, dependiendo del valor de una expresión.
Su sintaxis es la siguiente:

If condición Then

[instrucciones]

[Else

[instrucciones_else]]

End If

O bien

If condición Then

[instrucciones]

[ElseIf condición-n Then

[instrucciones_elseif] ...

[Else

[instrucciones_else]]

End If

Esta instrucción opera de la siguiente manera:


Cuando se ejecuta un bloque If, se prueba condición. Si
condición es True, se ejecutan las instrucciones que están a

26
INTRODUCCION A VISUAL BASIC 6.0

continuación de Then. Si condición es False, se evalúan una a


una las condiciones ElseIf (si existen). Cuando se encuentra
una condición True se ejecutan las instrucciones que siguen
inmediatamente a la instrucción Then asociada. Si ninguna de
las condiciones ElseIf es True (o si no hay cláusulas ElseIf), se
ejecutan las instrucciones que siguen a Else. Después de la
ejecución de las instrucciones que siguen a Then o Else, la
ejecución continúa con la instrucción que sigue a End If.
La sintaxis de la instrucción If...Then...Else consta de tres
partes:

Parte Descripción

condición Requerido. Uno o más de los siguientes dos tipos de expresiones:

Una expresión numérica o expresión de cadena que puede ser


evaluada como True o False.

instrucciones Opcional en formato de bloque; se requiere en formato de línea


sencilla que no tenga una cláusula Else. Una o más instrucciones
separadas por dos puntos ejecutados si la condición es True.

condición-n Opcional. Igual que condición.

instrucciones_elseif Opcional. Una o más instrucciones ejecutadas si la condición-n


asociada es True.

instrucciones_else Opcional. Una o más instrucciones ejecutadas si ninguna de las


expresiones anteriores condición o condición-n es True.

Observación
Aunque puede utilizar If-then-else-end if en la forma de una
sola línea para pruebas cortas y sencillas. El formato de
bloque proporciona más estructura y flexibilidad que la forma
de línea simple y, generalmente, es más fácil de leer, de
mantener y de depurar.

27
CARLOS ARMANDO CUEVAS VALLEJO

Tips
-El bloque If debe terminar con una instrucción End If. En
caso contrario se marca error.
-Para determinar si una instrucción If es un bloque, examine
lo que sigue a la palabra Then. Si lo que aparece detrás de
Then en la misma línea no es un comentario, la instrucción se
considera como una instrucción If de una sola línea.
-Las cláusulas Else y ElseIf son opcionales. Puede tener en
un bloque ElseIf, tantas cláusulas If como desee, pero
ninguna puede aparecer después de una cláusula Else.
-Las instrucciones de bloque If se pueden anidar; es decir,
unas pueden contener a otras.

Ejemplo
If n > 3 then ‘Si el valor de n > que 3 entonces
lblMelate.Caption= “Ya jugaste tres partidas” ‘asigna
un rotulo
else ‘En caso contrario (si n<=3)
lblmelate.Caption=”Sigue jugando, puedes ganar” ‘Asigna
otro rotulo
end if ‘Fin de bloque if

Observación
Note que tanto en un bloque de tipo if-then-else-end if; como
en for-next. Las instrucciones del bloque se escriben con una
cierta sangría para de esta forma tener a simple vista la
longitud del bloque y las instrucciones que contiene.

28
INTRODUCCION A VISUAL BASIC 6.0

Vayamos ahora al cuerpo del programa que recordamos debe de


estar dentro del evento click del botón de comando
“Combinación Ganadora”
La primera parte es la declaración o dar de alta todas las
variables que vamos a utilizar, mediante la instrucción Dim
El apostrofe ‘ sirve para incluir comentarios en un programa
cuando la máquina lee el programa al ver la comilla deja de
hacerle caso a lo que le sigue.

Private Sub CmdMelate_Click()

Dim i As Integer ‘Declara i como variable entera para tener un contador

Dim j As Integer ‘Declara j como variable entera para tener otro contador

Dim propu As Integer ‘Declara propu como variable entera para tener un valor

‘inicial para melate

Dim num(5) As Integer ‘Declara 6 variables enteras para almacenar los números

‘de melate. A saber: num(0), num(1), num(2),…, num(5)

Dim n As Integer ‘Declara j como variable entera para definir el número

‘máximo de posibles números que juegan.

‘valores para los números de melate

n = 45 'Numero máximo de posibles enteros para melate

‘Contamos con 6 lugares o memorias para poner en ellas los números que se irán

‘generando en forma aleatoria para la combinación. ‘El primer lugar lo ocupa un número que

‘se genera en forma aleatoria mediante la función Rnd()

num(0) = Int(1+Rnd * n) ‘Genera un número aleatorio entre 1 y n

LblMelate(0).Caption = num(0) ‘Asigna a la primer etiqueta el valor encontrado

‘num(0)

For i = 1 To 5 ‘Inicia un ciclo con la variable i como contador a partir de

‘1 hasta 5

j=0 ‘Asigna el valor 1 a la variable j

29
CARLOS ARMANDO CUEVAS VALLEJO

propu = Int(1+Rnd * n) ‘Genera un número aleatorio entre 1 y n y se lo asigna a

‘la variable propu

For j = i To 0 Step -1 ‘Inicia un ciclo con la variable j como contador a partir

‘del valor de i decreciendo en su valor hasta 0.

If num(j) = propu Then ‘instrucción de tipo lógico si propu es igual al valor que

‘contiene num(j) producido anteriormente, entonces

propu = Int(Rnd * (n + 1)) ‘se vuelve a generar propu

j=0 ‘Asigna el valor 0 a la variable j

End If ‘Fin del bloque if

Next j ‘Fin del bloque For con contador j

num(i) = propu ‘Asigna a la variable siguiente num(i) (i se ha

‘incrementado) el valor encontrado en propu

LblMelate(i).Caption = propu ‘Asigna a la etiqueta siguiente lblMelate(i) (i se ha

‘incrementado) el valor encontrado en propu

Next i ‘Fin del bloque For con contador i

End Sub ‘Fin del bloque de la subrutina del evento click asociado al botón

Ejercicios y preguntas:
¿Qué sucede si eliminamos del programa la instrucción if con
todo y bloque?
¿Por qué el bloque For con contador j decrece? ¿No sería
posible cambiarlo por uno con contador creciente?
¿Por qué se ocupan exactamente las seis etiquetas? ¿Es la
única manera de realizar este programa?
¿Qué pasa si melate cambia y ahora son 68 números posibles,
sirve el programa? Prueba tu respuesta
¿Qué sucede si ahora se tiene que elegir 8 números entre 82?
¿Puedes adaptar el programa?

30
INTRODUCCION A VISUAL BASIC 6.0

Todas tus respuestas pruébalas cambiando en el programa las


instrucciones correspondientes y verifica qué sucede.
2. Si haces doble clic en la forma (no sobre un objeto de
ella) se abre una ventana para programar la primer subrutina
o evento que sucede al corre un programa que es Sub Form_Load
En ella se pueden definir las dimensiones que tendrá la forma
además de activar la función Randomize para que Rnd genere
números aleatorios. Modifica las magnitudes para que observes
que sucede hasta llegar a la dimensión que te satisfaga.
Private Sub Form_Load()
Width = 8500
Height = 7000
Top = 1000
Left = 500
Randomize
End Sub

Nota
Cuando se comete un error de sintaxis el programa al compilar
(traducirlo a lenguaje de máquina) marca exactamente (hasta
donde se pueda) el error. Así que no se preocupe empiece a
programar puesto que la única forma de tener cierta destreza
en programación es mediante ensayo y error.

Segundo proyecto
Programa para ayudar a sumar dos números enteros
Este segundo proyecto es un programa para ayudar a sumar dos
números enteros. Como todos los proyectos de programación, se
propondrá una forma de hacerlo y queda en libertad el autor

31
CARLOS ARMANDO CUEVAS VALLEJO

para modificar aumentar o extender las diversas opciones


tanto del problema como del proceso de evaluación.
El proyecto será como el que se presenta en la figura

Figura 3.22. Interfase para el proyecto de suma de dos


enteros.
De ser así el proyecto se requerirán etiquetas para letreros
y números a proponer para la suma, botones de comando y un
nuevo objeto ¡la caja donde recibirá la respuesta!
Para este nuevo elemento se requiere una caja de texto. Este
objeto puede funcionar al igual que la etiqueta, se puede
rotular con el, salvo que tiene la propiedad de que el
usuario puede escribir dentro de la caja. La idea es que el
usuario escriba la respuesta en esta caja y que una vez
terminada oprima el botón de revisar. Enseguida el programa,
mediante un letrero, le indicará si es correcta o incorrecta
la respuesta.

32
INTRODUCCION A VISUAL BASIC 6.0

Iniciemos como en el primer proyecto definiendo la interfase


de este proyecto.
En primer término “cargamos” o instalamos VB6 en escritorio
(véase pags. 2,3 y 4).
Enseguida de acuerdo al dibujo de la figura 3.22 insertamos
las etiquetas convenientes.
Primero se define la etiqueta que llevará el titulo del
programa y se hará en forma semejante a lo realizado en el
proyecto MELATE (pags. 8,9 y 10)
Una vez puesta la etiqueta se definen sus propiedades
(Nombre). lblSumaE01.
Caption (subtitulo). PROGRAMA PARA REVISAR LA SUMA DE DOS
NUMEROS ENTEROS
Font (fuente). Book Antiqua; 14; Negrita
Height. 1100
Width (largo). 6300
Alignment (Alineación). Elegimos 2-center que es centrar.
Appearance (Apariencia). 1-3D.
AutoSize (Autotamaño). En este caso será False.
BackColor (Color de fondo). Al gusto
BorderStyle (Estilo del borde). 1-Fixed Single (arreglo único).
Enabled (Habilitado). En este caso será True.
ForeColor (Color de texto). Al gusto
Left (Izquierda). 2000.
Visible (visible). En este caso será True.
Top (Tope o cima). 600

33
CARLOS ARMANDO CUEVAS VALLEJO

Para la siguiente etiqueta que serán las cajas en donde


aparecerán los números a sumar se define para la primera:
(Nombre). lblNumEnt.
Caption (subtitulo). Ninguno ( se borra el subtitulo “Label1”
que por defecto pone VB6).
Font (fuente). Arial; 22; Negrita
Height. 600
Width (largo). 800
Alignment (Alineación). Elegimos 2-center que es centrar.
Appearance (Apariencia). 1-3D.
AutoSize (Autotamaño). En este caso será False.
BackColor (Color de fondo). Al gusto
BorderStyle (Estilo del borde). 1-Fixed Single (arreglo único).
Enabled (Habilitado). En este caso será True.
ForeColor (Color de texto). Al gusto
Left (Izquierda). 2400.
Visible (visible). En este caso será True.
Top (Tope o cima). 2500
Para definir la segunda se puede “copiar” esta primera
etiqueta lo cual definirá una matriz de etiquetas (véase pag.
13).
Al copiar la etiqueta por defecto se copian todas las
propiedades de las cuales las únicas que tendremos que
modificar corresponderán a las de su posición
Left (Izquierda).4300.
Top (Tope o cima). 2500
Index (Índice). En este caso será 1

34
INTRODUCCION A VISUAL BASIC 6.0

Podemos asimismo definir otras dos etiquetas para los


símbolos propios de la ecuación-suma. La primera para el
símbolo más será:
(Nombre). lblSumaSim.
Caption (subtitulo). +.
Font (fuente). Arial; 24; Negrita
Height. 600
Width (largo). 400
Alignment (Alineación). Elegimos 2-center que es centrar.
Appearance (Apariencia). 1-3D.
AutoSize (Autotamaño). En este caso será False.
BackColor (Color de fondo). Al gusto
BorderStyle (Estilo del borde). 1-Fixed Single (arreglo único).
Enabled (Habilitado). En este caso será True.
ForeColor (Color de texto). Al gusto
Left (Izquierda). 3500.
Visible (visible). En este caso será True.
Top (Tope o cima). 2500
Index (Índice). En este caso será 0
Para definir la segunda, la que lleva el signo menos, sólo se
copia ésta última, modificando, como antes, sólo titulo y
posición.
Left (Izquierda). 5400.
Caption (subtitulo). -.
Index (Índice). En este caso será 1
Hasta este momento tenemos una interfase como la que se
muestra en la figura 3.23

35
CARLOS ARMANDO CUEVAS VALLEJO

Figura 3.23. Avance de la interfase del proyecto Suma.


Vamos ahora a insertar el objeto que define la caja en donde
el usuario escribirá su respuesta. Una caja de texto es como
su nombre lo indica, una caja en donde podemos escribir
caracteres alfanuméricos. Es muy semejante a una etiqueta
definida antes (pags. 8,9,10y 11) salvo que en una caja de
texto el usuario puede escribir en tiempo de ejecución. Es
decir, cuando el programa “corre” el usuario puede escribir
dentro de la caja lo que se le solicita y buna vez escrito el
programa examina el escrito. Para incorporar una caja de
texto a la forma se hace lo siguiente.
Se hace clic en el objeto caja de texto que se identifica, en

herramienta, por tener las letras ab en un cuadrito .


Enseguida movemos el ratón hasta la forma y en donde deseemos
ubicar la caja de texto hacemos clic oprimiendo y dejando
oprimido el botón izquierdo del mismo ratón. Al mover el
ratón, con el botón izquierdo oprimido, se va delineando el
largo y ancho de la caja de texto que deseamos definir.
Las propiedades de una caja de texto son muy semejantes a la
de etiqueta (véase figura 3.24). daremos algunas.

36
INTRODUCCION A VISUAL BASIC 6.0

Figura 3.24. Interfase de VB6 en donde se


visualizan las propiedades del objeto caja
de texto.
En primer lugar hacemos clic al lado derecho de donde dice
(Nombre). Es el nombre que tendrá en el programa el objeto. En
este caso le pondremos txtSumaEnt. Aunque el nombre lo elige
el programador, es acuerdo internacional el que todo objeto
de etiqueta inicie con las letras txt.
Alignment (Alineación). Define la alineación que llevara el
texto de la caja de texto. Elegimos 2-center que es centrar.
BackColor (Color de fondo). Define el color de fondo de la
caja. Sobre este color se escribirá el texto. Para colorear
el fondo ver instrucciones en página 11.
BorderStyle (Estilo del borde). Al hacer clic a la derecha,
aparece una punta de flecha que al oprimirla permite elegir
entre dos opciones 1-Fixed Single (arreglo único) o 0-none

(ninguno). Se elige 1-Fixed Single.

37
CARLOS ARMANDO CUEVAS VALLEJO

Enabled (Habilitado). Esta propiedad habilita o deshabilita un


objeto. De nuevo esta propiedad queda definida como variable
lógica y por ende tiene el valor False (Falso) para
deshabilitar o True (verdadero) para habilitar. En este caso
será True.
Font (fuente). Permite definir tipo, tamaño y cualidad de
letra (véase pág. 8). En este caso debe concordar con lo
definido para las etiquetas de los sumandos. Arial, 22 y
negrita.
ForeColor (Color de texto). Como su nombre lo indica define el
color del texto y se opera en forma semejante a BackColor. Color
al gusto.
Height (altura o ancho). Define la altura de un control TextBox
(la caja). En este caso tiene que coincidir con la altura
definida para las etiquetas de los sumandos. Es decir, 600.
Left (Izquierda). Mide en wips la distancia relativa de
izquierda a derecha, del extremo izquierdo de la forma a la
caja o relativa del extremo izquierdo de un frame o
contenedor a la caja. En este caso es 6200.
Locked (cerrado con llave). Esta propiedad permite cerrar un
control TextBox (la caja) para que no se escriba sobre ella y
puede ser activada en tiempo de ejecución. Se define como
variable lógica y por ende tiene el valor False (Falso) o True
(verdadero). En este caso será False. Note que si se activa
con True la caja actuará como etiqueta.
Maxlength (Longitud máxima). Esta propiedad define un valor
entero que especifica el número máximo de caracteres que el
usuario puede escribir en un control TextBox. El valor

38
INTRODUCCION A VISUAL BASIC 6.0

predeterminado de la propiedad MaxLength es 0, que indica la


ausencia de un máximo distinto del que imponga la memoria del
sistema del usuario para los controles TextBox de una línea y
un valor máximo de aproximadamente 32 KB para los controles
TextBox de múltiples líneas. Un valor mayor que 0 indica el
número máximo de caracteres.
MultiLine (Líneas múltiples). Establece, mediante una variable
lógica, un valor que indica si un control TextBox acepta y
muestra múltiples líneas de texto. Es de sólo lectura en
tiempo de ejecución.
ScrollBars (Barras para enrollar). Establece, mediante un valor,
si un objeto tiene o no barras de desplazamiento horizontal,
vertical o ambas. Es de sólo lectura en tiempo de ejecución.
Text(Texto). Esta propiedad define el texto que tendrá la caja
(TextBox). En general cuando se utiliza la caja para que el
usuario escriba se borra el contenido. En este caso así será.
Top (Tope o cima) Mide en wips la distancia relativa al tope
de la caja a la forma o a algún contenedor. En este caso debe
coincidir con las etiquetas de los sumandos.
Visible (visible). Define si el objeto que se inserto es
visible o no en tiempo de ejecución. Esta propiedad queda
definida como variable lógica y por ende tiene el valor False
(Falso) para no visible o True (verdadero) para que sea
visible. En este caso será True.
Width (largo). Define el largo de la etiqueta u objeto y
también se mide en twips. También en este caso deberá
coincidir con las etiquetas de los sumandos.

39
CARLOS ARMANDO CUEVAS VALLEJO

Index (índice). Cuando se definen varios objetos TextBox con


el mismo nombre, para distinguirlos a cada uno de ellos se le
asocia un índice (v. gr. txtSum(0), txtSum(1), txtSum(2),
etc.).
Con esto concluye el examen y definición de las algunas
propiedades de una caja de texto (TextBox)
Siguiendo adelante con el diseño de acuerdo al dibujo
realizado (véase figura 3.22) nos faltarían los botones
“Revísame” y “Cancelar”, además de los respectivos letreros
para estimular el éxito o falla en el ejercicio planteado.
Esto nos dice que debemos definir otros dos botones para
desaparecer los mensajes de estímulo cuando el usuario los
vea. Insertemos los primeros dos botones para revisar y salir
cuando el usuario quiera. Para ello se dirige el ratón a

herramienta y hacemos clic sobre el objeto que es un


botón de comando (Command button) y, al arrastrar el ratón en
la forma podemos definir aproximadamente las dimensiones del
botón.
Enseguida definiremos sus propiedades de la siguiente forma
(Nombre) cmdSumaEnt. Las iniciales cmd son las que anteceden a
cualquier nombre para botón de comando que se inserte en una
forma.
Apearance: 1-3D
BackColor: El que guste de la paleta
Font; tipo Snap ITC; tamaño 12, cualidad normal
Caption: Revisame
Height: 600
Style: 1-Graphical

40
INTRODUCCION A VISUAL BASIC 6.0

Width: 2000
Enseguida podemos definir el segundo botón para lo cual
sugiero para ello copiar el anterior y darle otro nombre.

Tip
Modo alternativo para copiar un objeto o control
Se señala el objeto (botón, caja, etiqueta, etc.) haciendo
clic sobre el mismo (aparecen los cuadritos en el borde para
reajustar el tamaño). Enseguida, con el ratón sobre el objeto
a copiar, se oprime el botón derecho y aparece un menú de
persiana (véase figura 3.25). Se elige Copiar. Enseguida se
hace clic con el botón derecho del ratón en la forma o
contenedor. De inmediato aparece el menú persiana de donde se
elige Pegar (véase figura 3.26) En ese momento se abre una
ventana que nos anuncia si se desea crear una matriz de
controles (botones, etiquetas, etc.) si se oprime el botón de
no inmediatamente aparece otro objeto (botón, etiqueta, etc.)
con las propiedades del que se copió y definidas con
anterioridad salvo el nombre (véase figura 3.16) y posición.
En caso de optar por si aparece otro objeto con el mismo
nombre y propiedades salvo que la propiedad Index (índice)
aumenta en uno.

41
CARLOS ARMANDO CUEVAS VALLEJO

Figura 3.26. Una vez


copiado haciendo clic
con el botón derecho
Figura 3.25. Forma en la forma o
para copiar un objeto contenedor, se pega.

(Nombre) cmdCancelar.
Apearance: 1-3D
BackColor: El que guste de la paleta
Font; tipo=Snap ITC; tamaño=12, cualidad=normal (O el que
guste)
Caption: Cancelar
Height: 600
Style: 1-Graphical
Width: 2000
Vayamos ahora a definir los letreros que aparecerán cuando el
estudiante-usuario cometa un error o un acierto.
La idea será que cuando el estudiante cometa un error
aparezca un letrero con una figura. Para ello se definirá un
frame (véase pág. 15) con las siguientes características
(Nombre) fraSuma1.
Las iniciales fra son las que anteceden o parte del nombre
para cualquier frame o marco.
Apearance: 1-3D
BackColor: El que guste de la paleta

42
INTRODUCCION A VISUAL BASIC 6.0

BorderStyle: Fixed Single


Caption: En este caso borramos el nombre Frame1 que por defecto
pone VB6, de esta forma sólo queremos el marco sin ningún
nombre para el mismo.
Height: 2000
Width: 2200
Como queremos poner una cierta figura dentro del frame, se
requiere para ello un nuevo objeto.
PictureBox (Caja para cuadro), Este control es semejante a la
caja de texto (TextBox) sólo que es para insertar: iconos,
fotos, figuras, imágenes, etc. en la forma. Un control
PictureBox puede mostrar un gráfico a partir de un mapa de bits,
un icono o un metarchivo, así como un metarchivo mejorado, un
archivo JPEG o un archivo GIF. Recorta el gráfico si el
control no es lo bastante grande para mostrar la imagen
completa.
Al hacer clic en el cuadrito que tiene dibujos a color en

herramienta y, al arrastrar el ratón en la forma se puede


definir aproximadamente longitud y ancho del PictureBox.
Ahora definimos sus propiedades de la siguiente forma
(Nombre) picSuma1.
Las iniciales pic son las que anteceden o parte del nombre
para cualquier PictureBox que se inserte en una forma
Align. (Alinear) 0-None
Apareance (Apariencia) 0-Flat
Autosize; (Auto tamaño) Esta instrucción permite que PictureBox
establezca sus dimensiones de acuerdo a la figura que se

43
CARLOS ARMANDO CUEVAS VALLEJO

inserta en la caja. Como es una variable lógica le pondremos


el valor de True.
BackColor: El que guste de la paleta
BorderStyle: 0-None
Picture: (Cuadro o figura) Esta propiedad permite insertar un
cuadro o figura en la caja. En este caso ponemos o insertamos
un icono que contiene una figura y que tomamos de los
archivos de VB6

c:\archivos de programa\Microsoft Visual Studio\Common\Graphics\Icons\Misc


En realidad puede tomar la figura de la red, o de un banco
determinado. De hecho Office tiene un banco de imágenes.
Height: Deja de actuar con Autosize
Width: Deja de actuar con Autosize
Introducimos una etiqueta para rotular Error o Equivoco
Y un botón de comando para que maneje el flujo del programa.
Esto es, el usuario al ver el letrero oprimirá un botón para
continuar u otro para salir o cancelar. Hasta el momento la
interfase deberá estar como la figura 3.27.
Para finalizar la interfase copiamos el Frame fraSuma1 Salvo
que en este caso daremos nombres diferentes tanto al nuevo
frame como a los nuevos objetos contenidos en él ( PictureBox,
Command Button y Label )Y esto se logra porque después de la
instrucción Pegar, VB6 preguntará en cada caso (Frame PictureBox,
Command Button y Label si crea la matriz de controles con el mismo
nombre o no. Elige no y posteriormente le cambias el nombre
que desees.

44
INTRODUCCION A VISUAL BASIC 6.0

Figura 3.27. Avance en el diseño de


la interfase del proyecto Suma.
En este caso el otro Frame será para señalar el éxito en el
problema, por lo tanto cambia figura, texto de la etiqueta y
rotulo del botón (véase figura 3,28).

Figura 3.28. Interfase del proyecto Suma.

45
CARLOS ARMANDO CUEVAS VALLEJO

Finalmente se programarán los objetos. Recuerde que dado el


diseño de esta interfase la mayor responsabilidad recae en el
botón “Revisame”.

Nota
Esta interfase es muy criticable desde el punto de vista de
diseño y posiblemente desde el pedagógico. Con respecto al
diseño hemos utilizado demasiado colores y muy vivos, los
cuales molestarán eventualmente al usuario y también hemos
abusado del tipo y tamaño de las letras. Desde el pedagógico
los botones como revísame serán difícil de leer por un niño
por el tipo de letra. Sin embargo, deseamos mostrar diversos
tipos de letra y como programador es cómodo utilizar muchos
colores para distinguir un objeto del otro.

Option Explicit

‘Se usa a nivel de módulo para forzar declaraciones


‘explícitas de todas las variables en dicho módulo. Si se
‘usa, la instrucción Option Explicit debe aparecer en un módulo
‘antes de cualquier procedimiento.
La primera subrutina que corre del Proyecto suma es Load. Se
utiliza para la definición de la interfase en primera
instancia y generación aleatoria de parámetros.
Private Sub Form_Load()
Randomize (Timer) ‘Función para similar la generación
‘de números aleatorios.
Top = 0 ‘Parámetros para la dimensión de la forma
Left = 0
Width = 11300

46
INTRODUCCION A VISUAL BASIC 6.0

Height = 9000
lblNumEnt(0).Caption = Int(Rnd * 99) ‘Genera un número
aleatorio entre 0 y 98 y se lo asigna a la etiqueta
lblNumEnt(1).Caption = Int(Rnd * 99) ‘Genera un número
aleatorio entre 0 y 98 y se lo asigna a la etiqueta
fraSuma1.Visible = False ‘Oculta el Frame para el mensaje
‘de error
fraSuma2.Visible = False ‘Oculta el Frame para el mensaje
‘de error
End Sub
Pasemos ahora al botón que lleva la responsabilidad del
programa. El botón “Revisame”.
Private Sub cmdSumaEnt_Click() ‘Inicio de subrutina evento
‘click
If (Val(lblNumEnt(0).Caption) + Val(lblNumEnt(1).Caption))
= Val(txtSumaEnt.Text) Then
‘Este If Revisa si la suma de los contenidos en las dos
etiquetas (sumandos) es igual al contenido de lo que escribió
en la caja de texto.
Aquí estamos usando la función Val. Esta función regresa el
valor numérico de una variable de tipo alfanumérica.
Abundemos en esta parte. Dentro de las variables también
tenemos una variable de tipo “cadena” esto es de tipo
caracteres alfanuméricos que pueden no tener ningún sentido
v. gr. A = Y7u5; B = texto, C = lk670#$5, etc. Observe que
para este tipo de variable la expresión “3456” no es un
número, sino sólo caracteres concatenados. Para darle a esta
expresión el carácter numérico es necesario la función Val.

47
CARLOS ARMANDO CUEVAS VALLEJO

Val(cadena) devuelve los números contenidos en una cadena


como un valor numérico del tipo adecuado.
El argumento obligatorio cadena es cualquier expresión de
cadena válida.
La función Val deja de leer la cadena en el primer carácter
que no puede reconocer como parte de un número. Los símbolos
y caracteres que se consideran a menudo parte de valores
numéricos, como signos de moneda y comas, no se reconocen.
Sin embargo, la función reconoce los prefijos de base &O

(para octal) y &H (para hexadecimal). Los espacios en blanco,


los tabuladores y los avances de línea se eliminan del
argumento.
Lo siguiente devuelve el valor 1615198:
Val(" 1615 198 Calle N.E.")
En el código que se muestra a continuación, Val devuelve el
valor decimal -1 correspondiente al valor hexadecimal entre
paréntesis:
Val("&HFFFF")
La función Val sólo reconoce el punto (.) como separador
decimal válido. Cuando se utilizan separadores decimales
diferentes, como en aplicaciones internacionales, debe
utilizar CDbl para convertir una cadena a un número.
Sigamos adelante con la programación del evento del botón
fraSuma2.Visible = True ‘En caso de ser cierto (la suma
‘es correcta) aparece el Frame con éxito
Else ‘De otra forma (la suma no es correcta)
fraSuma1.Visible = True ‘Aparece el Frame con error
End If ‘Fin de if

48
INTRODUCCION A VISUAL BASIC 6.0

cmdSumaEnt.Enabled = False ‘Deshabilita el botón de


“Revisame cualquiera que sea la respuesta.
End Sub ‘Fin de subrutina evento click

'Botón para Cancelar termina el programa y descarga la forma.


Private Sub cmdCancelar_Click() ‘Inicio de subrutina evento
‘click
Unload Me ‘Esta instrucción descarga la forma que esta en
‘funciones.
End Sub ‘Fin de subrutina evento click
'Botón para proponer la misma suma en caso de error.
Private Sub cmdOtro_Click()
fraSuma1.Visible = False ‘Esconde el Frame de error
txtSumaEnt.Text = "" ‘Borra contenido de caja
txtSumaEnt.SetFocus ‘Pone el cursor en la caja
cmdSumaEnt.Enabled = True ‘Habilita botón Revisame
End Sub
'Botón para proponer otra suma en caso de éxito.
Private Sub cmdOtroJu_Click()
lblNumEnt(0).Caption = Int(Rnd * 99) ‘Genera un número
aleatorio entre 0 y 98 y se lo asigna a la etiqueta
lblNumEnt(1).Caption = Int(Rnd * 99) ‘Genera un número
aleatorio entre 0 y 98 y se lo asigna a la etiqueta
txtSumaEnt.Text = "" ‘Borra contenido de caja
fraSuma2.Visible = False ‘Esconde el Frame de éxito
cmdSumaEnt.Enabled = True ‘Habilita botón Revisame
End Sub

49
CARLOS ARMANDO CUEVAS VALLEJO

Private Sub Form_Activate() ‘Evento que permite situar cursor


txtSumaEnt.SetFocus ‘Ubica el cursor en la caja de texto
End Sub
Ejercicios
1) Realice un proyecto apra la esta de dos entetos con
solución en los positivos
2) Realice un proyecto para ayudar (con instrucciones de
ayuda) para encontrar uno de los dos sumandos dada la suma.
Esto finaliza esta breve introducción al lenguaje VB6. No
deseo pasar la ocasión para recordarles que la programación
es algo pragmático, es una labor que se aprende a base de
ensayo y error, y que la habilidad en la ejecución de un buen
programador dependerá, casi totalmente, en el número de horas
que le dedique a programar.

50

También podría gustarte