SlideShare ist ein Scribd-Unternehmen logo
1 von 421
Downloaden Sie, um offline zu lesen
CAPÍTULO 1
FUNDAMENTOS
Microsoft Visual Basic es un conjunto de herramientas que
posibilitan el desarrollo de aplicaciones para Windows de una
manera rápida y sencilla, basado en el lenguaje BASIC y en la
programación orientada a objetos.
La palabra “Visual” hace referencia al método que se
utiliza para crear la interfaz gráfica de usuario. En lugar de
escribir numerosas líneas de código para implementar la
interfaz, simplemente se utiliza el ratón para agregar objetos
prefabricados en el lugar deseado dentro de la pantalla.
La palabra “Basic” hace referencia al lenguaje BASIC
(Beginners All-Purpose Symbolic Instruction Code), un lenguaje
utilizado por más programadores que ningún otro lenguaje en la
historia de la informática. Visual Basic ha evolucionado a
partir del lenguaje BASIC original y ahora contiene centenares
de instrucciones, funciones y palabras clave, muchas de las
cuales están directamente relacionadas con la interfaz gráfica
de Windows.
El lenguaje de programación Visual Basic no es exclusivo
de Microsoft Visual Basic. Este lenguaje es utilizado también
por Microsoft Excel, Microsoft Access y muchas otras
Pág. 1
aplicaciones Windows. El lenguaje de programación Visual Basic
Script para programar en Internet es un subconjunto del
lenguaje Visual Basic. De tal forma, que la inversión realizada
en el aprendizaje de Visual Basic le ayudará a abarcar estas
otras áreas.
EJECUTANDO VISUAL BASIC
Si ya tiene instalado Visual Basic, para ejecutarlo
proceda igual que con cualquier otra aplicación Windows: hacer
click en el icono correspondiente.
En seguida se presentará una ventana similar a la figura
siguiente:
Pág. 2
En la ventana anterior indicar el tipo de proyecto que
desea crear (para nuestro caso seleccionar EXE estándar) y dar
click sobre el botón “Abrir”. En ese instante se presentará el
Entorno Integrado de Desarrollo (IDE) de Visual Basic:
Los elementos que componen el IDE de Visual Basic son:
• Barra de menús • Barra de herramientas
• Cuadro de herramientas • Diseñador de formularios
• Explorador de proyectos • Ventana de propiedades
• Posición del formulario • Menús contextuales
Barra de menús
Pág. 3
Presenta las órdenes que se utilizan para desarrollar una
aplicación. Las opciones más utilizadas son: Archivo, Edición,
Ver, Ventana y Ayuda. Se proporcionan otros menús para tener
acceso a funciones específicas de programación como Proyecto,
Formato o Depuración.
Barra de herramientas
Facilita el acceso rápido a las órdenes más comúnmente
utilizadas. Omitimos el significado de cada botón porque le
será mostrado al pasar el puntero del ratón sobre cada uno de
ellos.
Puede visualizar otras barras de herramientas ejecutando
la opción Barra de herramientas del Menú Ver.
Cuadro de herramientas
Proporciona un conjunto de herramientas que permiten
diseñar la interfaz gráfica de usuario.
Pág. 4
Icono Descripción
Puntero
Cuadro de imagen
Etiqueta
Cuadro de texto
Marco
Botón de comando
Casilla de verificación
Botón de opción
Cuadro combinado
Cuadro de lista
Barra de desplazamiento horizontal
Barra de desplazamiento vertical
Cronómetro
Cuadro de lista de unidades
Cuadro de lista de directorios
Cuadro de lista de archivos
Formas
Líneas
Imagen
Contenedor OLE
Pág. 5
Para utilizar algún objeto simplemente debe hacer doble
click sobre el icono correspondiente, luego puede cambiar su
posición y sus dimensiones.
Diseñador de formularios
Es la ventana sobre la que colocaremos los objetos
(controles) de la interfaz de usuario.
Explorador de proyectos
Contiene el conjunto de archivos que constituyen la
aplicación o proyecto.
Pág. 6
Ventana de propiedades
Como veremos más adelante, cada objeto lleva asociado un
conjunto de propiedades. Para ver o especificar los valores de
las propiedades de los objetos, utilizaremos la ventana de
propiedades.
Posición del formulario
Esta ventana le permite especificar la posición de los
formularios de la aplicación.
Menús contextuales
Pág. 7
Es un menú emergente que presenta órdenes específicas
relativas a un determinado objeto. Para abrir un menú
contextual, dar click derecho sobre el objeto. Por ejemplo, al
dar click derecho sobre el formulario se presenta el siguiente
menú contextual.
Ventana de código
Se presenta cuando se hace doble click sobre un objeto que
se encuentra en el Diseñador de formularios. Esta ventana
muestra dos cuadros combinados (combos) en la parte superior,
en una aparece el nombre del objeto (izquierda) y en la otra el
nombre del evento (derecha).
Pág. 8
MI PRIMERA APLICACIÓN
Hay tres pasos principales para crear una aplicación en
Visual Basic:
• Crear la interfaz.
• Establecer propiedades.
• Escribir el código.
Para ver como se realiza esto, siga los pasos del
siguiente ejemplo para crear una aplicación sencilla que
consiste en un formulario y un botón de comando. Cuando haga
click en el botón de comando aparecerá el mensaje “Visual Basic
es fácil” en un cuadro de diálogo predefinido.
Creación de la interfaz
Para el desarrollo del presente ejemplo proceda a crear
una nueva aplicación. En seguida añadir un botón de comando al
formulario, para ello en el Cuadro de herramientas, dar doble
click sobre el control deseado, tal como se indica en la figura
siguiente:
Pág. 9
La apariencia de la interfaz debe ser similar a la figura
mostrada:
Estableciendo las propiedades
Para ver las propiedades de un objeto, simplemente debe
seleccionarlo y pulsar la tecla F4. Por ejemplo la figura
siguiente muestra las propiedades del botón de comando y
podemos ver que la propiedad Caption tiene el valor “Command1”.
Pág. 10
Puede cambiar el valor de cualquier propiedad
seleccionándolo de la ventana anterior y simplemente
modificando su valor, por ejemplo para el caso anterior
establezca el valor de la propiedad Caption de “Command1” a
“Haga click aquí”.
De manera similar proceda cambiar la propiedad Caption del
formulario a “Mi primera aplicación”. La apariencia de la
interfaz debe ser similar a la figura mostrada:
Pág. 11
Escribiendo el código
Para ingresar el código a la aplicación debe dar doble
click sobre el control al cual asociaremos dicho código. Para
nuestro caso dar doble click sobre el botón de comando e
ingresar el código que se indica a continuación:
Para guardar la aplicación que acaba de crear, seleccione
la opción Guardar Proyecto del Menú Archivo.
Bueno, ahora sólo falta que ejecute su aplicación. Para
ello simplemente debe pulsar la tecla F5. El resultado debe ser
similar al siguiente:
Pág. 12
CAPÍTULO 2
LOS OBJETOS
Visual Basic se basa en la programación orientada a
objetos (POO), la cual es una forma de programación que utiliza
objetos (similares a los objetos del mundo real) para la
solución de problemas. La POO permite descomponer un problema
en bloques relacionados. Cada bloque pasa a ser un objeto
autocontenido que contiene sus propios datos e instrucciones.
De esta manera, la complejidad se reduce y se pueden realizar
programas más largos de una manera sencilla.
MECANISMOS BÁSICOS DE LA POO
Los mecanismos básicos de la programación orientada a
objetos son:
• Objetos
• Propiedades
• Métodos
• Eventos
• Mensajes
• Clases
Pág. 13
Objetos
Un objeto es una entidad que tiene atributos particulares
(propiedades) y unas formas de operar sobre ellos (métodos).
Por tanto, un objeto contiene variables que especifican su
estado y operaciones que definen su comportamiento.
Son ejemplos de objetos: formularios, botones de comando,
cuadros de texto, etiquetas, etc.
Propiedades
Las propiedades representan las características del
objeto. Hay propiedades particulares, como Caption que la
poseen los botones de comando por ejemplo, y genéricas como
Name que la poseen todos lo objetos.
Métodos
Los métodos son procedimientos asociados a un objeto. Se
ejecutan como respuesta a un evento, por ejemplo al dar click
en un botón de comando. También pueden ser invocados
explícitamente en el programa.
Eventos
Un evento es la capacidad de un objeto de reaccionar
cuando ocurre una determinada acción (acción y reacción). Como
respuesta a un evento se envía un mensaje y se ejecuta un
determinado método (procedimiento).
Pág. 14
Mensajes
Un mensaje es una llamada a un método (procedimiento), de
tal forma que cuando un objeto recibe un mensaje la respuesta a
ese mensaje es ejecutar el procedimiento asociado.
Cuando se ejecuta un programa orientado a objetos, los
objetos están constantemente recibiendo, interpretando y
respondiendo a mensajes de otros objetos.
Clases
Una clase es una descripción para producir objetos de esa
clase o tipo. Es decir se trata de una generalización de un
tipo específico de objetos. En otras palabras, un objeto es una
variable del tipo definido por una clase. Por ejemplo, piense
en un molde para hacer pasteles, el molde es la clase y los
pasteles los objetos.
CARACTERÍSTICAS DE LA POO
Las características fundamentales de la programación
orientada a objetos son:
• Abstracción
• Encapsulamiento
• Herencia
• Polimorfismo
Pág. 15
Abstracción
La abstracción permite no detenernos en los detalles
concretos del funcionamiento de las cosas, sino centrarnos en
los aspectos que realmente nos importan y nos son útiles en un
determinado momento, en cierta medida, se podría decir que es
“úsese el objeto y olvídese de como funciona en forma interna”.
Por ejemplo, para manejar una computadora no necesitamos
saber como funcionan sus circuitos electrónicos, en términos de
corriente, tensión, etc.
Encapsulamiento
Esta característica permite ver un objeto como una “caja
negra” autocontenida en la que se ha metido de alguna manera
toda la información que maneja dicho objeto. Esto permite
manipular los objetos como unidades básicas, permaneciendo
oculta su estructura interna.
Herencia
La herencia es la característica que permite compartir
automáticamente propiedades y métodos entre objetos. Es decir,
se pueden crear nuevas clases de objetos en base a clases
existentes. Más concreto, un objeto puede heredar un conjunto
general de propiedades y métodos a las que puede añadir
Pág. 16
aquellas características que son específicas suyas. El usuario
de Visual Basic no dispone de esta característica.
Polimorfismo
Polimorfismo, del griego cuyo significado es “muchas
formas”, es la característica que permite implementar múltiples
formas de un mismo método, dependiendo cada una de ellas de la
clase sobre la que se realiza la implementación. Esto hace
posible que se puede acceder a una variedad de métodos
distintos (todos con el mismo nombre) utilizando exactamente el
mismo medio de acceso.
LOS OBJETOS DE VISUAL BASIC
Visual Basic soporta la abstracción, la encapsulación, el
polimorfismo y la reutilización de código.
La reutilización de código es la capacidad de trasladar
características de un objeto a otro, lo que se logra con alguna
forma de herencia. Esto se consigue mediante la creación y uso
del objeto.
Los objetos de Visual Basic están divididos en dos tipos:
controles y contenedores.
Los controles son un medio gráfico que permiten a los
usuarios interactuar con la aplicación para la manipulación de
datos y ejecución de tareas. Son ejemplo de controles:
etiquetas, cuadros de texto, botones de comando, casillas de
Pág. 17
verificación, botones de opción, cuadros de lista, cuadros
combinados, etc.
Los contenedores son objetos que pueden incluir otros
objetos y permiten el acceso a los objetos que contienen. Entre
los más utilizados tenemos a los formularios, marcos y
cuadrículas.
El formulario más los controles constituyen la interfaz de
la aplicación.
REFERENCIANDO OBJETOS
La sintaxis para referenciar objetos es la siguiente:
OBJETO.PROPIEDAD = VALOR
Por ejemplo, para establecer el título de un formulario a
“Visual Basic es fácil”, la orden sería:
Form1.Caption = “Visual Basic es fácil”
LOS EVENTOS
Cada objeto responde a un conjunto de eventos. Como
respuesta a un evento se ejecuta un determinado procedimiento.
Los procedimientos asociados a un evento presentan la forma:
Private Sub OBJETO_EVENTO()
SENTENCIAS
End Sub
Pág. 18
Para aclarar este concepto desarrollaremos la siguiente
aplicación, la cual consiste en un formulario, un cuadro de
texto y un botón de comando. El usuario debe ingresar un
mensaje en el cuadro de texto y al pulsar el botón de comando,
el mensaje recientemente ingresado, se coloca como título del
formulario.
Para ello proceda a construir la interfaz mostrada en la
figura anterior. Luego, dar doble click sobre el botón de
comando e ingrese el siguiente código:
Private Sub Command1_Click()
Form1.Caption = Text1.Text
End Sub
Seguidamente guarde y proceda ejecutar su aplicación. Como
puede verificar, el evento Click se dispara cada vez que el
usuario pulsa (hace click) sobre un control.
CONVENCIÓN DE NOMBRES PARA LOS OBJETOS
Pág. 19
La convención a seguir en la presente guía - para dar
nombre a los objetos - consiste en utilizar ciertos prefijos,
los cuales indicaran el tipo de objeto del que se trata.
Prefijo Objeto
Frm Formulario
Fra Marco
Lbl Etiqueta
Txt Cuadro de texto
Cmd Botón de comando
Chk Casilla de verificación
Opt Botón de opción
Lst Cuadro de lista
Cbo Cuadro combinado
Tim Cronómetro
HS Barra de desplazamiento horizontal
VS Barra de desplazamiento vertical
Pic Cuadro de imagen
Img Imagen
Drv Cuadro de lista de unidades
Dir Cuadro de lista de directorios
Fil Cuadro de lista de archivos
Ole Contenedor OLE
Grd Cuadrícula
Pág. 20
Gra Gráfico
Ctr Control (se utiliza en procedimientos cuando
el tipo de control es desconocido)
CAPÍTULO 3
EL LENGUAJE
Visual Basic es un lenguaje de programación basado en el
lenguaje BASIC, al cual incorpora la funcionalidad de la
programación orientada a objetos.
El código de Visual Basic se almacena en módulos, donde
cada módulo está subdividido en distintas secciones, una para
cada objeto del módulo. Cada sección de código puede contener
uno o más procedimientos, formados por declaraciones de
constantes y variables, expresiones, sentencias de control y
llamadas a procedimientos y/o funciones.
En este capítulo vamos a analizar los diferentes elementos
que intervienen al momento de realizar el código para una
aplicación.
TIPOS DE DATOS
Pág. 21
Los datos con los que trabajaremos probablemente incluyan
información relacionada con números, dinero, nombres,
descripciones, fechas, etc. Cada dato corresponde a un
determinado tipo, es decir, pertenece a una categoría de datos
que se manipulan de maneras similares.
Tipo Descripción Rango
Integer Entero (2 bytes) -32768 a 32767
Long Entero largo (4 bytes) -2147483648 a
2147483647
Single Punto flotante de simple
precisión (4 bytes)
-3.40E+38 a
3.40E+38
Double Punto flotante de doble
precisión (8 bytes)
-1.79D+308 a
1.79D+308
Currency Monetario (8 bytes) +/-
922337203685477.5807
Byte Carácter (1 byte) 0 a 255
String Cadena de caracteres (1
byte por carácter)
Aproximadamente
hasta 64K (65400
caracteres)
Boolean Lógico (2 bytes) True o False
Date Fecha/Hora (8 bytes) 01/ENERO/100 a
31/DICIEMBRE/9999
Variant
(por omisión)
Cualquier tipo de dato Con números hasta el
intervalo de un tipo
Double.
Con caracteres 22
Pág. 22
bytes + 1 byte por
carácter
IDENTIFICADORES
Los identificadores son nombres dados a los elementos de
una aplicación, tales como constantes, variables,
procedimientos, funciones, objetos, etc. Un identificador es
una secuencia de caracteres que puede ser de hasta 255
caracteres. Para la construcción de identificadores debemos
tener presente las siguientes reglas:
• Deben comenzar con una letra y no puede contener espacios en
blanco.
• Letras, dígitos y caracteres subrayados están permitidos
después del primer carácter.
• No se puede utilizar una palabra reservada como
identificador. Una palabra reservada tiene un significado
especial para Visual Basic.
CONSTANTES
Una constante almacena un dato cuyo valor no cambia
durante la ejecución de un programa. Para declarar una
constante utilice la siguiente sintaxis:
Const NOMBRE_CONSTANTE [As TIPO] = VALOR
Pág. 23
Si no se declara el tipo de constante (utilizando As TIPO)
se asigna a la constante el tipo de dato más apropiado a su
valor.
El valor de una constante puede ser numérico,
alfanumérico, carácter o de tipo fecha y hora. Por ejemplo:
Const MAXIT = 25
Const PI As Double = 3.141592
Const CADENA As String = “Visual Basic es fácil”
Const FECHA_POR_DEFECTO = #01/01/99#
VARIABLES
Una variable almacena un dato cuyo valor puede cambiar
durante la ejecución de un programa. Para declarar una variable
utilice la siguiente sintaxis:
Dim NOMBRE_VARIABLE [As TIPO]
Cuando se declara una variable y no se especifica su tipo
(con As TIPO), se asume que es de tipo Variant.
La instrucción Dim puede realizar más de una declaración,
teniendo en cuenta que la cláusula opcional As TIPO le permite
definir el tipo de dato de cada variable que vaya a declarar.
Por ejemplo:
Dim X, Y As Integer
Pág. 24
La sentencia anterior le puede inducir a pensar que X e Y
son de tipo Integer, lo cual no es cierto, pues X es de tipo
Variant (por omisión) e Y es de tipo Integer.
Para asignar valores a una variable, utilizar la siguiente
sintaxis:
NOMBRE_VARIABLE = VALOR
A manera de ejemplo considere lo siguiente:
Dim CANTIDAD As Integer, PRECIO As Double, TOTAL As Double
CANTIDAD = 30
PRECIO = 1.5
TOTAL = CANTIDAD * PRECIO
OPERADORES
Los operadores son símbolos que indican cómo serán
manipulados los operandos. Los operandos son los datos
(constantes y/o variables) sobre los que actúa los operadores
para producir un determinado resultado.
Operadores aritméticos
Operador Significado
^ Exponenciación
- Menos unario
Pág. 25
* / Multiplicación y división
 División entera
Mod Resto de una división entera
+ - Suma y resta
Operadores relacionales
Operador Significado
= Igual que
<> Diferente que
< Menor que
> Mayor que
<= Menor o igual que
=> Mayor o igual que
Operadores lógicos
Operador Significado
Not Negación
And Conjunción
Or Disyunción inclusiva
Xor Disyunción exclusiva
Eqv Equivalencia (opuesto a Xor)
Imp Implicación (falso si primer operando
verdadero y segundo operando falso)
Pág. 26
Operadores de cadenas de caracteres
Operador Significado
& Concatenación
Like Compara dos cadenas de caracteres
SENTENCIAS
Una sentencia es una línea de código que indica una o más
operaciones a realizar. Una línea puede incluir varias
sentencias, separadas unas de otras por dos puntos. Por
ejemplo:
Dim CANTIDAD As Integer, PRECIO As Double, TOTAL As Double
CANTIDAD = 30 : PRECIO = 1.5 : TOTAL = CANTIDAD * PRECIO
Una sentencia Visual Basic puede escribirse en más de una
línea física utilizando el carácter de continuación de línea
(un espacio en blanco seguido del carácter de subrayado). Por
ejemplo:
Dim CH4_ENTRADA As Double, CH4_SALIDA As Double, _
CH4_GENERA As Double, CH4_CONSUME AS Double
ENTRADA Y SALIDA DE DATOS
Visual Basic posee una serie de objetos (controles) que
pueden ser utilizados como mecanismos de entrada y salida (E/S)
de datos. Sin embargo, estos serán estudiados en capítulos
posteriores.
Pág. 27
Otra posibilidad de proporcionar datos o de visualizarlos
durante la ejecución de una aplicación es utilizando cajas de
diálogos predefinidas. Debido a que esta es la forma más simple
de realizar la E/S de datos nos ocuparemos de ella.
Entrada de datos
La entrada de datos permite proporcionar valores durante
la ejecución de una aplicación. Estos valores son ingresados
generalmente mediante el teclado y asignados a variables del
programa. En Visual Basic una forma de ingresar datos a la
aplicación es utilizando la caja de diálogo predefinida
provista por la función InputBox. Su sintaxis es la siguiente:
VARIABLE = InputBox(MENSAJE [, TÍTULO] [, PREDETERMINADO])
Donde MENSAJE es el mensaje que indica al usuario el tipo
de información que debe ingresar. Por ejemplo, las sentencias:
Dim EDAD As Integer
EDAD = InputBox(“Ingrese su edad?”)
Da lugar a que Visual Basic presente la siguiente caja de
diálogo solicitando la información requerida:
Pág. 28
Como puede observar, el resto de los parámetros son
opcionales. TÍTULO es el texto que se muestra en la barra de
título del cuadro de diálogo, si se omite TÍTULO, el nombre de
la aplicación es la que se muestra en la barra de título.
PREDETERMINADO es una expresión de cadena que aparece en el
cuadro de texto como respuesta predeterminada si no se
proporciona ningún otro texto. Si se omite PREDETERMINADO el
cuadro de texto se muestra vacío. A manera de ejemplo considere
lo siguiente:
Dim EDAD As Integer
EDAD = InputBox(“Ingrese su edad?”, “Ficha de datos”, 18)
En este caso se visualiza la caja de diálogo que se
presenta en la figura siguiente:
Pág. 29
Salida de datos
La salida de datos generalmente consiste en tomar la
información de la memoria y mostrarla en pantalla. Para
realizar la operación de salida de datos en Visual Basic,
podemos utilizar el procedimiento MsgBox, cuya sintaxis es como
sigue:
MsgBox MENSAJE [, ICONO, TÍTULO]
MENSAJE es La cadena que se muestra como salida en la caja
de diálogo. ICONO es se refiere al estilo de icono que se va ha
utilizar y TÍTULO es una texto que se mostrará en la barra de
título de la caja de diálogo. Por ejemplo:
Dim EDAD As Integer
EDAD = InputBox(“Ingrese su edad?”)
EDAD = EDAD + 10
MsgBox “Dentro de 10 años su edad será:” & Str(EDAD)
Si ejecuta el código anterior e ingresa su edad (en mi
caso 29 años) la salida debe ser similar a la figura siguiente:
Pág. 30
Para que pueda ejecutar el código anterior, proceda a
crear una nueva aplicación y haga doble click sobre el
formulario, luego ingrese el código anterior:
Private Sub Form_Load()
Dim EDAD As Integer
EDAD = InputBox(“Ingrese su edad?”)
EDAD = EDAD + 10
MsgBox “Dentro de 10 años su edad será:” & Str(EDAD)
End Sub
A manera de observación cabe señalar que la función Str()
se utiliza para convertir una expresión numérica a una cadena
de caracteres.
ESTRUCTURAS DE CONTROL
Las estructuras de control permiten tomar decisiones y
realizar un proceso repetidas veces (procesos iterativos). Para
ello Visual Basic dispone de las siguientes estructuras de
control: If . . . Then . . . Else, If . . . Then . . . ElseIf,
Select Case, For . . . Next, While . . . . Wend, Do . . . Loop
y GoTo.
Estructura If . . . Then . . . Else
Este tipo de estructura evalúa una determinada condición y
en función a ello ejecuta uno de entre dos posibles grupos de
sentencias. Su sintaxis es la siguiente:
Pág. 31
If CONDICIÓN Then
SENTENCIAS_VERDADERAS
Else
SENTENCIAS_FALSAS
End If
Si CONDICIÓN es verdadera se ejecuta el grupo de
SENTENCIAS_VERDADERAS. Si CONDICIÓN es falsa se ejecuta el
grupo de SENTENCIAS_FALSAS.
Por ejemplo, el siguiente código determina si un entero A
es o no divisible por otro entero B:
Dim A As Integer, B As Integer
A = InputBox(“Ingrese A?”)
B = InputBox(“Ingrese B?”)
If A Mod B = 0 Then
MsgBox Str(A) & “ es divisible por ” & Str(B)
Else
MsgBox Str(A) & “ no es divisible por ” & Str(B)
End If
Estructura If . . . Then . . . ElseIf
Este tipo de estructura se utiliza para elegir una de
entre múltiples alternativas. Su sintaxis es como sigue:
If CONDICIÓN_1 Then
Pág. 32
SENTENCIAS_1
ElseIf CONDICIÓN_2 Then
SENTENCIAS_2
.
.
.
Else
SENTENCIAS_FALSAS
End If
Si CONDICIÓN_1 es verdadera se ejecuta el grupo de
SENTENCIAS_1, y si es no se cumple, se evalúan secuencialmente
las condiciones siguientes hasta Else, ejecutándose las
sentencias correspondientes al primer ElseIf cuya condición sea
verdadera. Si todas las condiciones son falsas, se ejecutan las
SENTENCIAS_FALSAS correspondientes a Else.
Por ejemplo considere el siguiente código, el cual imprime
el nombre del mes correspondiente a los números del 1 al 12.
Dim N As Integer
N = InputBox(“Ingrese N?”)
If N = 1 Then
MsgBox “Enero”
ElseIf N = 2 Then : MsgBox “Febrero”
ElseIf N = 3 Then : MsgBox “Marzo”
ElseIf N = 4 Then : MsgBox “Abril”
ElseIf N = 5 Then : MsgBox “Mayo”
Pág. 33
ElseIf N = 6 Then : MsgBox “Junio”
ElseIf N = 7 Then : MsgBox “Julio”
ElseIf N = 8 Then : MsgBox “Agosto”
ElseIf N = 9 Then : MsgBox “Setiembre”
ElseIf N = 10 Then : MsgBox “Octubre”
ElseIf N = 11 Then : MsgBox “Noviembre”
ElseIf N = 12 Then : MsgBox “Diciembre”
Else : MsgBox “Error de datos”
End If
Estructura Select Case
Este estructura es una alternativa a la estructura
If . . . Then . . . ElseIf, cuando lo que necesita es comparar
la misma expresión con diferentes valores. Su sintaxis es la
siguiente:
Select Case EXPRESIÓN_TEST
Case EXPRESIÓN_1
SENTENCIAS_1
Case EXPRESIÓN_2
SENTENCIAS_2
.
.
.
Case Else
SENTENCIAS_FALSAS
End Select
Pág. 34
En este caso se comprueba el valor de EXPRESIÓN_TEST
frente a la lista expresiones EXPRESIÓN_1, EXPRESIÓN_2, . . . y
así sucesivamente, y busca el primer Case que incluya el valor
evaluado en EXPRESIÓN_TEST, ejecutando a continuación el bloque
de sentencias correspondiente. Si no existe un valor igual a
EXPRESIÓN_TEST, entonces se ejecuta las SENTENCIAS_FALSAS
correspondientes al Case Else.
A manera de ejemplo vamos a codificar el programa de la
sección anterior el cual imprime el nombre del mes
correspondiente a los números del 1 al 12. Pero en esta vez
utilizaremos la estructura Select Case (compare con cual de
ambas estructuras es más cómodo trabajar).
Dim N As Integer
N = InputBox(“Ingrese N?”)
Select Case N
Case 1 : MsgBox “Enero”
Case 2 : MsgBox “Febrero”
Case 3 : MsgBox “Marzo”
Case 4 : MsgBox “Abril”
Case 5 : MsgBox “Mayo”
Case 6 : MsgBox “Junio”
Case 7 : MsgBox “Julio”
Case 8 : MsgBox “Agosto”
Case 9 : MsgBox “Setiembre”
Pág. 35
Case 10 : MsgBox “Octubre”
Case 11 : MsgBox “Noviembre”
Case 12 : MsgBox “Diciembre”
Case Else
MsgBox “Error de datos”
End Select
Cabe destacar que Select Case también se puede utilizar de
la siguiente manera:
Dim X As Integer
X = InputBox(“Ingrese X?”)
Select Case X
Case 1
MsgBox “X = 1”
Case 2, 3
MsgBox “X = 2 o X = 3”
Case 4 To 10
MsgBox “4 <= X <= 10”
Case Else
MsgBox “X < 1 o X > 10”
End Select
Estructura For . . . Next
Pág. 36
Esta estructura es utilizada para ejecutar un bucle un
número determinado de veces. El número de iteraciones deberá
ser conocido de antemano. Su sintaxis es la que se presenta a
continuación:
For CONTADOR = INICIO To FINAL [Step INCREMENTO/DECREMENTO]
SENTENCIAS_REPETITIVAS
[Exit For]
Next
Donde la variable CONTADOR es inicializada con el valor de
INICIO y se incrementa o decrementa hasta un valor FINAL.
INCREMENTO/DECREMENTO define la manera en que cambia el valor
de la variable CONTADOR en cada iteración.
La sentencia Exit For permite salir del bucle For ... Next
antes de que este finalice.
Por ejemplo, el siguiente código imprime los cuadrados de
los números enteros del 1 al 25.
Dim C As Integer
For C = 1 To 25
Print C
Next
Para que este código funcione correctamente debe
establecer la propiedad AutoRedraw del formulario a True.
Estructura While . . . Wend
Pág. 37
La estructura While . . . Wend es aquella en la que el
número de iteraciones no se conoce por anticipado y el cuerpo
del bucle se repite mientras se cumple una determinada
condición. Su sintaxis es la siguiente:
While CONDICIÓN
SENTENCIAS_REPETITIVAS
Wend
La estructura While . . . Wend evalúa la CONDICIÓN en cada
iteración y si el resultado es verdadero continúa su ejecución.
El bucle termina cuando CONDICIÓN es falsa.
A manera de ejemplo, considere el siguiente código, el
cual imprime en pantalla la suma de los primeros números
naturales, es decir = 1 + 2 + 3 + 4 + . . . +
N
S N
Dim N As Integer, S As Integer
S = 0
N = InputBox(“Ingrese N?”)
While N <> 0
S = S + N
N = N - 1
Wend
MsgBox “La suma es S= ” & Str(S)
Estructura Do . . . Loop
Esta estructura ejecuta un bucle mientras una condición
dada sea cierta, o hasta que una condición dada sea cierta. La
Pág. 38
condición puede ser verificada antes o después de ejecutarse el
cuerpo del bucle. Su sintaxis es:
Formato 1: Do [While/Until] CONDICIÓN
SENTENCIAS_REPETITIVAS
[Exit Do]
Loop
Formato 2: Do
SENTENCIAS_REPETITIVAS
[Exit Do]
Loop [While/Until] CONDICIÓN
Esta estructura (como se puede observar en ambos formatos)
permite realizar varias estructuras diferentes dependiendo si
la condición de terminación está al principio o al final del
cuerpo del bucle.
Como ejemplo, consideremos el siguiente programa, el cual
calcula el factorial de un entero ingresado por teclado:N
Dim N As Integer, FACT As Integer, C As Integer
FACT = 1
C = 1
N = InputBox(“Ingrese N?”)
Do
FACT = FACT * C
C = C + 1
Pág. 39
Loop While C <= N
MsgBox “El factorial de ” & Str(N) & “ es=” & Str(FACT)
Sentencia GoTo
Transfiere el control a una línea específica de código,
identificada por una etiqueta o por un número de línea. Su
sintaxis es:
GoTo ETIQUETA/NUMERO_LÍNEA
Aunque el uso del GoTo se ha depreciado considerablemente,
en el presente trabajo no se juzgará su validez. Sin embargo,
se ha establecido que no hay situaciones de programación que
requieran el uso del GoTo, es decir, no es un elemento
necesario para hacer completo el lenguaje.
Sin embargo, el GoTo es un convenio que, si su usa con
cuidado, puede ser beneficioso en ciertas situaciones de
programación.
Por ejemplo podría escribir un bucle para imprimir los
cuadrados de los números enteros del 1 al 25.
Dim X As Integer
X = 0
LABEL1:
X = X + 1
Print X ^ 2
If X < 25 Then GoTo LABEL1
Pág. 40
Un uso abusivo de la sentencia GoTo da lugar a códigos
difíciles de interpretar y de mantener. Por ello, se recomienda
su uso solamente en ocasiones excepcionales. La tarea que vaya
a desempeñar una sentencia GoTo puede suplirse utilizando
cualquiera de las estructuras de control vistas en las
secciones anteriores.
ARREGLOS
Un arreglo o matriz es una estructura de datos en la que
se almacena una colección finita de datos del mismo tipo, que
comparten un nombre común, a los que se puede acceder por la
posición (índice) que ocupa cada uno de ellos dentro del
arreglo. Cada elemento del arreglo es una variable que puede
contener un número o una cadena de caracteres, dependiendo del
tipo de arreglo que se declare.
Los arreglos en Visual Basic se clasifican en estáticos y
dinámicos.
Arreglos estáticos
Son aquellos arreglos cuyo tamaño no puede cambiar en
tiempo de ejecución. La declaración de un arreglo estático se
puede realizar mediante la siguiente sintaxis:
Dim NOMBRE_ARREGLO(DIMENSONES) As TIPO
Pág. 41
Donde DIMENSIONES es una lista de números, separados por
comas y que definen las dimensiones del arreglo. Esta lista
puede ser de la siguiente forma:
DIMENSIÓN_1, DIMENSIÓN_2, DIMENSIÓN_3, . . ., DIMENSIÓN_ K
Para el caso de un arreglo formado por “ K ” dimensiones,
es decir un arreglo K -dimensional.
A manera de ejemplo considere los siguientes casos que se
pueden presentar:
Dim LISTA(9) As Integer
Dim MATRIZ(4, 3) As Double
Dim NOMBRES(19) As String * 30
En el primer caso se declara un arreglo unidimensional de
10 elementos de tipo entero (por defecto los elementos de un
arreglo se numeran a partir de 0).
En el segundo caso se define de un arreglo bidimensional
de 20 elementos (5 filas por 4 columnas) de tipo punto flotante
en doble precisión.
En el tercer caso se define una arreglo unidimensional de
20 elementos de tipo cadena de caracteres (cada elemento tiene
una longitud fija de 30 caracteres).
Como se observa la numeración de los elementos de un
arreglo por defecto comienza en cero, para hacer que la
Pág. 42
numeración comience en 1, debe ingresar la siguiente orden en
la sección de Declaraciones del módulo de formulario:
Luego, para declarar los mismos arreglos de los casos
anteriores, las sentencias serían las siguientes:
Dim LISTA(10) As Integer
Dim MATRIZ(5, 4) As Double
Dim NOMBRES(20) As String * 30
Establecer la sentencia Option Base a 1 o trabajar con el
valor predeterminado (cero) queda a consideración del lector.
Arreglos dinámicos
Son aquellos arreglos en los que su tamaño puede definirse
o modificarse en tiempo de ejecución. Para declara una arreglo
dinámico utilice la siguiente sintaxis:
Dim NOMBRE_ARREGLO() As TIPO
Para definir el tamaño del arreglo utilizar la siguiente
sintaxis:
Pág. 43
ReDim NOMBRE_ARREGLO(NÚMERO_ELEMENTOS)
Cada vez que se ejecuta la sentencia ReDim, todos los
valores almacenados en el arreglo se pierden. Para definir o
cambiar el tamaño del arreglo conservando los valores del mismo
use la siguiente sintaxis:
ReDim Preserve NOMBRE_ARREGLO(NÚMERO_ELEMENTOS)
Para liberar el espacio de memoria utilizado por arreglos
dinámicos que ya no son útiles, utilizar la sintaxis:
Erase NOMBRE_ARREGLO
La orden Erase asigna cero a cada elemento de los arreglos
numéricos y nulo (“”) a cada elemento de los arreglos de cadena
de caracteres.
A manera de ejemplo considere el siguiente código que
declara y hace uso de un arreglo dinámico:
Dim I As Integer, N As Integer, TEMP() As Integer
N = InputBox(“Ingrese N?”)
ReDim TEMP(N - 1)
For I = 0 To N - 1
TEMP(I) = I + 1
Print TEMP(I)
Next
Erase TEMP
Pág. 44
REGISTROS
Un registro es un nuevo tipo de dato, que se define como
una colección de datos de diferentes tipos, conocidos como
“campos”, los cuales se encuentran evidentemente relacionados.
Un registro sólo se puede ser creado en la sección de
declaraciones de un módulo. La sintaxis correspondiente es:
Private Type NOMBRE_REGISTRO
DECLARACIONES_DE_LOS_MIEMBROS
End Type
Por ejemplo considere el siguiente código que define la
estructura ALUMNO:
Private Type ALUMNO
ID_ALUMNO As String * 7
NOMBRE As String * 25
DIRECCION As String * 35
TELEFONO As String * 7
ESTADO As Boolean
End Type
Luego, podemos declarar una variable tipo ALUMNO de la
siguiente forma:
Dim X As ALUMNO
Pág. 45
Para referirse a un determinado miembro del registro se
utiliza el operador selector de campos ( . ), veamos:
X.ID_ALUMNO = “980976G”
X.NOMBRE = “Carlos Castillo Peralta”
X.DIRECCION = “Jr. C. Richardson 412 Chorrillos”
X.TELEFONO = “2510850”
X.ESTADO = True
Las mismas órdenes del párrafo anterior se pueden escribir
de una manera más fácil, más legible y más eficiente si utiliza
la sentencia With . . . End With, del siguiente modo:
With X
. ID_ALUMNO = “980976G”
.NOMBRE = “Carlos Castillo Peralta”
.DIRECCION = “Jr. C. Richardson 412 Chorrillos”
.TELEFONO = “2510850”
.ESTADO = True
End With
FUNCIONES
Las funciones son uno de los elementos básicos en
programación. A continuación serán estudiadas detalladamente.
Declaración de una función
Pág. 46
Una función es un procedimiento que cuando se ejecuta
devuelve un único resultado al procedimiento que la invocó. La
sintaxis correspondiente a la declaración de una función es:
Function NOMBRE_FUNCIÓN([LISTA_PARÁMETROS]) [As TIPO]
SENTENCIAS
[NOMBRE_FUNCIÓN = VALOR_RETORNADO]
[Exit Function]
End Function
Donde LISTA_PARÁMETROS es una secuencia de variables
separadas por comas que se corresponden con los argumentos
pasados cuando es invocada la función.
Para especificar el tipo de datos que será retornado por
la función utilice la cláusula opcional As TIPO, el tipo es
Variant por omisión.
El valor retornado por la función es almacenado en su
propio nombre, es decir en NOMBRE_FUNCIÓN, que actúa como
variable dentro del cuerpo de la función. Si no se efectúa esta
asignación el valor devuelto será cero si la función es de tipo
numérica, nulo (“”) si la función es de tipo cadena, o vacío
(Empty) si la función es de tipo Variant.
La cláusula opcional Exit Function permite salir de una
función antes de que la función finalice, en caso sea esto
necesario.
Pág. 47
La sintaxis para la llamada a una función es de la
siguiente forma:
VARIABLE = NOMBRE_FUNCIÓN([LISTA_ARGUMENTOS])
Donde LISTA_ARGUMENTOS es una secuencia de constantes,
variables o expresiones separadas por comas. El número de
argumentos debe ser igual al número de parámetros de la
función. Los tipos de los argumentos deben coincidir con los
tipos de sus correspondientes parámetros.
A manera de ejemplo considere la implementación de la
siguiente función:
32)( 2
++= xxxf
En la sección de Declaraciones del módulo de formulario
ingrese el siguiente código:
Function F(X As Double) As Double
F = X ^ 2 + 2 * X + 3
End Function
Para invocar la función creada recientemente, codifique
las siguientes líneas:
Dim A As Double, RESP As Double
A = InputBox(“Ingrese A?”)
RESP = F(A)
Pág. 48
MsgBox (Str(RESP))
Paso de argumentos a una función
El paso de argumentos a una función es la forma como se
ingresan los datos y variables al interior de la función y se
presenta de dos formas:
• Por referencia
• Por valor
Paso de argumentos por referencia
En las funciones de Visual Basic, los argumentos se pasan
por referencia (forma por defecto), de este modo cualquier
cambio de valor que sufra un parámetro en el cuerpo de la
función, también se produce en el argumento correspondiente de
la llamada a la función. Esta forma de pasar los argumentos a
una función es útil para funciones que devuelven más de un
valor. Por ejemplo, considere la siguiente función que calcula
las raíces reales de una ecuación cuadrática Ax Bx C2
0+ + = .
Function RAIZ(A As Double, B As Double, C As Double, _
X1 As Double, X2 As Double) As Boolean
Dim D As Double
D = B ^ 2 - 4 * A * C
If D >= 0 Then
X1 = (-B - Sqr(D)) / (2 * A)
X2 = (-B + Sqr(D)) / (2 * A)
Pág. 49
RAIZ = True ' Verdadero si hay raíces reales
Else
RAIZ = False ' Falso si no hay raíces reales
End If
End Function
La llamada a esta función se puede realizar de la manera
que se presenta a continuación:
Dim A As Double, B As Double, C As Double
Dim X1 As Double, X2 As Double
A = InputBox(“Ingrese A?”)
B = InputBox(“Ingrese B?”)
C = InputBox(“Ingrese C?”)
If RAIZ(A, B, C, X1, X2) Then
MsgBox “X1= ” & Str(X1)
MsgBox “X2= ” & Str(X2)
Else
MsgBox “NO EXISTEN RAÍCES REALES”
End If
Paso de argumentos por valor
Cuando se ejecuta una función, se podrá especificar que el
valor de un argumento no sea cambiado por esta función, pasando
dicho argumento por valor. Para ello se debe anteponer la
Pág. 50
palabra reservada ByVal a la declaración del parámetro en la
cabecera de la función. Por ejemplo:
Function F(ByVal X As Double) As Double
F = X ^ 2 + 2 * X + 3
End Function
La cabecera de la función F especifica que X será pasado
por valor y no por referencia.
Funciones recursivas
Se dice que una función es recursiva si se llama a sí
misma. Por ejemplo la función FACTORIAL cuyo código se presenta
a continuación es recursiva:
Function FACTORIAL(N As Integer) As Long
If N 0 Then<>
FACTORIAL = FACTORIAL(N - 1) * N
Else
FACTORIAL = 1
End If
End Function
PROCEDIMIENTOS
La sintaxis para definir un procedimiento es la
siguiente:
Private Sub NOMBRE_PROCEDIMIENTO([LISTA_PARÁMETROS])
Pág. 51
SENTENCIAS
[Exit Sub]
End Sub
La explicación es análoga a la dada para las funciones.
Sin embargo, un procedimiento no puede ser utilizado en una
expresión, ya que un procedimiento no retorna ningún valor a
través de su nombre.
La llamada a un procedimiento puede ser realizada de
alguna de las dos formas siguientes:
Call NOMBRE_PROCEDIMIENTO([LISTA_ARGUMENTOS])
ó
NOMBRE_PROCEDIMIENTO([LISTA_ARGUMENTOS])
Por ejemplo, el siguiente código corresponde a un
procedimiento que calcula e imprime la suma de los primeros
números naturales impares, es decir: = 1 + 3 + 5 + . . . +
N
S N
Private Sub SUMA_IMPAR(N As Integer)
Dim S As Integer, I As Integer
S = 0
For I = 1 To N
If I Mod 2 <> 0 Then
S = S + I
Pág. 52
End If
Next
MsgBox “La suma es S= ” & Str(S)
End Sub
La llamada a este procedimiento podría ser de la forma:
Call SUMA_IMPAR(25)
Pág. 53
CAPÍTULO 4
USO DE LOS CONTROLES
Los controles son aquellos objetos que se encuentran
dentro de un contenedor y que permiten la interacción entre el
usuario y la aplicación, ya sea para manipular datos y/o
ejecutar tareas.
En Visual Basic, los controles suelen ser agrupados en
tres categorías:
• Controles básicos
• Controles complementarios
• Controles externos
Los controles básicos son las etiquetas, cuadros de texto
y botones de comando, pues utilizando estos tres controles se
puede construir cualquier interfaz.
Los controles complementarios son el resto de los
controles, por ejemplo una casilla de verificación, un cuadro
combinado o un cronómetro.
Los controles externos se refieren a aquellos controles
creados por terceros. Este tipo de controles son llamados
ActiveX.
Pág. 54
CONTROLES BÁSICOS
Los controles básicos lo conforman las etiquetas, cuadros
de texto y botones de comando, debido a que cualquier interfaz
se puede implementar con sólo estos tres objetos.
Etiqueta
Una etiqueta es un control que permite presentar texto de
solo lectura. Se utiliza para mostrar títulos y mensajes que
por lo general no cambian. Sin embargo, si lo desea, puede
escribir procedimientos que cambien el texto mostrado por una
etiqueta como respuesta a eventos en tiempo de ejecución.
Propiedad Descripción
Alignment Especifica la forma como se alineará el
texto.
AutoSize Especifica si se cambia automáticamente el
tamaño del control para que quepan sus
contenidos.
BackColor,
ForeColor
Especifica el color de fondo y de primer
plano empleado para mostrar el texto.
BackStyle Especifica si el fondo del control es
transparente u opaco.
Caption Especifica el texto que se muestra en el
control.
WordWrap Especifica si la etiqueta se extiende a más
de una línea cuando el texto es amplio.
Pág. 55
Cuadro de texto
Un cuadro de texto es un control en el que el usuario
pueda ingresar datos desde el teclado o visualizar un resultado
generado por la aplicación. El valor de un cuadro de texto por
lo general se asocia a una variable de memoria.
Propiedad Descripción
Enabled Habilita o deshabilita el control, es decir
si se puede o no modificar el contenido.
Locked Permite bloquear el acceso al control en
tiempo de ejecución.
MaxLenght Especifica la longitud máxima (en caracteres)
que puede escribirse en el control.
MultiLine Especifica si el control admitirá múltiples
líneas.
PasswordChar Determina si se muestran en el control los
caracteres escritos por el usuario o los
caracteres de marcador de posición.
ScrollBars Especifica si se muestran las barras de
desplazamiento horizontales o verticales.
SelLength Especifica el número de caracteres
seleccionados.
SelStart Especifica el inicio del texto seleccionado.
Si su valor es 0, el texto seleccionado
comienza por el primer carácter.
SelText Contiene el texto seleccionado.
Text Contiene el texto introducido en el control.
Puede inicializar el contenido en tiempo de
diseño.
Pág. 56
Los eventos asociados a un cuadro de texto son los
siguientes:
Evento Descripción
Change Ocurre cuando se cambia el contenido del
control utilizando el teclado o el ratón.
KeyPress Ocurre cuando se pulsa una tecla.
Botón de comando
Un botón de comando es un control que suele emplearse para
ejecutar una acción, como cerrar un formulario, imprimir un
informe, etc.
Propiedad Descripción
Cancel Especifica si el control responderá a la
tecla ESC, por lo general para terminar la
aplicación.
Caption Muestra un título para el control.
Default Especifica si el control responderá a la
tecla ENTRAR, sin importar la ubicación del
enfoque.
Enabled Permite habilitar o deshabilitar el control.
Picture Especifica una imagen tipo icono para el
control.
Style Especifica la apariencia del control, ya sea
estándar (estilo estándar de Windows) o
gráfica (con una imagen personalizada).
Pág. 57
Los botones de comando suelen responder al evento Click,
cuya descripción es:
Evento Descripción
Click Ocurre cuando el usuario hace click sobre el
control.
A manera de ejemplo vamos a desarrollar la siguiente
aplicación. Esta consiste en un cajero automático el cual
permite manipular cierta cantidad de dinero para lo cual
dispone de los siguientes billetes: S/. 10.00; S/. 20.00;
S/. 50.00; S/. 100.00 y S/. 200.00. Elaborar una aplicación que
permita la lectura de la cantidad a retirar e indique el menor
número de billetes a utilizar.
Para el desarrollo de la presente aplicación proceda a
ubicar los siguientes controles en el formulario:
6 etiquetas
Pág. 58
6 cajas de texto
3 botones de comando
Una vez ubicados los controles, establezca las propiedades
según se indica:
Form1
Nombre FrmCajero
BorderStyle 3-Fixed Dialog
Caption Cajero automático
Label1
Nombre LblCantidad
AutoSize True
Caption Cantidad a retirar:
Label2
Nombre LblB10
AutoSize True
Caption Billetes de S/. 10
Label3
Nombre LblB20
AutoSize True
Caption Billetes de S/. 20
Label4
Nombre LblB50
AutoSize True
Caption Billetes de S/. 50
Label5
Pág. 59
Nombre LblB100
AutoSize True
Caption Billetes de S/. 100
Label6
Nombre LblB200
AutoSize True
Caption Billetes de S/. 200
Text1
Nombre TxtCantidad
Text
Text2
Nombre TxtB10
Text
Text3
Nombre TxtB20
Text
Text4
Nombre TxtB50
Text
Text5
Nombre TxtB100
Text
Text6
Nombre TxtB200
Text
Command1
Pág. 60
Nombre CmdAceptar
Caption &Aceptar
Command2
Nombre CmdLimpiar
Caption &Limpiar
Command3
Nombre CmdSalir
Caption &Salir
Para añadir código a la aplicación haga doble click sobre
el botón “Aceptar” e ingrese lo siguiente:
Private Sub CmdAceptar_Click()
Dim C As Integer, B200 As Integer, B100 As Integer, _
B50 As Integer, B20 As Integer, B10 As Integer
C = Val(TxtCantidad)
If C Mod 10 = 0 Then
B200 = C  200 : C = C Mod 200
B100 = C  100 : C = C Mod 100
B50 = C  50 : C = C Mod 50
B20 = C  20 : B10 = C Mod 20
TxtB200 = Str(B200)
TxtB100 = Str(B100)
TxtB50 = Str(B50)
TxtB20 = Str(B20)
TxtB10 = Str(B10)
Else
Pág. 61
MsgBox “Cantidad a retirar debe ser múltiplo de 10”
TxtCantidad = “”
TxtCantidad.SetFocus
End If
End Sub
Luego, haga doble click sobre el botón “Limpiar” y añada
el siguiente código:
Private Sub CmdLimpiar_Click()
TxtCantidad = “”
TxtB200 = “”
TxtB100 = “”
TxtB50 = “”
TxtB20 = “”
TxtB10 = “”
TxtCantidad.SetFocus
End Sub
Finalmente dar doble click sobre el botón “Salir” y añada
el siguiente código:
Private Sub CmdSalir_Click()
End
End Sub
Pág. 62
En el código anterior hemos utilizado el método SetFocus
para enfocar la caja de texto TxtCantidad, esto es, para
posicionar el cursor sobre ella.
CONTROLES COMPLEMENTARIOS
Los controles complementarios se utilizan como alternativa
a los controles básicos en aplicaciones en las cuales su uso
facilita o mejora el diseño de la interfaz. Como el lector
podrá verificar, algunos controles son más adecuados que otros
dependiendo del tipo de aplicación que se pretenda desarrollar.
Marco
Un marco es un objeto contenedor que puede utilizarse para
agrupar casillas de verificación, botones de opción, botones de
comando, etc.
Propiedad Descripción
Caption Muestra un título para el control.
Casilla de verificación
Una casilla de verificación se utiliza para alternar entre
dos posibles valores (Activado/Desactivado). Cada casilla de
verificación es independiente de las demás ya que cada una
tiene su propio nombre (Name). Puede utilizar casillas de
verificación en grupos para mostrar múltiples opciones entre
Pág. 63
las cuales el usuario puede seleccionar todas las que desee a
la vez.
Propiedad Descripción
Caption Muestra un título para el control.
Value Devuelve o establece el estado del control,
puede ser: Desactivado (0), Activado (1).
Las casillas de verificación suelen responder al evento
Click.
Botón de opción
Un botón de opción se utiliza para alternar entre dos
posibles valores (Activado/Desactivado), de manera similar a
las casillas de verificación, la diferencia radica en que de un
grupo de botones de opción el usuario sólo puede seleccionar un
único botón a la vez.
Propiedad Descripción
Caption Muestra un título para el control.
Value Devuelve o establece el estado del control,
puede ser: Desactivado (Falso), Activado
(True).
Los botones de opción también suelen responder al evento
Click.
Pág. 64
A manera de ejemplo vamos a desarrollar la siguiente
aplicación, la cual permite cambiar el aspecto de un cuadro de
texto, el usuario debe elegir el color (rojo, verde, azul) y el
estilo (negrita, cursiva, subrayado) de la fuente a utilizar.
Adicionalmente, cuando el usuario active la casilla de
verificación “Convertir a mayúsculas”, todo el texto que haya
escrito en el cuadro de texto se presentará en mayúsculas y
todo texto que escriba a continuación (mientras la opción esté
activada) también deberá aparecer en mayúsculas.
Para el desarrollo de la presente aplicación proceda a
ubicar los siguientes controles en el formulario:
1 cuadro de texto
2 marcos
3 botones de opción
4 casillas de verificación
Pág. 65
Una vez ubicados los controles, establezca las propiedades
según se indica:
Form1
Nombre FrmEditor
BorderStyle 3-Fixed Dialog
Caption Editor
Text1
Nombre TxtMensaje
ForeColor &H000000FF&
Text
Frame1
Nombre FraColor
Caption Color
Frame2
Nombre FraEstilo
Caption Estilo
Option1
Nombre OptRojo
Caption Rojo
ForeColor &H000000FF&
Value True
Option2
Nombre OptVerde
Caption Verde
ForeColor &H00008000&
Pág. 66
Option3
Nombre OptAzul
Caption Azul
ForeColor &H00C00000&
Check1
Nombre ChkNegrita
Caption Negrita
Font Arial (Negrita)
Check2
Nombre ChkCursiva
Caption Cursiva
Font Arial (Cursiva)
Check3
Nombre ChkSubrayado
Caption Subrayado
Font Arial (Subrayado)
Check4
Nombre ChkMayuscula
Caption Convertir a mayúsculas
Una vez establecidas las propiedades, proceda a ingresar
el código que se indica a continuación:
Private Sub OptRojo_Click()
If OptRojo.Value Then
TxtMensaje.ForeColor = RGB(255, 0, 0)
End If
Pág. 67
End Sub
Private Sub OptVerde_Click()
If OptVerde.Value Then
TxtMensaje.ForeColor = RGB(0, 255, 0)
End If
End Sub
Private Sub OptAzul_Click()
If OptAzul.Value Then
TxtMensaje.ForeColor = RGB(0, 0, 255)
End If
End Sub
Private Sub ChkNegrita_Click()
If ChkNegrita.Value Then
TxtMensaje.Font.Bold = True
Else
TxtMensaje.Font.Bold = False
End If
End Sub
Private Sub ChkCursiva_Click()
If ChkCursiva.Value Then
TxtMensaje.Font.Italic = True
Else
TxtMensaje.Font.Italic = False
End If
End Sub
Pág. 68
Private Sub ChkSubrayado_Click()
If ChkSubrayado.Value Then
TxtMensaje.Font.Underline = True
Else
TxtMensaje.Font.Underline = False
End If
End Sub
Private Sub ChkMayuscula_Click()
If ChkMayuscula.Value Then
TxtMensaje = UCase(TxtMensaje)
End If
End Sub
Private Sub TxtMensaje_KeyPress(KeyAscii As Integer)
Dim CAR As String * 1
If ChkMayuscula.Value Then
CAR = UCase(Chr(KeyAscii))
KeyAscii = Asc(CAR)
End If
End Sub
La función RGB() especifica el color que se asigna a la
propiedad ForeColor.
La función UCase() retorna una cadena de caracteres en
mayúsculas.
Pág. 69
Cuadro de lista
Un cuadro de lista es un control que presenta una lista de
elementos en la que el usuario puede seleccionar uno o más de
dichos elementos. Si el número de elementos supera el número
que puede mostrarse, se agregará automáticamente una barra de
desplazamiento al control.
Propiedad Descripción
List Contiene los elementos de la lista. Puede
definirlos en tiempo de diseño.
ListCount Especifica el número de elementos de la
lista. Su valor siempre es uno más que el
mayor valor de ListIndex.
ListIndex Especifica el número de orden que ocupa el
elemento seleccionado en la lista. Toma el
valor de 0 para el primer elemento, si no ha
selecciona ninguno retorna -1.
MultiSelect Especifica si se pueden seleccionar varios
elementos de la lista.
SelCount Devuelve el número de elementos
seleccionados.
Selected Especifica si un elemento de la lista está
seleccionado.
Sorted Especifica si los elementos de la lista se
ordenan alfabéticamente.
Text Especifica el valor del elemento seleccionado
en ese instante. El valor es tratado como una
cadena de caracteres.
Pág. 70
Los métodos que se pueden utilizar para un cuadro de lista
son los siguientes:
Método Descripción
AddItem Agrega un nuevo elemento a la lista.
Clear Elimina todos los elementos contenidos en la
lista.
RemoveItem Elimina en elemento de la lista.
Cuadro combinado
Un cuadro combinado es una mezcla de un cuadro de texto
con una lista. En él no sólo se podrá ingresar un dato sino
también seleccionarlo de la lista. Presenta las mismas
propiedades, eventos y métodos que el cuadro de lista a
excepción de lo siguiente:
Propiedad Descripción
Style Especifica si el control se comporta como un
cuadro de texto o como una lista desplegable.
Un cuadro de texto permite ingresar valores.
Una lista desplegable sólo permite
seleccionar valores. El valor predeterminado
es 0-vbComboDropDown, e incluye una lista
desplegable y un cuadro de texto. El valor
1-vbComboSimple incluye tan solo cuadro de
texto. El valor 2-Dropdown List incluye sólo
una lista desplegable.
Pág. 71
Como ejemplo del uso de listas vamos a desarrollar una
aplicación que permita ingresar el nombre de un curso, el cual
pasa a formar parte de una lista de espera antes de ser
programado para su dictado. Los cursos deben ser seleccionados
de la lista de espera y trasladados a la lista de cursos
programados y viceversa.
Para el desarrollo de la presente aplicación proceda a
ubicar los siguientes controles en el formulario:
3 etiquetas
1 cuadro de texto
2 listas
5 botones de comando
Pág. 72
En seguida proceda a establecer las propiedades según se
indica:
Form1
Nombre FrmCursos
BorderStyle 3-Fixed Dialog
Caption Cursos
Label1
Nombre LblCurso
AutoSize True
Caption Ingrese nuevo curso:
Label2
Nombre LblSeleccionar
AutoSize True
Caption Seleccione un curso:
Label3
Nombre LblProgramado
AutoSize True
Caption Curso programado:
Text1
Nombre TxtCurso
Text
List1
Nombre LstSeleccionar
List2
Nombre LstProgramado
Pág. 73
Command1
Nombre CmdAgregar
Caption
Picture C:FundVBBitmapsAddItem.Bmp
Style 1-Graphical
Command2
Nombre CmdAgregarTodo
Caption
Picture C:FundVBBitmapsAddAll.Bmp
Style 1-Graphical
Command3
Nombre CmdQuitar
Caption
Picture C:FundVBBitmapsRemove.Bmp
Style 1-Graphical
Command4
Nombre CmdQuitarTodo
Caption
Picture C:FundVBBitmapsRemoveAll.Bmp
Style 1-Graphical
Command5
Nombre CmdAnnadir
Caption &Añadir
Default True
Seguidamente proceda a ingresar el código que se indica a
continuación:
Pág. 74
Private Sub CmdAnnadir_Click()
LstSeleccionar.AddItem TxtCurso
TxtCurso = “”
TxtCurso.SetFocus
End Sub
Private Sub CmdAgregar_Click()
Dim CURSO As String, I As Integer
CURSO = LstSeleccionar.Text
I = LstSeleccionar.ListIndex
If LstSeleccionar.ListIndex >= 0 Then
LstProgramado.AddItem CURSO
LstSeleccionar.RemoveItem I
End If
End Sub
Private Sub CmdQuitar_Click()
Dim CURSO As String, I As Integer
CURSO = LstProgramado.Text
I = LstProgramado.ListIndex
If LstProgramado.ListIndex >= 0 Then
LstSeleccionar.AddItem CURSO
LstProgramado.RemoveItem I
End If
End Sub
Private Sub CmdAgregarTodo_Click()
Dim I As Integer
Pág. 75
For I = 0 To LstSeleccionar.ListCount - 1
LstProgramado.AddItem LstSeleccionar.List(I)
Next
LstSeleccionar.Clear
End Sub
Private Sub CmdQuitarTodo_Click()
Dim I As Integer
For I = 0 To LstProgramado.ListCount - 1
LstSeleccionar.AddItem LstProgramado.List(I)
Next
LstProgramado.Clear
End Sub
Seguidamente mostraremos un ejemplo del uso de los cuadros
combinados. Para tal fin vamos a desarrollar una aplicación que
permita realizar consultas acerca de un determinado curso. La
relación de cursos se presentará mediante un cuadro combinado,
del cual el usuario debe seleccionar el curso de su interés y
en seguida se presentará el nombre del profesor encargado del
curso (teoría), el nombre del jefe de práctica (laboratorio),
así como los horarios de teoría y de laboratorio,
respectivamente.
Pág. 76
Para el desarrollo de la presente aplicación proceda a
ubicar los siguientes controles en el formulario:
1 etiqueta
1 cuadro de texto
1 cuadro combinado
1 botón de comando
En seguida proceda a establecer las propiedades según se
indica:
Form1
Nombre FrmConsultaCursos
BorderStyle 3-Fixed Dialog
Caption Consulta de cursos
Pág. 77
Label1
Nombre LblCursos
Caption Cursos:
Text1
Nombre TxtCurso
MultiLine True
ScrollBars 2-Vertical
Text
Combo1
Nombre CboCursos
Text
Style 2-Dropdown List
Command1
Nombre CmdSalir
Caption &Salir
Seguidamente proceda a ingresar el código que se indica a
continuación:
Dim Matriz(5, 3) As String
Private Sub Form_Load()
CboCursos.AddItem “Microsoft Visual Basic Nivel I”
CboCursos.AddItem “Microsoft Visual Basic Nivel II”
CboCursos.AddItem “Microsoft Visual FoxPro Nivel I”
CboCursos.AddItem “Microsoft Visual FoxPro Nivel II”
CboCursos.AddItem “Microsoft Visual C++ Nivel I”
CboCursos.AddItem “Microsoft Visual C++ Nivel II”
Pág. 78
Matriz(0, 0) = “Castillo Peralta, Carlos”
Matriz(1, 0) = “Castillo Peralta, Carlos”
Matriz(2, 0) = “Linares Alarcon, Adams”
Matriz(3, 0) = “Castillo Peralta, Carlos”
Matriz(4, 0) = “Córdoba Saavedra, Javier”
Matriz(5, 0) = “Castillo Peralta, Carlos”
Matriz(0, 1) = “Sa 08-11”
Matriz(1, 1) = “Sa 14-17”
Matriz(2, 1) = “Sa 08-11”
Matriz(3, 1) = “Do 08-11”
Matriz(4, 1) = “Sa 14-17”
Matriz(5, 1) = “Sa 17-20”
Matriz(0, 2) = “Castillo Peralta, Carlos”
Matriz(1, 2) = “Linares Alarcon, Adams”
Matriz(2, 2) = “Montes Tejada, Estela”
Matriz(3, 2) = “Linares Alarcon, Adams”
Matriz(4, 2) = “Córdoba Saavedra, Javier”
Matriz(5, 2) = “Córdoba Saavedra, Javier”
Matriz(0, 3) = “Sa 11-13”
Matriz(1, 3) = “Do 08-10”
Matriz(2, 3) = “Sa 11-13”
Matriz(3, 3) = “Do 14-16”
Matriz(4, 3) = “Sa 18-20”
Matriz(5, 3) = “Do 08-10”
End Sub
Pág. 79
Private Sub CboCursos_Click()
Dim P_TEORIA As String, H_TEORIA As String
Dim P_LAB As String, H_LAB As String
P_TEORIA = “Profesor de teoría: ” & _
Matriz(CboCursos.ListIndex, 0)
H_TEORIA = “Horario de teoría: ” & _
Matriz(CboCursos.ListIndex, 1)
P_LAB = “Jefe de práctica: ” & _
Matriz(CboCursos.ListIndex, 2)
H_LAB = “Horario laboratorio: ” & _
Matriz(CboCursos.ListIndex, 3)
TxtCurso = P_TEORIA & vbCrLf & H_TEORIA & vbCrLf & _
P_LAB & vbCrLf & H_LAB
End Sub
Private Sub CmdSalir_Click()
End
End Sub
La constante vbCrLf es una combinación de retorno de carro
y avance de línea, es equivalente a Chr(13) + Chr(10).
Para este ejemplo en particular hemos almacenado la
información en memoria RAM mediante el uso de un arreglo
bidimensional (Matriz).
Pág. 80
Cronómetro
Un cronómetro sirve para controlar el tiempo transcurrido
desde el inicio de una acción.
Propiedad Descripción
Interval Especifica el número de milisegundos que se
esperará para disparar el evento Timer.
El control Cronómetro responde al evento Timer, cuya
descripción es:
Evento Descripción
Timer Ocurre cuando el número de milisegundos
especificado en la propiedad Interval ha
transcurrido.
A manera de ejemplo vamos a desarrollar la siguiente
aplicación que simula el funcionamiento de un reloj digital.
Pág. 81
Para el desarrollo de la presente aplicación proceda a
ubicar los siguientes controles sobre el formulario:
1 etiqueta
1 cuadro de texto
1 cronómetro
1 botón de comando
En seguida proceda a establecer las propiedades según se
indica:
Form1
Nombre FrmReloj
BorderStyle 3-Fixed Dialog
Caption Reloj digital
Label1
Nombre LblHora
Caption Hora
Text1
Nombre TxtHora
Text
Timer1
Nombre Timer1
Interval 500
Command1
Nombre CmdTerminar
Caption &Terminar
Pág. 82
Seguidamente proceda a ingresar el código que se indica a
continuación:
Private Sub Form_Activate()
TxtHora = Time()
End Sub
Private Sub Timer1_Timer()
If TxtHora Time() Then<>
TxtHora = Time()
End If
End Sub
Private Sub CmdTerminar_Click()
End
End Sub
Cuadro de imagen
Un cuadro de imagen se utiliza para mostrar un archivo de
imagen (BMP, GIF o JPG). Recorta el gráfico si el control no es
lo bastante grande para mostrar la imagen completa.
Propiedad Descripción
AutoSize Especifica si el control ajusta
automáticamente su tamaño para mostrar un
gráfico completo.
Picture Especifica el archivo de imagen para el
control.
Pág. 83
El evento que suele manejarse para este control es
MouseMove, cuya descripción es:
Evento Descripción
MouseMove Ocurre cuando el usuario mueve el ratón sobre
el control.
Imagen
Un control imagen se utilizará para mostrar un archivo de
imagen (BMP, GIF o JPG) de manera similar a un Cuadro de
imagen. Sin embargo, este control utiliza menos recursos del
sistema y se actualiza con más rapidez que un cuadro de imagen.
Propiedad Descripción
Picture Especifica el archivo de imagen para el
control.
Stretch Especifica como se ajusta el tamaño del
archivo gráfico para que quepa dentro del
control imagen.
Para este control también se suele manejar el evento
MouseMove.
Barras de desplazamiento horizontal
Una barra de desplazamiento horizontal representa un valor
entero, la cual tiene un cuadrado que se desplaza a lo largo de
la misma para fijar un valor.
Pág. 84
La posición más a la izquierda se corresponde con el valor
mínimo, la posición más a la derecha con el valor máximo, y
cualquier otra posición es un valor entre ellos dos.
Propiedad Descripción
Max Especifica el valor máximo que puede tomar la
propiedad Value.
Min Especifica el valor mínimo que puede tomar la
propiedad Value.
LargeChange Especifica en cuanto cambiará el valor de la
propiedad Value cuando el usuario haga click
antes o después del cuadrado de
desplazamiento.
SmallChange Especifica en cuanto cambiará el valor de la
propiedad Value cuando el usuario haga click
en alguna de las flechas de los extremos de
la barra.
Value Especifica el valor del control, este se
encuentra siempre entre los valores de las
propiedades Min y Max.
Las barras de desplazamientos responden a los eventos:
Evento Descripción
Change Ocurre inmediatamente después que el cuadrado
de desplazamiento ha sido movido.
Scroll Ocurre mientras el cuadrado de desplazamiento
está siendo movido (este evento sólo ocurre
cuando el cuadrado es arrastrado).
Barras de desplazamiento vertical
Pág. 85
Una barra de desplazamiento vertical representa un valor
entero, la cual tiene un cuadrado que se desplaza a lo largo de
la misma para fijar un valor.
La posición más hacia arriba se corresponde con el valor
mínimo, la posición más hacia abajo se corresponde con el valor
máximo, y cualquier otra posición es un valor entre ellos dos.
Las propiedades y eventos de las barras de desplazamiento
horizontal y vertical son análogas.
Como ejemplo, vamos a construir una aplicación que permita
cambiar el color de fondo de un cuadro de imagen, mediante tres
barras de desplazamiento (rojo, verde y azul).
Para el desarrollo de la presente aplicación proceda a
ubicar los siguientes controles en el formulario:
3 etiquetas
Pág. 86
3 barras de desplazamiento horizontal
1 cuadro de imagen
En seguida proceda a establecer las propiedades según se
indica:
Form1
Nombre FrmColores
BorderStyle 3-Fixed Dialog
Caption Colores
Label1
Nombre LblRojo
Caption Rojo
Label2
Nombre LblVerde
Caption Verde
Label3
Nombre LblAzul
Caption Azul
HScroll1
Nombre HSRojo
LargeChange 10
Max 255
Min 0
SmallChange 1
Value 255
HScroll2
Pág. 87
Nombre HSVerde
LargeChange 10
Max 255
Min 0
SmallChange 1
Value 0
HScroll3
Nombre HSAzul
LargeChange 10
Max 255
Min 0
SmallChange 1
Value 0
Picture1
Nombre PicFondo
BackColor &H000000FF&
Seguidamente proceda a ingresar el código que se indica a
continuación:
Private Sub HSRojo_Change()
PicFondo.BackColor = RGB(HSRojo, HSVerde, HSAzul)
End Sub
Private Sub HSVerde_Change()
PicFondo.BackColor = RGB(HSRojo, HSVerde, HSAzul)
End Sub
Private Sub HSAzul_Change()
Pág. 88
PicFondo.BackColor = RGB(HSRojo, HSVerde, HSAzul)
End Sub
En el código anterior se debió colocar HSRojo.Value,
HSVerde.Value y HSAzul.Value, pero debido a que la propiedad
Value es por defecto se puede omitir.
Cuadro de lista de unidades
Un cuadro de lista de unidades permite al usuario
seleccionar una unidad de disco válida en tiempo de ejecución.
Utilice este control para presentar una lista de todas las
unidades válidas del sistema.
Propiedad Descripción
Drive Especifica la unidad seleccionada en tiempo
de ejecución.
Este control responde al evento Change, cuya descripción
es la siguiente:
Evento Descripción
Change Ocurre cuando el usuario hace click sobre la
unidad que desea seleccionar. El evento
Change también ocurre si se selecciona la
unidad mediante el teclado.
Cuadro de lista de directorios
Pág. 89
Un cuadro de lista de directorios muestra directorios y
rutas de acceso en tiempo de ejecución. Utilice este control
para mostrar una lista jerárquica de directorios.
Propiedad Descripción
Path Especifica la ruta de acceso actual.
Un cuadro de lista de directorios también responde al
evento Change.
Cuadro de lista de archivos
Un cuadro de lista de archivos encuentra y muestra los
archivos del directorio especificado por la propiedad Path en
tiempo de ejecución. Utilice este control para mostrar una
lista de los archivos seleccionados por tipo.
Propiedad Descripción
Path Especifica la ruta de acceso actual.
Pattern Especifica el tipo de archivo que se desea
visualizar en el control.
List Devuelve los elementos contenidos en la parte
de lista del control.
ListIndex Especifica el índice del elemento
seleccionado actualmente en el control.
Como ejemplo vamos a desarrollar una aplicación que
permita el manejo de unidades, carpetas y archivos. El usuario
Pág. 90
puede seleccionar la unidad actual de trabajo, la carpeta y el
archivo y poder visualizar su contenido (en este caso archivos
gráficos *.JPG).
Para el desarrollo de la presente aplicación proceda a
ubicar los siguientes controles en el formulario:
4 etiquetas
1 cuadro de lista de unidades
1 cuadro de lista de directorios
1 cuadro de lista de archivos
1 imagen
En seguida proceda a establecer las propiedades según se
indica:
Form1
Nombre FrmVisor
Caption Visor
Pág. 91
Label1
Nombre LblUnidad
Caption Unidad
Label2
Nombre LblCarpeta
Caption Carpeta
Label3
Nombre LblArchivo
Caption Archivo
Label4
Nombre LblVista
Caption Vista previa
Drive1
Nombre Drive1
Dir1
Nombre Dir1
File1
Nombre File1
Pattern *.JPG
Image1
Nombre ImgVista
Stretch True
Seguidamente proceda a ingresar el código que se indica a
continuación:
Private Sub Drive1_Change()
Pág. 92
On Error GoTo DRIVE_ERROR
Dir1.Path = Drive1.Drive
Exit Sub
DRIVE_ERROR:
MsgBox “ERROR: Unidad no preparada”, vbCritical, “Error”
Exit Sub
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
Private Sub File1_Click()
Dim ARCHIVO As String
ARCHIVO = File1.Path & “”
ARCHIVO = ARCHIVO & File1.List(File1.ListIndex)
ImgVista.Picture = LoadPicture(ARCHIVO)
End Sub
La instrucción On Error activa una rutina de control de
errores y especifica la ubicación de la misma en un
procedimiento.
LA FUNCIÓN MSGBOX
A menudo habrá situaciones en las cuales tendrá que
presentar algún mensaje (por ejemplo una pregunta) y en función
Pág. 93
de la respuesta del usuario se ejecutará una determinada
acción.
La función MsgBox() muestra un cuadro de diálogo
predefinido y retorna un valor de tipo entero dependiendo del
botón seleccionado por el usuario. Su sintaxis es de la
siguiente forma:
VALOR = MsgBox(MENSAJE [, BOTÓN + ICONO, TÍTULO])
Donde MENSAJE se refiere a una expresión de cadena que se
muestra como mensaje en el cuadro de diálogo.
BOTÓN es una expresión numérica que se refiere al tipo y
cantidad de botones a utilizar.
ICONO es una expresión numérica que se refiere al estilo
de icono que se va ha utilizar.
TÍTULO es una texto que se mostrará en la barra de título
de la caja de diálogo.
Tipo de botón
Valor Botón Nombre
0 Aceptar vbOKOnly
Pág. 94
1 Aceptar y Cancelar vbOKCancel
2 Anular, Reintentar, Ignorar vbAbortRetryIgnore
3 Sí, No y Cancelar vbYesNoCancel
4 Sí y No vbYesNo
5 Reintentar y Cancelar vbRetryCancel
Tipo de icono
Valor Icono Nombre
16 Mensaje crítico vbCritical
32 Signo de interrogación vbQuestion
48 Signo de exclamación vbExclamation
64 Signo de información vbInformation
Valores retornados
Valor Botón Nombre
1 Aceptar vbOK
2 Cancelar vbCancel
3 Anular vbAbort
4 Reintentar vbRetry
5 Ignorar vbIgnore
6 Sí vbYes
7 No vbNo
Como ejemplo vamos a construir un formulario que presente
un botón “Salir”, de tal forma que cuando el usuario pulse
dicho botón se presente el siguiente mensaje:
Pág. 95
En caso de que el usuario elija la opción “Sí”, la
aplicación debe terminar. En caso contrario, es decir si el
usuario elige la opción “No”, se debe proseguir con la
aplicación.
Para el desarrollo del presente ejemplo, proceda a ubicar
sobre el formulario un botón de comando (CmdSalir), a
continuación ingresar el siguiente código:
Private Sub CmdSalir_Click()
Dim RESP As Integer
RESP = MsgBox(“Desea terminar la aplicación?”, _
vbQuestion + vbYesNo, “Pregunta”)
If RESP = vbYes Then
End
End If
End Sub
Para ilustrar mejor el uso de la función MsgBox() vamos a
desarrollar la siguiente aplicación que permite mostrar los
diferentes tipos de botones e iconos generados por la función.
Pág. 96
Para ello proceda a ubicar los siguientes controles en el
formulario:
2 cuadros de lista
1 botón de comando
En seguida proceda a establecer las propiedades según se
indica:
Form1
Nombre FrmFuncionMsgBox
BorderStyle 3-Fixed Dialog
Caption Función MsgBox
List1
Nombre LstBoton
List2
Nombre LstIcono
Command1
Pág. 97
Nombre CmdMensaje
Caption &Mensaje
Seguidamente proceda a ingresar el código que se indica a
continuación:
Private Sub Form_Load()
LstBoton.AddItem “Aceptar”
LstBoton.AddItem “Aceptar y Cancelar”
LstBoton.AddItem “Anular, Reintentar, Ignorar”
LstBoton.AddItem “Sí, No y Cancelar”
LstBoton.AddItem “Sí y No”
LstBoton.AddItem “Reintentar y Cancelar”
LstIcono.AddItem “Mensaje crítico”
LstIcono.AddItem “Signo de interrogación”
LstIcono.AddItem “Signo de exclamación”
LstIcono.AddItem “Signo de información”
End Sub
Private Sub CmdMensaje_Click()
Dim RESP As Integer, BOTON As Integer, ICONO As Integer
BOTON = LstBoton.ListIndex
ICONO = (LstIcono.ListIndex + 1) * 16
RESP = MsgBox(“Hola Mundo”, BOTON + ICONO, “Ejemplo”)
End Sub
Pág. 98
CAPÍTULO 5
EL FORMULARIO
Un formulario es un objeto contenedor que sirve para
diseñar la interfaz de usuario. En el formulario se colocan los
controles para que el usuario pueda interactuar con la
aplicación de una manera fácil e intuitiva.
Los formularios tienen sus propias propiedades, eventos y
métodos con los que se puede controlar su apariencia y
comportamiento, muchos de los cuales ya han sido utilizados en
las aplicaciones de los capítulos anteriores y que a
continuación pasamos a describir.
Pág. 99
Propiedad Descripción
AutoRedraw Especifica si se activa el redibujado
automático del formulario.
BackColor Especifica el color de fondo del formulario.
BorderStyle Especifica un estilo de borde para el
formulario.
Caption Especifica el texto que se muestra en la
barra de título del formulario.
ControlBox Especifica si aparece un icono de menú
desplegable en el ángulo superior izquierdo
del formulario.
ForeColor Especifica el color de primer plano utilizado
para mostrar texto sobre el formulario.
Height Especifica el alto del formulario. Se mide en
“twips”.
Icon Especifica el icono que se muestra para un
formulario.
MaxButton Especifica si el formulario tiene un botón
Maximizar.
MinButton Especifica si el formulario tiene un botón
Minimizar.
Picture Especifica el archivo de imagen que se va ha
mostrar como fondo para el formulario.
StartUpPosition Especifica la posición del formulario la
primera vez que se ejecuta.
Visible Establece si el formulario es visible o está
oculto.
Width Especifica el ancho del formulario. Se mide
en “twips”.
WindowState Establece el estado del formulario (normal,
minimizado o maximizado).
Pág. 100
Nota
Un 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 igual a 1/20 de un
punto de impresora. Existen aproximadamente 1440 twips en una
pulgada o 567 twips en un centímetro.
Los eventos a los que responde un formulario son los
siguientes:
Evento Descripción
Activate Ocurre cuando el formulario se convierte en
ventana activa.
Deactivate Ocurre cuando el formulario deja de ser la
ventana activa.
Load Ocurre cuando el formulario se carga en la
memoria.
MouseDown Ocurre cuando el usuario pulsa el botón
derecho del ratón sobre el formulario.
QueryUnload Ocurre antes de iniciarse el proceso de
descarga del formulario (antes del evento
Unload).
Resize Ocurre cuando se muestra primero el
formulario o se cambian sus dimensiones.
Unload Ocurre cuando el formulario se descarga de la
memoria.
Pág. 101
Los métodos que se pueden utilizar con un formulario son
los siguientes:
Método Descripción
Hide Oculta un formulario.
PopupMenu Presenta un menú popup en la posición actual
del ratón.
Print Imprime un valor sobre el formulario.
Refresh Vuelve a pintar un formulario y actualiza
todos los valores contenidos en él.
Show Muestra un formulario y determina si es modal
o carece de modo. Si el formulario a mostrar
no está cargado Visual Basic lo carga
automáticamente.
Como ejemplo vamos a desarrollar una aplicación que
utilice dos formularios. Desde el primer formulario el usuario
podrá ir al segundo formulario y viceversa.
Pág. 102
Para el desarrollo de la presente aplicación proceda a
crear un nuevo proyecto. Seguidamente debe ubicar dos botones
de comando en el formulario. Luego establezca las siguientes
propiedades:
Form1
Nombre Form1
Caption Primer formulario
Command1
Nombre CmdIr
Caption &Ir
Command2
Nombre CmdSalir
Caption &Salir
Seguidamente procede a ingresar el código que se muestra a
continuación:
Private Sub CmdIr_Click()
Form2.Show
Form1.Hide
End Sub
Private Sub CmdSalir_Click()
End
End Sub
Pág. 103
Luego debe añadir un formulario adicional al proyecto.
Para tal fin, seleccione el menú Proyecto y elija la opción
Agregar formulario.
Del cuadro de diálogo que se presenta elija el icono
Formulario y haga click en el botón “Abrir”, tal como se indica
en la figura. En ese instante se añadirá un nuevo formulario al
proyecto. Luego, proceda a ubicar un botón de comandos en el
formulario que acaba de añadir y establezca las siguientes
propiedades:
Form2
Nombre Form2
Caption Segundo formulario
ControlBox False
Pág. 104
Command2
Nombre CmdVolver
Caption &Volver
En seguida proceda a ingresar el código que se indica a
continuación:
Private Sub CmdVolver_Click()
Form1.Show
Form2.Hide
End Sub
ESTILOS DE FORMULARIO
Visual Basic cuenta con seis diferentes estilos de
formulario, cuya descripción es la siguiente:
Valor Estilo Descripción
0 None No presenta ningún borde.
1 Fixed Single Puede incluir un Menú de control,
una Barra de título , un botón
Maximizar y un botón Minimizar.
Sólo puede cambiar de tamaño
mediante los botones Maximizar y
Minimizar.
2 Sizable (Predeterminado). Puede cambiar de
tamaño mediante cualquiera de los
elementos opcionales de borde
indicados para Fixed Single.
Pág. 105
Valor Estilo Descripción
3 Fixed Dialog Puede incluir un Menú de control y
una Barra de título, pero no los
botones Maximizar ni Minimizar. No
puede cambiar de tamaño.
4 Fixed ToolWindow Sólo muestra el botón Cerrar y el
texto de la barra de título aparece
con un tamaño de fuente reducido.
No puede cambiar su tamaño.
5 Sizable ToolWindow Sólo muestra el botón Cerrar y el
texto de la barra de título aparece
con un tamaño de fuente reducido.
Puede cambiar de tamaño.
Como ejemplo vamos a desarrollar una aplicación que
permita representar los diferentes estilos de formulario de
Visual Basic.
Pág. 106
Para el desarrollo de la presente aplicación proceda a
crear un nuevo proyecto y luego ubique los siguientes controles
en el formulario:
1 cuadro de lista
2 botones de comando
Luego debe establecer las propiedades que se indican a
continuación:
Form1
Nombre FrmPrincipal
Caption Estilos de formulario
BorderStyle 3-Fixed Dialog
List1
Nombre LstTipoForm
List 0-None
1-Fixed Single
2-Sizable
3-Fixed Dialog
4-Fixed ToolWindow
5-Sizable ToolWindow
Command1
Nombre CmdMostrar
Caption &Mostrar
Command2
Nombre CmdSalir
Caption &Salir
Pág. 107
Seguidamente procede a ingresar el código que se muestra a
continuación:
Private Sub Form_Load()
Load FrmNone
Load FrmFixedSingle
Load FrmSizable
Load FrmFixedDialog
Load FrmFixedToolWindow
Load FrmSizableToolWindow
End Sub
Private Sub CmdMostrar_Click()
Dim OP As Integer
OP = LstTipoForm.ListIndex
Select Case OP
Case 0 : FrmNone.Show vbModal
Case 1 : FrmFixedSingle.Show vbModal
Case 2 : FrmSizable.Show vbModal
Case 3 : FrmFixedDialog.Show vbModal
Case 4 : FrmFixedToolWindow.Show vbModal
Case 5 : FrmSizableToolWindow.Show vbModal
Case Else
MsgBox “Debe seleccionar estilo de formulario”
End Select
End Sub
Pág. 108
Private Sub LstTipoForm_DblClick()
Call CmdMostrar_Click
End Sub
Private Sub CmdSalir_Click()
End
End Sub
Seguidamente proceda a añadir los formularios para las
diferentes opciones del cuadro de lista. Cambie los nombres de
los formularios según se indica:
Formulario Nombre
Form2 FrmNone
Form3 FrmFixedSingle
Form4 FrmSizable
Form5 FrmFixedDialog
Form6 FrmFixedToolWindow
Form7 FrmSizableToolWindow
Luego debe activar el formulario FrmNone, ubicar un botón
de comandos sobre el mismo y establecer las siguientes
propiedades:
Form2
Nombre FrmNone
BorderStyle 0-None
Caption None
Pág. 109
Command1
Nombre CmdVolver
Caption &Volver
Una vez establecidas las propiedades, proceda a ingresar
el código que se muestra a continuación:
Private Sub CmdVolver_Click()
Unload Me
End Sub
Para concluir con el diseño de la aplicación, simplemente
repita el procedimiento anterior para los demás tipos de
formularios.
Como habrá podido observar, al mostrar un formulario
mediante el método Show podemos hacerlo de forma modal
(vbModal) o no modal (opción por defecto). Un formulario modal
es aquel que necesita cerrarse antes de pasar el enfoque a otro
formulario. Un formulario no modal no requiere cerrarse para
pasar el enfoque a otro formulario.
PASANDO VALORES ENTRE FORMULARIOS
Muchas veces se requieren pasar valores de un formulario a
otro, esto se puede realizar mediante el uso módulos estándar,
los cuales son contenedores de procedimientos y declaraciones a
los que tienen acceso otros módulos de la aplicación.
Pág. 110
Como ejemplo vamos a construir la siguiente aplicación, la
cual envía un mensaje de texto del primer formulario hacia el
segundo formulario.
Para el desarrollo de la presente aplicación proceda a
crear un nuevo proyecto y añada un formulario adicional, de tal
forma que tenga los formularios Form1 y Form2. Seguidamente
ubicar los siguientes controles:
Form1 Form2
Text1 TxtMensaje1 Text1 TxtMensaje2
Command1 CmdEnviar Command1 CmdRecibir
Command2 CmdSalir Command2 CmdVolver
A continuación proceda a ingresar el código que se indica
para el primer formulario (Form1):
Pág. 111
Private Sub CmdEnviar_Click()
Mensaje = TxtMensaje1
Form1.Hide
Form2.Show
End Sub
Private Sub CmdSalir_Click()
End
End Sub
Para el segundo formulario (Form2) proceda a ingresar el
código siguiente:
Private Sub CmdRecibir_Click()
TxtMensaje2 = Mensaje
End Sub
Private Sub CmdVolver_Click()
Form2.Hide
Form1.Show
End Sub
Seguidamente debe añadir un módulo estándar al proyecto,
para ello, seleccione el Menú Proyecto y elija la opción
Agregar módulo, se debe presentar un cuadro de diálogo similar
a la figura mostrada, en el cual debe dar click en el botón
“Abrir”.
Pág. 112
Seguidamente proceda a declarar la variable Mensaje como
“pública” en la sección de declaraciones del módulo que acaba
de añadir:
Una variable pública (Public) es una variable que se
declara a nivel de módulo y se le puede acceder desde cualquier
otro módulo.
Pág. 113
FORMULARIOS MDI
Un formulario MDI (Interfaz de Documentos Múltiples) es
una ventana que actúa como fondo de una aplicación y es el
contenedor (ventana padre) de otros formularios (ventanas
hijas).
En una aplicación MDI pueden haber varias ventanas hijas,
pero sólo una ventana padre por aplicación. Para que una
ventana actúe como hija debe tener su propiedad MDIChild
establecida a True.
Como ejemplo vamos a desarrollar una aplicación MDI que
incluya tres ventanas hijas. Para tal fin proceda a crear un
nuevo proyecto y seguidamente agregar dos formularios (simples)
al mismo.
Pág. 114
No olvide establecer la propiedad MDIChild de los
formularios Form1, Form2 y Form3 a True.
Luego, debemos agregar el formulario MDI, para ello
acceder al Menú Proyecto y elegir la opción Agregar formulario
MDI, del cuadro de diálogo que se presenta hacer click en el
botón “Abrir”.
A continuación dar doble click sobre el formulario MDI e
ingresar el siguiente código:
Private Sub MDIForm_Load()
Form1.Show
Form2.Show
Form3.Show
End Sub
Pág. 115
Ahora sólo tiene que indicarle a Visual Basic que el
formulario de arranque (inicial) será el formulario MDI. Para
ello vaya al Menú Proyecto y elija la opción Propiedades de
Proyecto. En el cuadro combinado “Objeto inicial” seleccionar
MDIForm1, tal como se indica en la figura:
Eso es todo, ahora simplemente tiene que ejecutar su
aplicación.
Cabe destacar que en los formularios MDI por lo general no
se pueden incluir controles, debido a ello se suele trabajar
con menús de opciones o barras de herramientas para indicar
alguna acción a realizar.
Pág. 116
CREACIÓN DE MENÚS
Un menú es un conjunto de opciones que se presentan al
usuario, entre las cuales debe elegir una de ellas. Dependiendo
de la decisión se realizarán una serie de acciones.
Para diseñar un menú cualquiera dar click derecho sobre el
formulario y del menú emergente que se presenta elegir la
opción Editor de menús.
Pág. 117
En seguida se ha de presentar el Editor de menús de Visual
Basic.
Para crear un menú, tener en cuenta los siguiente
procedimientos:
• Ingresar el Editor de menús.
• Introducir el título del menú en el cuadro de texto Caption,
el cual aparecerá en la barra de menús.
• Introducir un nombre para el menú en el cuadro de texto Name,
el cual será utilizado en el código para referirse al menú.
• Introducir los elementos que componen el menú, para ello
escriba en los cuadros de texto Caption y Name el título y el
nombre del correspondiente elemento del menú.
Pág. 118
• Para diferenciar un elemento del menú del propio menú, hay
que sangrar el título del elemento, para tal fin,
selecciónelo y haga click en el botón flecha hacia la derecha
( ).
• Un elemento de menú puede ser una orden (si el elemento
siguiente aparece sangrado al mismo nivel) o un submenú (si
el elemento siguiente aparece sangrado un nivel más).
• Utilizando separadores puede agrupar las órdenes en función
de lo que realizan. Para insertar un separador, escriba un
único guión (-) en el cuadro Caption del Editor de menús.
Tiene que especificar también un nombre para el separador.
• Para añadir un acelerador (una tecla o combinación de teclas
que permiten activar un menú), utilizar la propiedad
Shortcut.
• La propiedad Checked es útil para indicar si una orden está
activa o no lo está. Cuando se especifica esta propiedad
aparece una marca (3) a la izquierda del elemento de menú.
• La propiedad Enabled es útil para desactivar una orden en un
momento en el cual no tiene sentido que esté activa.
• La propiedad Visible es útil cuando durante la ejecución se
desea ocultar un elemento de menú.
• Cerrar el Editor de menús, para ello una vez que haya
finalizado su diseño pulse el botón “Aceptar”.
Pág. 119
Como ejercicio intente construir el menú mostrado en la
figura anterior.
Caption Name ShortCut
&Archivo MnuArchivo Ninguno
. . . &Artículo MnuArchivoArticulo Ninguno
. . . &Cliente MnuArchivoCliente Ninguno
. . . &Vendedor MnuArchivoVendedor Ninguno
. . . - MnuArchivoLinea Ninguno
. . . &Salir MnuArchivoSalir Ctrl + X
&Proceso MnuProceso Ninguno
. . . &Pedido MnuProcesoPedido Ninguno
. . . &Facturación MnuProcesoFacturacion Ninguno
&Reporte MnuReporte Ninguno
. . . &Registro de ventas MnuReporteRegVentas Ninguno
. . . Catálogo de &artículos Ninguno
. . . - MnuReporteLinea Ninguno
. . . &Cliente del mes MnuReporteClienteMes Ninguno
. . . &Vendedor del mes MnuReporteVendMes Ninguno
Ay&uda MnuAyuda Ninguno
. . . &Contenido MnuAyudaContenido Ninguno
. . . &Indice MnuAyudaIndice Ninguno
. . . &Búsqueda MnuAyudaBusqueda Ninguno
. . . - MnuAyudaLinea Ninguno
. . . &Acerca de MnuAyudaAbout Ninguno
Pág. 120
Para probar el menú que acaba de crear, ingrese el
siguiente código:
Private Sub MnuArchivoArticulo_Click()
MsgBox “Seleccionó la opción Artículo”
End Sub
Private Sub MnuArchivoCliente_Click()
MsgBox “Seleccionó la opción Cliente”
End Sub
Private Sub MnuArchivoVendedor_Click()
MsgBox “Seleccionó la opción Vendedor”
End Sub
Private Sub MnuArchivoSalir_Click()
Unload Me
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
Dim RESP As Integer
RESP = MsgBox(“¿Desea terminar la aplicación?”, _
vbQuestion + vbYesNo, “Pregunta”)
If RESP = vbYes Then
End
Else: Cancel = True
End If
End Sub
Pág. 121
Luego al ejecutar su aplicación y seleccionar el menú
Archivo, opción Artículo, el resultado será similar a la figura
mostrada:
Hasta ahora hemos programado la salida de una aplicación,
asociando el código al botón “Salir”. Sin embargo, cuando el
usuario hace click en el botón “Cerrar” de la barra de título o
en la opción “Salir” del Menú de control del formulario, el
código escrito para el botón “Salir” es ignorado.
Para remediar esta situación, en el ejemplo anterior
cuando el usuario pulsa el botón “Salir”, se invoca al evento
Unload. La palabra reservada “Me” proporciona una forma de
referirse al formulario desde donde se está ejecutando el
código.
Recordar que el evento Unload del formulario se
desencadena cuando el usuario intenta cerrar el formulario
mediante cualquiera de las formas descritas anteriormente.
Para determinar si ocurre la descarga del formulario
utilice el parámetro Cancel. Si Cancel es False ocurre la
descarga, si Cancel es True impide que el formulario se quite.
CREACIÓN DE UNA BARRA DE HERRAMIENTAS
Pág. 122
Una barra de herramientas contiene botones con las
opciones más utilizadas de un menú, de tal manera que el
usuario haciendo click en dicho control activaría la opción
indicada de una manera más rápida.
Para crear una barra de herramientas debemos utilizar dos
controles que no están en la lista de controles estándar, por
tanto debemos agregar dichos controles que se encuentran en el
componente Microsoft Windows Common Controls 6.0, tal como se
indica a continuación:
Pág. 123
Como ejemplo, vamos a crear la barra de herramientas de la
figura mostrada:
Para ello, ubicar un control ImageList sobre el
formulario, para establecer sus propiedades dar click derecho
sobre el control y elija la opción Propiedades.
Pág. 124
Se ha de presentar un cuadro de diálogo similar a la
figura mostrada:
Activar la ficha Imágenes y pulsar el botón “Insertar
imagen” para seleccionar las imágenes que se incluirán en el
control ImageList.
Para el ejemplo, debe incluir ocho imágenes que
corresponden a cada uno de los botones de la barra de
herramientas.
Concluido el proceso anterior, proceda a ubicar un control
Toolbar sobre el formulario. Luego hacer click derecho sobre
dicho control y del menú emergente que se presenta seleccionar
la opción Propiedades. Del cuadro de diálogo que se presenta en
la ficha General establecer las siguientes propiedades:
Pág. 125
Luego, en la ficha Botones pulse el botón “Insertar
botón”. En el cuadro de texto Image se debe indicar un número
que corresponde al orden de imagen a mostrar.
Pág. 126
El lector debe continuar con este proceso hasta completar
los botones restantes, según:
Index ToolTipText Image
1 Artículo 1
2 Cliente 2
3 Vendedor 3
4 Pedido 4
5 Facturación 5
6 Registro de ventas 6
7 Catálogo de artículos 7
8 Ayuda 8
Como el código a ejecutar tiene que ser el mismo cuando el
usuario elija una opción del menú o de un click sobre un botón
de la barra de herramientas se pueden programar procedimientos
de usuario que realicen dichas tareas, luego se deben invocar a
estos procedimientos tanto para las opciones del menú como para
la barra de herramientas.
Sin embargo, para el ejemplo el código es muy sencillo, ya
que sólo muestra un mensaje con la opción seleccionada (esto
por razones de simplicidad). Para probar la funcionalidad de la
barra de herramientas que acaba de crear ingrese el siguiente
código:
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Pág. 127
Select Case Button.Index
Case 1: MsgBox “Seleccionó la opción Artículo”
Case 2: MsgBox “Seleccionó la opción Cliente”
Case 3: MsgBox “Seleccionó la opción Vendedor”
Case 4: MsgBox “Seleccionó la opción Pedido”
Case 5: MsgBox “Seleccionó la opción Facturación”
Case 6: MsgBox “Seleccionó la opción Registro de ventas”
Case 7: MsgBox “Seleccionó opción Catálogo de artículos”
Case 8: MsgBox “Seleccionó la opción Ayuda”
End Select
End Sub
El evento ButtonClick se dispara cuando el usuario hace
click sobre un botón de la barra de herramientas. La propiedad
Index permite identificar el número de botón pulsado.
CREACIÓN DE UNA BARRA DE ESTADO
Una barra de estado es un marco que se ubica en la parte
inferior del formulario y puede contener varios paneles que
informan al usuario acerca del estado de la aplicación. Para
crear una barra de estado utilizar el control StatusBar, el
cual forma de los controles personalizados que se encuentran en
el componente Microsoft Windows Common Controls 6.0.
Como ejemplo vamos a crear una barra de estado similar a
la de la figura mostrada:
Pág. 128
Para ello ubicar un control StatusBar sobre el formulario,
dar click derecho sobre el mismo y en la ficha Paneles incluir
una imagen para la hora del sistema.
Pág. 129
El resto de propiedades se establecerán mediante código al
momento de la carga del formulario.
Private Sub MDIForm_Load()
Dim I As Integer
For I = 1 To 2
StatusBar1.Panels.Add ' Se agregan 2 paneles más
Next
With StatusBar1.Panels
.Item(1).Style = sbrTime
.Item(2).Style = sbrCaps
.Item(3).Style = sbrIns
End With
End Sub
La propiedad Style permite mostrar el estado de las
teclas, la hora y la fecha del sistema con un mínimo de código.
Constante Valor Descripción
sbrText 0 (Predeterminado). Texto o mapa de bits.
sbrCaps 1 Tecla BLOQ MAYÚS.
sbrNum 2 Tecla BLOQ NÚM.
sbrIns 3 Tecla INS.
sbrScrl 4 Tecla BLOQ DESPL.
sbrTime 5 Muestra la hora actual con el formato del
sistema.
sbrDate 6 Muestra la fecha actual con el formato
del sistema.
Pág. 130
CREACIÓN DE UN MENÚ CONTEXTUAL
Un menú contextual es un menú emergente (flotante) que se
muestra sobre un formulario, independiente de la barra de
menús. Para mostrar un menú contextual el usuario debe pulsar
el botón derecho del ratón sobre el formulario.
A menudo querrá usar un menú contextual para tener acceso
a opciones que no se encuentran disponibles en la barra de
menús. Para crear un menú que no se presente en la barra de
menús, haga invisible un elemento de menú de nivel superior en
tiempo de diseño (asegúrese de que la casilla de verificación
Visible del Editor de menús no esté activada). Cuando Visual
Basic presenta un menú emergente, pasa por alto la propiedad
Visible del menú de nivel superior especificado.
Pág. 131
Para crear el menú contextual de la figura, debe ingresar
al Editor de menús y añadir lo siguiente:
Caption Name Visible
&Herramientas MnuTools
. . . Calculadora MnuToolsCalc 3
. . . Calendario MnuToolsCalen 3
. . . Solitario MnuToolsSol 3
Seguidamente proceda a ingresar el código que se indica a
continuación:
Private Sub MDIForm_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then
PopupMenu MnuTools
End If
End Sub
Private Sub MnuToolsCalc_Click()
Dim I
I = Shell(“C:WINDOWSCALC.EXE”, 1)
End Sub
Private Sub MnuToolsCalen_Click()
FrmCalendario.Show
Pág. 132
End Sub
Private Sub MnuToolsSol_Click()
Dim I
I = Shell(“C:WINDOWSSOL.EXE”, 1)
End Sub
En el ejemplo anterior se asume que existe otro formulario
de nombre FrmCalendario. Este puede ser construido usando el
control MonthView.
La función Shell ejecuta un programa ejecutable y devuelve
un tipo Variant (Double) que representa la identificación de la
tarea del programa si se ha ejecutado con éxito, en caso
contrario devuelve cero.
Pág. 133
CAPÍTULO 6
CONTROLES ACTIVEX
Los controles ActiveX son objetos que no forman parte del
conjunto de controles estándar de Visual Basic, sino más bien
han sido desarrollados por terceras personas.
Los controles ActiveX existen como archivos independientes
con extensión .OCX y deben ser cargados antes de utilizarse.
Para ello ingresar al Menú Proyecto y elija la opción
Componentes.
Pág. 134
CONTROL ANIMATION
El control Animation permite reproducir archivos de
extensión .AVI que no tengan sonido para crear animaciones.
Para agregar este control debe seleccionar el componente
Microsoft Windows Common Controls-2 6.0.
Propiedad Descripción
AutoPlay Especifica si el archivo AVI se reproducirá
automáticamente al cargarse el control.
Método Descripción
Close Cierra el archivo AVI abierto actualmente.
Open Permite abrir el archivo AVI.
Play Reproduce el archivo AVI en el control
Animation.
Stop Termina la reproducción del archivo AVI.
Como ejemplo vamos a desarrollar un formulario que permita
reproducir un archivo AVI, tal como se muestra en la figura:
Pág. 135
Para ello crear un nuevo formulario y agregar un control
Animation (Animation1) y dos botones de comando (CmdIniciar y
CmdTerminar, respectivamente). Luego ingrese el código que se
muestra:
Private Sub CmdIniciar_Click()
Dim RUTA As String
RUTA = “C:Archivos de programaMicrosoft Visual Studio”
RUTA = RUTA & “CommonGraphicsVideosFilenuke.avi”
Animation1.Open (RUTA)
Animation1.Play
End Sub
Private Sub CmdTerminar_Click()
Animation1.Close
End
End Sub
CONTROL COMMONDIALOG
El control CommonDialog proporciona un conjunto de cuadros
de diálogo estándar que permiten realizar las operaciones más
comúnmente empleadas en el diseño de aplicaciones, como abrir y
guardar archivos, seleccionar colores y fuentes, imprimir, etc.
Para agregar este control seleccionar el componente Microsoft
Common Dialog Control 6.0.
Pág. 136
Propiedad Descripción
Color Especifica el color seleccionado.
FileName Especifica la ruta y nombre del archivo
seleccionado.
Filter Especifica el tipo de archivos que se han de
mostrar en un cuadro de diálogo Abrir o
Guardar como.
FilterIndex Especifica el filtro predeterminado para un
cuadro de diálogo Abrir o Guardar como, en
caso se esté utilizando varios filtros.
Método Descripción
ShowColor Presenta la paleta de colores.
ShowFont Presenta el cuadro de diálogo Fuentes.
ShowHelp Presenta la ayuda de Windows.
ShowOpen Presenta el cuadro de diálogo Abrir.
ShowPrinter Presenta el cuadro de diálogo Imprimir.
ShowSave Presenta el cuadro de diálogo Guardar como.
Como ejemplo vamos a desarrollar una aplicación que
permite cambiar el color de fondo de un formulario en tiempo de
ejecución. Para ello el usuario debe dar click en el botón
“Cambiar color” y en seguida se presentará la paleta de colores
de donde debe elegir el color deseado, tal como se muestra en
la figura siguiente:
Pág. 137
Para ello crear un nuevo formulario, agregarle un botón de
comando (CmdCambiarColor) y un control CommonDialog. Luego
ingresar el siguiente código:
Private Sub CmdCambiarColor_Click()
CommonDialog1.ShowColor
Form1.BackColor = CommonDialog1.Color
End Sub
Como siguiente ejemplo vamos a desarrollar una aplicación
que permita mostrar el contenido de un archivo JPG. Este deberá
ser seleccionado por el usuario de un cuadro de diálogo Abrir,
tal como se indica en la figura:
Pág. 138
Al hacer click en el botón “Abrir”, el archivo
seleccionado debe ser mostrado en el formulario:
Para el diseño de esta aplicación crear un nuevo
formulario y ubicar un botón de comando (CmdAbrirArchivo), un
control imagen y un control CommonDialog.
Pág. 139
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g

Weitere ähnliche Inhalte

Was ist angesagt? (18)

Roxana
RoxanaRoxana
Roxana
 
manual visual_studio_2010_
manual visual_studio_2010_manual visual_studio_2010_
manual visual_studio_2010_
 
Santiago jeres barra de menu
Santiago jeres barra de menuSantiago jeres barra de menu
Santiago jeres barra de menu
 
Fundamentos de visual basic
Fundamentos de visual basicFundamentos de visual basic
Fundamentos de visual basic
 
VERUSKA SALA
VERUSKA SALAVERUSKA SALA
VERUSKA SALA
 
Fundamentos basicos de visual basic
Fundamentos basicos de visual basicFundamentos basicos de visual basic
Fundamentos basicos de visual basic
 
Visual basic.docx
Visual basic.docxVisual basic.docx
Visual basic.docx
 
Trabajo de fundamentos de visual basic
Trabajo de fundamentos de visual basicTrabajo de fundamentos de visual basic
Trabajo de fundamentos de visual basic
 
Visual Basic 6.0
Visual Basic 6.0Visual Basic 6.0
Visual Basic 6.0
 
tutorial de eclipse
tutorial de eclipsetutorial de eclipse
tutorial de eclipse
 
Jueves
JuevesJueves
Jueves
 
Generalidades de visual basic 8
Generalidades de visual basic 8Generalidades de visual basic 8
Generalidades de visual basic 8
 
Visualbasic6.0
Visualbasic6.0Visualbasic6.0
Visualbasic6.0
 
Visual studio 2010
Visual studio 2010Visual studio 2010
Visual studio 2010
 
Generalidades de Visual Basic
Generalidades de Visual BasicGeneralidades de Visual Basic
Generalidades de Visual Basic
 
Manual visual basic 6.0
Manual visual basic 6.0Manual visual basic 6.0
Manual visual basic 6.0
 
Modulo Visual Basic 6.0
Modulo Visual Basic 6.0Modulo Visual Basic 6.0
Modulo Visual Basic 6.0
 
Tutorial de visual basic
Tutorial de visual basicTutorial de visual basic
Tutorial de visual basic
 

Ähnlich wie Visual basic 0.6 rivera & g

Visual basic Anyi Funez
Visual basic Anyi FunezVisual basic Anyi Funez
Visual basic Anyi FunezAnyiFunez
 
Trabajo
TrabajoTrabajo
Trabajoqwz123
 
Fundamentos vb
Fundamentos vbFundamentos vb
Fundamentos vbvalerin01
 
Capítulo 9 qbasic introducción a la poo
Capítulo 9 qbasic  introducción a la pooCapítulo 9 qbasic  introducción a la poo
Capítulo 9 qbasic introducción a la pooJulio Ayala Rolón
 
aplica los fundamentos de programación web
aplica los fundamentos de programación web aplica los fundamentos de programación web
aplica los fundamentos de programación web karlafabiola123456
 
xdoc.mx-guia-de-estudio-.pdf
xdoc.mx-guia-de-estudio-.pdfxdoc.mx-guia-de-estudio-.pdf
xdoc.mx-guia-de-estudio-.pdfLUISRIVAS170665
 
xdoc.mx-guia-de-estudio-microsoft-visual-basic-60 - copia (2).pdf
xdoc.mx-guia-de-estudio-microsoft-visual-basic-60 - copia (2).pdfxdoc.mx-guia-de-estudio-microsoft-visual-basic-60 - copia (2).pdf
xdoc.mx-guia-de-estudio-microsoft-visual-basic-60 - copia (2).pdfLUISRIVAS170665
 
estudio-microsoft-visual-basic-.pdf
estudio-microsoft-visual-basic-.pdfestudio-microsoft-visual-basic-.pdf
estudio-microsoft-visual-basic-.pdfLUISRIVAS170665
 
Fernando Espinoza
Fernando EspinozaFernando Espinoza
Fernando EspinozaMarvel ico
 
Fundamentos de visual basico por vicente sanchez
Fundamentos de visual basico por vicente sanchezFundamentos de visual basico por vicente sanchez
Fundamentos de visual basico por vicente sanchezJairo Bermudez
 

Ähnlich wie Visual basic 0.6 rivera & g (20)

Visual basic Anyi Funez
Visual basic Anyi FunezVisual basic Anyi Funez
Visual basic Anyi Funez
 
Generalidades de visual basic 8
Generalidades de visual basic 8Generalidades de visual basic 8
Generalidades de visual basic 8
 
Trabajo
TrabajoTrabajo
Trabajo
 
Fundamentos vb
Fundamentos vbFundamentos vb
Fundamentos vb
 
Guia 0 vb induccion
Guia 0 vb    induccionGuia 0 vb    induccion
Guia 0 vb induccion
 
Visual basic.docx
Visual basic.docxVisual basic.docx
Visual basic.docx
 
Visual basic.docx
Visual basic.docxVisual basic.docx
Visual basic.docx
 
Capítulo 9 qbasic introducción a la poo
Capítulo 9 qbasic  introducción a la pooCapítulo 9 qbasic  introducción a la poo
Capítulo 9 qbasic introducción a la poo
 
aplica los fundamentos de programación web
aplica los fundamentos de programación web aplica los fundamentos de programación web
aplica los fundamentos de programación web
 
Apuntes vb6
Apuntes vb6Apuntes vb6
Apuntes vb6
 
xdoc.mx-guia-de-estudio-.pdf
xdoc.mx-guia-de-estudio-.pdfxdoc.mx-guia-de-estudio-.pdf
xdoc.mx-guia-de-estudio-.pdf
 
microsoft-.pdf
microsoft-.pdfmicrosoft-.pdf
microsoft-.pdf
 
xdoc.mx-guia-de-estudio-microsoft-visual-basic-60 - copia (2).pdf
xdoc.mx-guia-de-estudio-microsoft-visual-basic-60 - copia (2).pdfxdoc.mx-guia-de-estudio-microsoft-visual-basic-60 - copia (2).pdf
xdoc.mx-guia-de-estudio-microsoft-visual-basic-60 - copia (2).pdf
 
estudio-microsoft-visual-basic-.pdf
estudio-microsoft-visual-basic-.pdfestudio-microsoft-visual-basic-.pdf
estudio-microsoft-visual-basic-.pdf
 
microsoft-2000.pdf
microsoft-2000.pdfmicrosoft-2000.pdf
microsoft-2000.pdf
 
-guia-de-estudio.pdf
-guia-de-estudio.pdf-guia-de-estudio.pdf
-guia-de-estudio.pdf
 
Fernando Espinoza
Fernando EspinozaFernando Espinoza
Fernando Espinoza
 
Visual Basic
Visual BasicVisual Basic
Visual Basic
 
Fundamentos de visual basico por vicente sanchez
Fundamentos de visual basico por vicente sanchezFundamentos de visual basico por vicente sanchez
Fundamentos de visual basico por vicente sanchez
 
slideshare
slideshareslideshare
slideshare
 

Kürzlich hochgeladen

LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxMartín Ramírez
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfromanmillans
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxJUANSIMONPACHIN
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORGonella
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 

Kürzlich hochgeladen (20)

LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Estrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdfEstrategia de Enseñanza y Aprendizaje.pdf
Estrategia de Enseñanza y Aprendizaje.pdf
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docxPLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
PLANIFICACION ANUAL 2024 - INICIAL UNIDOCENTE.docx
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIOR
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 

Visual basic 0.6 rivera & g

  • 1. CAPÍTULO 1 FUNDAMENTOS Microsoft Visual Basic es un conjunto de herramientas que posibilitan el desarrollo de aplicaciones para Windows de una manera rápida y sencilla, basado en el lenguaje BASIC y en la programación orientada a objetos. La palabra “Visual” hace referencia al método que se utiliza para crear la interfaz gráfica de usuario. En lugar de escribir numerosas líneas de código para implementar la interfaz, simplemente se utiliza el ratón para agregar objetos prefabricados en el lugar deseado dentro de la pantalla. La palabra “Basic” hace referencia al lenguaje BASIC (Beginners All-Purpose Symbolic Instruction Code), un lenguaje utilizado por más programadores que ningún otro lenguaje en la historia de la informática. Visual Basic ha evolucionado a partir del lenguaje BASIC original y ahora contiene centenares de instrucciones, funciones y palabras clave, muchas de las cuales están directamente relacionadas con la interfaz gráfica de Windows. El lenguaje de programación Visual Basic no es exclusivo de Microsoft Visual Basic. Este lenguaje es utilizado también por Microsoft Excel, Microsoft Access y muchas otras Pág. 1
  • 2. aplicaciones Windows. El lenguaje de programación Visual Basic Script para programar en Internet es un subconjunto del lenguaje Visual Basic. De tal forma, que la inversión realizada en el aprendizaje de Visual Basic le ayudará a abarcar estas otras áreas. EJECUTANDO VISUAL BASIC Si ya tiene instalado Visual Basic, para ejecutarlo proceda igual que con cualquier otra aplicación Windows: hacer click en el icono correspondiente. En seguida se presentará una ventana similar a la figura siguiente: Pág. 2
  • 3. En la ventana anterior indicar el tipo de proyecto que desea crear (para nuestro caso seleccionar EXE estándar) y dar click sobre el botón “Abrir”. En ese instante se presentará el Entorno Integrado de Desarrollo (IDE) de Visual Basic: Los elementos que componen el IDE de Visual Basic son: • Barra de menús • Barra de herramientas • Cuadro de herramientas • Diseñador de formularios • Explorador de proyectos • Ventana de propiedades • Posición del formulario • Menús contextuales Barra de menús Pág. 3
  • 4. Presenta las órdenes que se utilizan para desarrollar una aplicación. Las opciones más utilizadas son: Archivo, Edición, Ver, Ventana y Ayuda. Se proporcionan otros menús para tener acceso a funciones específicas de programación como Proyecto, Formato o Depuración. Barra de herramientas Facilita el acceso rápido a las órdenes más comúnmente utilizadas. Omitimos el significado de cada botón porque le será mostrado al pasar el puntero del ratón sobre cada uno de ellos. Puede visualizar otras barras de herramientas ejecutando la opción Barra de herramientas del Menú Ver. Cuadro de herramientas Proporciona un conjunto de herramientas que permiten diseñar la interfaz gráfica de usuario. Pág. 4
  • 5. Icono Descripción Puntero Cuadro de imagen Etiqueta Cuadro de texto Marco Botón de comando Casilla de verificación Botón de opción Cuadro combinado Cuadro de lista Barra de desplazamiento horizontal Barra de desplazamiento vertical Cronómetro Cuadro de lista de unidades Cuadro de lista de directorios Cuadro de lista de archivos Formas Líneas Imagen Contenedor OLE Pág. 5
  • 6. Para utilizar algún objeto simplemente debe hacer doble click sobre el icono correspondiente, luego puede cambiar su posición y sus dimensiones. Diseñador de formularios Es la ventana sobre la que colocaremos los objetos (controles) de la interfaz de usuario. Explorador de proyectos Contiene el conjunto de archivos que constituyen la aplicación o proyecto. Pág. 6
  • 7. Ventana de propiedades Como veremos más adelante, cada objeto lleva asociado un conjunto de propiedades. Para ver o especificar los valores de las propiedades de los objetos, utilizaremos la ventana de propiedades. Posición del formulario Esta ventana le permite especificar la posición de los formularios de la aplicación. Menús contextuales Pág. 7
  • 8. Es un menú emergente que presenta órdenes específicas relativas a un determinado objeto. Para abrir un menú contextual, dar click derecho sobre el objeto. Por ejemplo, al dar click derecho sobre el formulario se presenta el siguiente menú contextual. Ventana de código Se presenta cuando se hace doble click sobre un objeto que se encuentra en el Diseñador de formularios. Esta ventana muestra dos cuadros combinados (combos) en la parte superior, en una aparece el nombre del objeto (izquierda) y en la otra el nombre del evento (derecha). Pág. 8
  • 9. MI PRIMERA APLICACIÓN Hay tres pasos principales para crear una aplicación en Visual Basic: • Crear la interfaz. • Establecer propiedades. • Escribir el código. Para ver como se realiza esto, siga los pasos del siguiente ejemplo para crear una aplicación sencilla que consiste en un formulario y un botón de comando. Cuando haga click en el botón de comando aparecerá el mensaje “Visual Basic es fácil” en un cuadro de diálogo predefinido. Creación de la interfaz Para el desarrollo del presente ejemplo proceda a crear una nueva aplicación. En seguida añadir un botón de comando al formulario, para ello en el Cuadro de herramientas, dar doble click sobre el control deseado, tal como se indica en la figura siguiente: Pág. 9
  • 10. La apariencia de la interfaz debe ser similar a la figura mostrada: Estableciendo las propiedades Para ver las propiedades de un objeto, simplemente debe seleccionarlo y pulsar la tecla F4. Por ejemplo la figura siguiente muestra las propiedades del botón de comando y podemos ver que la propiedad Caption tiene el valor “Command1”. Pág. 10
  • 11. Puede cambiar el valor de cualquier propiedad seleccionándolo de la ventana anterior y simplemente modificando su valor, por ejemplo para el caso anterior establezca el valor de la propiedad Caption de “Command1” a “Haga click aquí”. De manera similar proceda cambiar la propiedad Caption del formulario a “Mi primera aplicación”. La apariencia de la interfaz debe ser similar a la figura mostrada: Pág. 11
  • 12. Escribiendo el código Para ingresar el código a la aplicación debe dar doble click sobre el control al cual asociaremos dicho código. Para nuestro caso dar doble click sobre el botón de comando e ingresar el código que se indica a continuación: Para guardar la aplicación que acaba de crear, seleccione la opción Guardar Proyecto del Menú Archivo. Bueno, ahora sólo falta que ejecute su aplicación. Para ello simplemente debe pulsar la tecla F5. El resultado debe ser similar al siguiente: Pág. 12
  • 13. CAPÍTULO 2 LOS OBJETOS Visual Basic se basa en la programación orientada a objetos (POO), la cual es una forma de programación que utiliza objetos (similares a los objetos del mundo real) para la solución de problemas. La POO permite descomponer un problema en bloques relacionados. Cada bloque pasa a ser un objeto autocontenido que contiene sus propios datos e instrucciones. De esta manera, la complejidad se reduce y se pueden realizar programas más largos de una manera sencilla. MECANISMOS BÁSICOS DE LA POO Los mecanismos básicos de la programación orientada a objetos son: • Objetos • Propiedades • Métodos • Eventos • Mensajes • Clases Pág. 13
  • 14. Objetos Un objeto es una entidad que tiene atributos particulares (propiedades) y unas formas de operar sobre ellos (métodos). Por tanto, un objeto contiene variables que especifican su estado y operaciones que definen su comportamiento. Son ejemplos de objetos: formularios, botones de comando, cuadros de texto, etiquetas, etc. Propiedades Las propiedades representan las características del objeto. Hay propiedades particulares, como Caption que la poseen los botones de comando por ejemplo, y genéricas como Name que la poseen todos lo objetos. Métodos Los métodos son procedimientos asociados a un objeto. Se ejecutan como respuesta a un evento, por ejemplo al dar click en un botón de comando. También pueden ser invocados explícitamente en el programa. Eventos Un evento es la capacidad de un objeto de reaccionar cuando ocurre una determinada acción (acción y reacción). Como respuesta a un evento se envía un mensaje y se ejecuta un determinado método (procedimiento). Pág. 14
  • 15. Mensajes Un mensaje es una llamada a un método (procedimiento), de tal forma que cuando un objeto recibe un mensaje la respuesta a ese mensaje es ejecutar el procedimiento asociado. Cuando se ejecuta un programa orientado a objetos, los objetos están constantemente recibiendo, interpretando y respondiendo a mensajes de otros objetos. Clases Una clase es una descripción para producir objetos de esa clase o tipo. Es decir se trata de una generalización de un tipo específico de objetos. En otras palabras, un objeto es una variable del tipo definido por una clase. Por ejemplo, piense en un molde para hacer pasteles, el molde es la clase y los pasteles los objetos. CARACTERÍSTICAS DE LA POO Las características fundamentales de la programación orientada a objetos son: • Abstracción • Encapsulamiento • Herencia • Polimorfismo Pág. 15
  • 16. Abstracción La abstracción permite no detenernos en los detalles concretos del funcionamiento de las cosas, sino centrarnos en los aspectos que realmente nos importan y nos son útiles en un determinado momento, en cierta medida, se podría decir que es “úsese el objeto y olvídese de como funciona en forma interna”. Por ejemplo, para manejar una computadora no necesitamos saber como funcionan sus circuitos electrónicos, en términos de corriente, tensión, etc. Encapsulamiento Esta característica permite ver un objeto como una “caja negra” autocontenida en la que se ha metido de alguna manera toda la información que maneja dicho objeto. Esto permite manipular los objetos como unidades básicas, permaneciendo oculta su estructura interna. Herencia La herencia es la característica que permite compartir automáticamente propiedades y métodos entre objetos. Es decir, se pueden crear nuevas clases de objetos en base a clases existentes. Más concreto, un objeto puede heredar un conjunto general de propiedades y métodos a las que puede añadir Pág. 16
  • 17. aquellas características que son específicas suyas. El usuario de Visual Basic no dispone de esta característica. Polimorfismo Polimorfismo, del griego cuyo significado es “muchas formas”, es la característica que permite implementar múltiples formas de un mismo método, dependiendo cada una de ellas de la clase sobre la que se realiza la implementación. Esto hace posible que se puede acceder a una variedad de métodos distintos (todos con el mismo nombre) utilizando exactamente el mismo medio de acceso. LOS OBJETOS DE VISUAL BASIC Visual Basic soporta la abstracción, la encapsulación, el polimorfismo y la reutilización de código. La reutilización de código es la capacidad de trasladar características de un objeto a otro, lo que se logra con alguna forma de herencia. Esto se consigue mediante la creación y uso del objeto. Los objetos de Visual Basic están divididos en dos tipos: controles y contenedores. Los controles son un medio gráfico que permiten a los usuarios interactuar con la aplicación para la manipulación de datos y ejecución de tareas. Son ejemplo de controles: etiquetas, cuadros de texto, botones de comando, casillas de Pág. 17
  • 18. verificación, botones de opción, cuadros de lista, cuadros combinados, etc. Los contenedores son objetos que pueden incluir otros objetos y permiten el acceso a los objetos que contienen. Entre los más utilizados tenemos a los formularios, marcos y cuadrículas. El formulario más los controles constituyen la interfaz de la aplicación. REFERENCIANDO OBJETOS La sintaxis para referenciar objetos es la siguiente: OBJETO.PROPIEDAD = VALOR Por ejemplo, para establecer el título de un formulario a “Visual Basic es fácil”, la orden sería: Form1.Caption = “Visual Basic es fácil” LOS EVENTOS Cada objeto responde a un conjunto de eventos. Como respuesta a un evento se ejecuta un determinado procedimiento. Los procedimientos asociados a un evento presentan la forma: Private Sub OBJETO_EVENTO() SENTENCIAS End Sub Pág. 18
  • 19. Para aclarar este concepto desarrollaremos la siguiente aplicación, la cual consiste en un formulario, un cuadro de texto y un botón de comando. El usuario debe ingresar un mensaje en el cuadro de texto y al pulsar el botón de comando, el mensaje recientemente ingresado, se coloca como título del formulario. Para ello proceda a construir la interfaz mostrada en la figura anterior. Luego, dar doble click sobre el botón de comando e ingrese el siguiente código: Private Sub Command1_Click() Form1.Caption = Text1.Text End Sub Seguidamente guarde y proceda ejecutar su aplicación. Como puede verificar, el evento Click se dispara cada vez que el usuario pulsa (hace click) sobre un control. CONVENCIÓN DE NOMBRES PARA LOS OBJETOS Pág. 19
  • 20. La convención a seguir en la presente guía - para dar nombre a los objetos - consiste en utilizar ciertos prefijos, los cuales indicaran el tipo de objeto del que se trata. Prefijo Objeto Frm Formulario Fra Marco Lbl Etiqueta Txt Cuadro de texto Cmd Botón de comando Chk Casilla de verificación Opt Botón de opción Lst Cuadro de lista Cbo Cuadro combinado Tim Cronómetro HS Barra de desplazamiento horizontal VS Barra de desplazamiento vertical Pic Cuadro de imagen Img Imagen Drv Cuadro de lista de unidades Dir Cuadro de lista de directorios Fil Cuadro de lista de archivos Ole Contenedor OLE Grd Cuadrícula Pág. 20
  • 21. Gra Gráfico Ctr Control (se utiliza en procedimientos cuando el tipo de control es desconocido) CAPÍTULO 3 EL LENGUAJE Visual Basic es un lenguaje de programación basado en el lenguaje BASIC, al cual incorpora la funcionalidad de la programación orientada a objetos. El código de Visual Basic se almacena en módulos, donde cada módulo está subdividido en distintas secciones, una para cada objeto del módulo. Cada sección de código puede contener uno o más procedimientos, formados por declaraciones de constantes y variables, expresiones, sentencias de control y llamadas a procedimientos y/o funciones. En este capítulo vamos a analizar los diferentes elementos que intervienen al momento de realizar el código para una aplicación. TIPOS DE DATOS Pág. 21 Los datos con los que trabajaremos probablemente incluyan información relacionada con números, dinero, nombres,
  • 22. descripciones, fechas, etc. Cada dato corresponde a un determinado tipo, es decir, pertenece a una categoría de datos que se manipulan de maneras similares. Tipo Descripción Rango Integer Entero (2 bytes) -32768 a 32767 Long Entero largo (4 bytes) -2147483648 a 2147483647 Single Punto flotante de simple precisión (4 bytes) -3.40E+38 a 3.40E+38 Double Punto flotante de doble precisión (8 bytes) -1.79D+308 a 1.79D+308 Currency Monetario (8 bytes) +/- 922337203685477.5807 Byte Carácter (1 byte) 0 a 255 String Cadena de caracteres (1 byte por carácter) Aproximadamente hasta 64K (65400 caracteres) Boolean Lógico (2 bytes) True o False Date Fecha/Hora (8 bytes) 01/ENERO/100 a 31/DICIEMBRE/9999 Variant (por omisión) Cualquier tipo de dato Con números hasta el intervalo de un tipo Double. Con caracteres 22 Pág. 22
  • 23. bytes + 1 byte por carácter IDENTIFICADORES Los identificadores son nombres dados a los elementos de una aplicación, tales como constantes, variables, procedimientos, funciones, objetos, etc. Un identificador es una secuencia de caracteres que puede ser de hasta 255 caracteres. Para la construcción de identificadores debemos tener presente las siguientes reglas: • Deben comenzar con una letra y no puede contener espacios en blanco. • Letras, dígitos y caracteres subrayados están permitidos después del primer carácter. • No se puede utilizar una palabra reservada como identificador. Una palabra reservada tiene un significado especial para Visual Basic. CONSTANTES Una constante almacena un dato cuyo valor no cambia durante la ejecución de un programa. Para declarar una constante utilice la siguiente sintaxis: Const NOMBRE_CONSTANTE [As TIPO] = VALOR Pág. 23
  • 24. Si no se declara el tipo de constante (utilizando As TIPO) se asigna a la constante el tipo de dato más apropiado a su valor. El valor de una constante puede ser numérico, alfanumérico, carácter o de tipo fecha y hora. Por ejemplo: Const MAXIT = 25 Const PI As Double = 3.141592 Const CADENA As String = “Visual Basic es fácil” Const FECHA_POR_DEFECTO = #01/01/99# VARIABLES Una variable almacena un dato cuyo valor puede cambiar durante la ejecución de un programa. Para declarar una variable utilice la siguiente sintaxis: Dim NOMBRE_VARIABLE [As TIPO] Cuando se declara una variable y no se especifica su tipo (con As TIPO), se asume que es de tipo Variant. La instrucción Dim puede realizar más de una declaración, teniendo en cuenta que la cláusula opcional As TIPO le permite definir el tipo de dato de cada variable que vaya a declarar. Por ejemplo: Dim X, Y As Integer Pág. 24
  • 25. La sentencia anterior le puede inducir a pensar que X e Y son de tipo Integer, lo cual no es cierto, pues X es de tipo Variant (por omisión) e Y es de tipo Integer. Para asignar valores a una variable, utilizar la siguiente sintaxis: NOMBRE_VARIABLE = VALOR A manera de ejemplo considere lo siguiente: Dim CANTIDAD As Integer, PRECIO As Double, TOTAL As Double CANTIDAD = 30 PRECIO = 1.5 TOTAL = CANTIDAD * PRECIO OPERADORES Los operadores son símbolos que indican cómo serán manipulados los operandos. Los operandos son los datos (constantes y/o variables) sobre los que actúa los operadores para producir un determinado resultado. Operadores aritméticos Operador Significado ^ Exponenciación - Menos unario Pág. 25
  • 26. * / Multiplicación y división División entera Mod Resto de una división entera + - Suma y resta Operadores relacionales Operador Significado = Igual que <> Diferente que < Menor que > Mayor que <= Menor o igual que => Mayor o igual que Operadores lógicos Operador Significado Not Negación And Conjunción Or Disyunción inclusiva Xor Disyunción exclusiva Eqv Equivalencia (opuesto a Xor) Imp Implicación (falso si primer operando verdadero y segundo operando falso) Pág. 26
  • 27. Operadores de cadenas de caracteres Operador Significado & Concatenación Like Compara dos cadenas de caracteres SENTENCIAS Una sentencia es una línea de código que indica una o más operaciones a realizar. Una línea puede incluir varias sentencias, separadas unas de otras por dos puntos. Por ejemplo: Dim CANTIDAD As Integer, PRECIO As Double, TOTAL As Double CANTIDAD = 30 : PRECIO = 1.5 : TOTAL = CANTIDAD * PRECIO Una sentencia Visual Basic puede escribirse en más de una línea física utilizando el carácter de continuación de línea (un espacio en blanco seguido del carácter de subrayado). Por ejemplo: Dim CH4_ENTRADA As Double, CH4_SALIDA As Double, _ CH4_GENERA As Double, CH4_CONSUME AS Double ENTRADA Y SALIDA DE DATOS Visual Basic posee una serie de objetos (controles) que pueden ser utilizados como mecanismos de entrada y salida (E/S) de datos. Sin embargo, estos serán estudiados en capítulos posteriores. Pág. 27
  • 28. Otra posibilidad de proporcionar datos o de visualizarlos durante la ejecución de una aplicación es utilizando cajas de diálogos predefinidas. Debido a que esta es la forma más simple de realizar la E/S de datos nos ocuparemos de ella. Entrada de datos La entrada de datos permite proporcionar valores durante la ejecución de una aplicación. Estos valores son ingresados generalmente mediante el teclado y asignados a variables del programa. En Visual Basic una forma de ingresar datos a la aplicación es utilizando la caja de diálogo predefinida provista por la función InputBox. Su sintaxis es la siguiente: VARIABLE = InputBox(MENSAJE [, TÍTULO] [, PREDETERMINADO]) Donde MENSAJE es el mensaje que indica al usuario el tipo de información que debe ingresar. Por ejemplo, las sentencias: Dim EDAD As Integer EDAD = InputBox(“Ingrese su edad?”) Da lugar a que Visual Basic presente la siguiente caja de diálogo solicitando la información requerida: Pág. 28
  • 29. Como puede observar, el resto de los parámetros son opcionales. TÍTULO es el texto que se muestra en la barra de título del cuadro de diálogo, si se omite TÍTULO, el nombre de la aplicación es la que se muestra en la barra de título. PREDETERMINADO es una expresión de cadena que aparece en el cuadro de texto como respuesta predeterminada si no se proporciona ningún otro texto. Si se omite PREDETERMINADO el cuadro de texto se muestra vacío. A manera de ejemplo considere lo siguiente: Dim EDAD As Integer EDAD = InputBox(“Ingrese su edad?”, “Ficha de datos”, 18) En este caso se visualiza la caja de diálogo que se presenta en la figura siguiente: Pág. 29
  • 30. Salida de datos La salida de datos generalmente consiste en tomar la información de la memoria y mostrarla en pantalla. Para realizar la operación de salida de datos en Visual Basic, podemos utilizar el procedimiento MsgBox, cuya sintaxis es como sigue: MsgBox MENSAJE [, ICONO, TÍTULO] MENSAJE es La cadena que se muestra como salida en la caja de diálogo. ICONO es se refiere al estilo de icono que se va ha utilizar y TÍTULO es una texto que se mostrará en la barra de título de la caja de diálogo. Por ejemplo: Dim EDAD As Integer EDAD = InputBox(“Ingrese su edad?”) EDAD = EDAD + 10 MsgBox “Dentro de 10 años su edad será:” & Str(EDAD) Si ejecuta el código anterior e ingresa su edad (en mi caso 29 años) la salida debe ser similar a la figura siguiente: Pág. 30
  • 31. Para que pueda ejecutar el código anterior, proceda a crear una nueva aplicación y haga doble click sobre el formulario, luego ingrese el código anterior: Private Sub Form_Load() Dim EDAD As Integer EDAD = InputBox(“Ingrese su edad?”) EDAD = EDAD + 10 MsgBox “Dentro de 10 años su edad será:” & Str(EDAD) End Sub A manera de observación cabe señalar que la función Str() se utiliza para convertir una expresión numérica a una cadena de caracteres. ESTRUCTURAS DE CONTROL Las estructuras de control permiten tomar decisiones y realizar un proceso repetidas veces (procesos iterativos). Para ello Visual Basic dispone de las siguientes estructuras de control: If . . . Then . . . Else, If . . . Then . . . ElseIf, Select Case, For . . . Next, While . . . . Wend, Do . . . Loop y GoTo. Estructura If . . . Then . . . Else Este tipo de estructura evalúa una determinada condición y en función a ello ejecuta uno de entre dos posibles grupos de sentencias. Su sintaxis es la siguiente: Pág. 31
  • 32. If CONDICIÓN Then SENTENCIAS_VERDADERAS Else SENTENCIAS_FALSAS End If Si CONDICIÓN es verdadera se ejecuta el grupo de SENTENCIAS_VERDADERAS. Si CONDICIÓN es falsa se ejecuta el grupo de SENTENCIAS_FALSAS. Por ejemplo, el siguiente código determina si un entero A es o no divisible por otro entero B: Dim A As Integer, B As Integer A = InputBox(“Ingrese A?”) B = InputBox(“Ingrese B?”) If A Mod B = 0 Then MsgBox Str(A) & “ es divisible por ” & Str(B) Else MsgBox Str(A) & “ no es divisible por ” & Str(B) End If Estructura If . . . Then . . . ElseIf Este tipo de estructura se utiliza para elegir una de entre múltiples alternativas. Su sintaxis es como sigue: If CONDICIÓN_1 Then Pág. 32
  • 33. SENTENCIAS_1 ElseIf CONDICIÓN_2 Then SENTENCIAS_2 . . . Else SENTENCIAS_FALSAS End If Si CONDICIÓN_1 es verdadera se ejecuta el grupo de SENTENCIAS_1, y si es no se cumple, se evalúan secuencialmente las condiciones siguientes hasta Else, ejecutándose las sentencias correspondientes al primer ElseIf cuya condición sea verdadera. Si todas las condiciones son falsas, se ejecutan las SENTENCIAS_FALSAS correspondientes a Else. Por ejemplo considere el siguiente código, el cual imprime el nombre del mes correspondiente a los números del 1 al 12. Dim N As Integer N = InputBox(“Ingrese N?”) If N = 1 Then MsgBox “Enero” ElseIf N = 2 Then : MsgBox “Febrero” ElseIf N = 3 Then : MsgBox “Marzo” ElseIf N = 4 Then : MsgBox “Abril” ElseIf N = 5 Then : MsgBox “Mayo” Pág. 33
  • 34. ElseIf N = 6 Then : MsgBox “Junio” ElseIf N = 7 Then : MsgBox “Julio” ElseIf N = 8 Then : MsgBox “Agosto” ElseIf N = 9 Then : MsgBox “Setiembre” ElseIf N = 10 Then : MsgBox “Octubre” ElseIf N = 11 Then : MsgBox “Noviembre” ElseIf N = 12 Then : MsgBox “Diciembre” Else : MsgBox “Error de datos” End If Estructura Select Case Este estructura es una alternativa a la estructura If . . . Then . . . ElseIf, cuando lo que necesita es comparar la misma expresión con diferentes valores. Su sintaxis es la siguiente: Select Case EXPRESIÓN_TEST Case EXPRESIÓN_1 SENTENCIAS_1 Case EXPRESIÓN_2 SENTENCIAS_2 . . . Case Else SENTENCIAS_FALSAS End Select Pág. 34
  • 35. En este caso se comprueba el valor de EXPRESIÓN_TEST frente a la lista expresiones EXPRESIÓN_1, EXPRESIÓN_2, . . . y así sucesivamente, y busca el primer Case que incluya el valor evaluado en EXPRESIÓN_TEST, ejecutando a continuación el bloque de sentencias correspondiente. Si no existe un valor igual a EXPRESIÓN_TEST, entonces se ejecuta las SENTENCIAS_FALSAS correspondientes al Case Else. A manera de ejemplo vamos a codificar el programa de la sección anterior el cual imprime el nombre del mes correspondiente a los números del 1 al 12. Pero en esta vez utilizaremos la estructura Select Case (compare con cual de ambas estructuras es más cómodo trabajar). Dim N As Integer N = InputBox(“Ingrese N?”) Select Case N Case 1 : MsgBox “Enero” Case 2 : MsgBox “Febrero” Case 3 : MsgBox “Marzo” Case 4 : MsgBox “Abril” Case 5 : MsgBox “Mayo” Case 6 : MsgBox “Junio” Case 7 : MsgBox “Julio” Case 8 : MsgBox “Agosto” Case 9 : MsgBox “Setiembre” Pág. 35
  • 36. Case 10 : MsgBox “Octubre” Case 11 : MsgBox “Noviembre” Case 12 : MsgBox “Diciembre” Case Else MsgBox “Error de datos” End Select Cabe destacar que Select Case también se puede utilizar de la siguiente manera: Dim X As Integer X = InputBox(“Ingrese X?”) Select Case X Case 1 MsgBox “X = 1” Case 2, 3 MsgBox “X = 2 o X = 3” Case 4 To 10 MsgBox “4 <= X <= 10” Case Else MsgBox “X < 1 o X > 10” End Select Estructura For . . . Next Pág. 36 Esta estructura es utilizada para ejecutar un bucle un número determinado de veces. El número de iteraciones deberá
  • 37. ser conocido de antemano. Su sintaxis es la que se presenta a continuación: For CONTADOR = INICIO To FINAL [Step INCREMENTO/DECREMENTO] SENTENCIAS_REPETITIVAS [Exit For] Next Donde la variable CONTADOR es inicializada con el valor de INICIO y se incrementa o decrementa hasta un valor FINAL. INCREMENTO/DECREMENTO define la manera en que cambia el valor de la variable CONTADOR en cada iteración. La sentencia Exit For permite salir del bucle For ... Next antes de que este finalice. Por ejemplo, el siguiente código imprime los cuadrados de los números enteros del 1 al 25. Dim C As Integer For C = 1 To 25 Print C Next Para que este código funcione correctamente debe establecer la propiedad AutoRedraw del formulario a True. Estructura While . . . Wend Pág. 37 La estructura While . . . Wend es aquella en la que el número de iteraciones no se conoce por anticipado y el cuerpo
  • 38. del bucle se repite mientras se cumple una determinada condición. Su sintaxis es la siguiente: While CONDICIÓN SENTENCIAS_REPETITIVAS Wend La estructura While . . . Wend evalúa la CONDICIÓN en cada iteración y si el resultado es verdadero continúa su ejecución. El bucle termina cuando CONDICIÓN es falsa. A manera de ejemplo, considere el siguiente código, el cual imprime en pantalla la suma de los primeros números naturales, es decir = 1 + 2 + 3 + 4 + . . . + N S N Dim N As Integer, S As Integer S = 0 N = InputBox(“Ingrese N?”) While N <> 0 S = S + N N = N - 1 Wend MsgBox “La suma es S= ” & Str(S) Estructura Do . . . Loop Esta estructura ejecuta un bucle mientras una condición dada sea cierta, o hasta que una condición dada sea cierta. La Pág. 38
  • 39. condición puede ser verificada antes o después de ejecutarse el cuerpo del bucle. Su sintaxis es: Formato 1: Do [While/Until] CONDICIÓN SENTENCIAS_REPETITIVAS [Exit Do] Loop Formato 2: Do SENTENCIAS_REPETITIVAS [Exit Do] Loop [While/Until] CONDICIÓN Esta estructura (como se puede observar en ambos formatos) permite realizar varias estructuras diferentes dependiendo si la condición de terminación está al principio o al final del cuerpo del bucle. Como ejemplo, consideremos el siguiente programa, el cual calcula el factorial de un entero ingresado por teclado:N Dim N As Integer, FACT As Integer, C As Integer FACT = 1 C = 1 N = InputBox(“Ingrese N?”) Do FACT = FACT * C C = C + 1 Pág. 39 Loop While C <= N
  • 40. MsgBox “El factorial de ” & Str(N) & “ es=” & Str(FACT) Sentencia GoTo Transfiere el control a una línea específica de código, identificada por una etiqueta o por un número de línea. Su sintaxis es: GoTo ETIQUETA/NUMERO_LÍNEA Aunque el uso del GoTo se ha depreciado considerablemente, en el presente trabajo no se juzgará su validez. Sin embargo, se ha establecido que no hay situaciones de programación que requieran el uso del GoTo, es decir, no es un elemento necesario para hacer completo el lenguaje. Sin embargo, el GoTo es un convenio que, si su usa con cuidado, puede ser beneficioso en ciertas situaciones de programación. Por ejemplo podría escribir un bucle para imprimir los cuadrados de los números enteros del 1 al 25. Dim X As Integer X = 0 LABEL1: X = X + 1 Print X ^ 2 If X < 25 Then GoTo LABEL1 Pág. 40
  • 41. Un uso abusivo de la sentencia GoTo da lugar a códigos difíciles de interpretar y de mantener. Por ello, se recomienda su uso solamente en ocasiones excepcionales. La tarea que vaya a desempeñar una sentencia GoTo puede suplirse utilizando cualquiera de las estructuras de control vistas en las secciones anteriores. ARREGLOS Un arreglo o matriz es una estructura de datos en la que se almacena una colección finita de datos del mismo tipo, que comparten un nombre común, a los que se puede acceder por la posición (índice) que ocupa cada uno de ellos dentro del arreglo. Cada elemento del arreglo es una variable que puede contener un número o una cadena de caracteres, dependiendo del tipo de arreglo que se declare. Los arreglos en Visual Basic se clasifican en estáticos y dinámicos. Arreglos estáticos Son aquellos arreglos cuyo tamaño no puede cambiar en tiempo de ejecución. La declaración de un arreglo estático se puede realizar mediante la siguiente sintaxis: Dim NOMBRE_ARREGLO(DIMENSONES) As TIPO Pág. 41
  • 42. Donde DIMENSIONES es una lista de números, separados por comas y que definen las dimensiones del arreglo. Esta lista puede ser de la siguiente forma: DIMENSIÓN_1, DIMENSIÓN_2, DIMENSIÓN_3, . . ., DIMENSIÓN_ K Para el caso de un arreglo formado por “ K ” dimensiones, es decir un arreglo K -dimensional. A manera de ejemplo considere los siguientes casos que se pueden presentar: Dim LISTA(9) As Integer Dim MATRIZ(4, 3) As Double Dim NOMBRES(19) As String * 30 En el primer caso se declara un arreglo unidimensional de 10 elementos de tipo entero (por defecto los elementos de un arreglo se numeran a partir de 0). En el segundo caso se define de un arreglo bidimensional de 20 elementos (5 filas por 4 columnas) de tipo punto flotante en doble precisión. En el tercer caso se define una arreglo unidimensional de 20 elementos de tipo cadena de caracteres (cada elemento tiene una longitud fija de 30 caracteres). Como se observa la numeración de los elementos de un arreglo por defecto comienza en cero, para hacer que la Pág. 42
  • 43. numeración comience en 1, debe ingresar la siguiente orden en la sección de Declaraciones del módulo de formulario: Luego, para declarar los mismos arreglos de los casos anteriores, las sentencias serían las siguientes: Dim LISTA(10) As Integer Dim MATRIZ(5, 4) As Double Dim NOMBRES(20) As String * 30 Establecer la sentencia Option Base a 1 o trabajar con el valor predeterminado (cero) queda a consideración del lector. Arreglos dinámicos Son aquellos arreglos en los que su tamaño puede definirse o modificarse en tiempo de ejecución. Para declara una arreglo dinámico utilice la siguiente sintaxis: Dim NOMBRE_ARREGLO() As TIPO Para definir el tamaño del arreglo utilizar la siguiente sintaxis: Pág. 43
  • 44. ReDim NOMBRE_ARREGLO(NÚMERO_ELEMENTOS) Cada vez que se ejecuta la sentencia ReDim, todos los valores almacenados en el arreglo se pierden. Para definir o cambiar el tamaño del arreglo conservando los valores del mismo use la siguiente sintaxis: ReDim Preserve NOMBRE_ARREGLO(NÚMERO_ELEMENTOS) Para liberar el espacio de memoria utilizado por arreglos dinámicos que ya no son útiles, utilizar la sintaxis: Erase NOMBRE_ARREGLO La orden Erase asigna cero a cada elemento de los arreglos numéricos y nulo (“”) a cada elemento de los arreglos de cadena de caracteres. A manera de ejemplo considere el siguiente código que declara y hace uso de un arreglo dinámico: Dim I As Integer, N As Integer, TEMP() As Integer N = InputBox(“Ingrese N?”) ReDim TEMP(N - 1) For I = 0 To N - 1 TEMP(I) = I + 1 Print TEMP(I) Next Erase TEMP Pág. 44
  • 45. REGISTROS Un registro es un nuevo tipo de dato, que se define como una colección de datos de diferentes tipos, conocidos como “campos”, los cuales se encuentran evidentemente relacionados. Un registro sólo se puede ser creado en la sección de declaraciones de un módulo. La sintaxis correspondiente es: Private Type NOMBRE_REGISTRO DECLARACIONES_DE_LOS_MIEMBROS End Type Por ejemplo considere el siguiente código que define la estructura ALUMNO: Private Type ALUMNO ID_ALUMNO As String * 7 NOMBRE As String * 25 DIRECCION As String * 35 TELEFONO As String * 7 ESTADO As Boolean End Type Luego, podemos declarar una variable tipo ALUMNO de la siguiente forma: Dim X As ALUMNO Pág. 45
  • 46. Para referirse a un determinado miembro del registro se utiliza el operador selector de campos ( . ), veamos: X.ID_ALUMNO = “980976G” X.NOMBRE = “Carlos Castillo Peralta” X.DIRECCION = “Jr. C. Richardson 412 Chorrillos” X.TELEFONO = “2510850” X.ESTADO = True Las mismas órdenes del párrafo anterior se pueden escribir de una manera más fácil, más legible y más eficiente si utiliza la sentencia With . . . End With, del siguiente modo: With X . ID_ALUMNO = “980976G” .NOMBRE = “Carlos Castillo Peralta” .DIRECCION = “Jr. C. Richardson 412 Chorrillos” .TELEFONO = “2510850” .ESTADO = True End With FUNCIONES Las funciones son uno de los elementos básicos en programación. A continuación serán estudiadas detalladamente. Declaración de una función Pág. 46
  • 47. Una función es un procedimiento que cuando se ejecuta devuelve un único resultado al procedimiento que la invocó. La sintaxis correspondiente a la declaración de una función es: Function NOMBRE_FUNCIÓN([LISTA_PARÁMETROS]) [As TIPO] SENTENCIAS [NOMBRE_FUNCIÓN = VALOR_RETORNADO] [Exit Function] End Function Donde LISTA_PARÁMETROS es una secuencia de variables separadas por comas que se corresponden con los argumentos pasados cuando es invocada la función. Para especificar el tipo de datos que será retornado por la función utilice la cláusula opcional As TIPO, el tipo es Variant por omisión. El valor retornado por la función es almacenado en su propio nombre, es decir en NOMBRE_FUNCIÓN, que actúa como variable dentro del cuerpo de la función. Si no se efectúa esta asignación el valor devuelto será cero si la función es de tipo numérica, nulo (“”) si la función es de tipo cadena, o vacío (Empty) si la función es de tipo Variant. La cláusula opcional Exit Function permite salir de una función antes de que la función finalice, en caso sea esto necesario. Pág. 47
  • 48. La sintaxis para la llamada a una función es de la siguiente forma: VARIABLE = NOMBRE_FUNCIÓN([LISTA_ARGUMENTOS]) Donde LISTA_ARGUMENTOS es una secuencia de constantes, variables o expresiones separadas por comas. El número de argumentos debe ser igual al número de parámetros de la función. Los tipos de los argumentos deben coincidir con los tipos de sus correspondientes parámetros. A manera de ejemplo considere la implementación de la siguiente función: 32)( 2 ++= xxxf En la sección de Declaraciones del módulo de formulario ingrese el siguiente código: Function F(X As Double) As Double F = X ^ 2 + 2 * X + 3 End Function Para invocar la función creada recientemente, codifique las siguientes líneas: Dim A As Double, RESP As Double A = InputBox(“Ingrese A?”) RESP = F(A) Pág. 48
  • 49. MsgBox (Str(RESP)) Paso de argumentos a una función El paso de argumentos a una función es la forma como se ingresan los datos y variables al interior de la función y se presenta de dos formas: • Por referencia • Por valor Paso de argumentos por referencia En las funciones de Visual Basic, los argumentos se pasan por referencia (forma por defecto), de este modo cualquier cambio de valor que sufra un parámetro en el cuerpo de la función, también se produce en el argumento correspondiente de la llamada a la función. Esta forma de pasar los argumentos a una función es útil para funciones que devuelven más de un valor. Por ejemplo, considere la siguiente función que calcula las raíces reales de una ecuación cuadrática Ax Bx C2 0+ + = . Function RAIZ(A As Double, B As Double, C As Double, _ X1 As Double, X2 As Double) As Boolean Dim D As Double D = B ^ 2 - 4 * A * C If D >= 0 Then X1 = (-B - Sqr(D)) / (2 * A) X2 = (-B + Sqr(D)) / (2 * A) Pág. 49
  • 50. RAIZ = True ' Verdadero si hay raíces reales Else RAIZ = False ' Falso si no hay raíces reales End If End Function La llamada a esta función se puede realizar de la manera que se presenta a continuación: Dim A As Double, B As Double, C As Double Dim X1 As Double, X2 As Double A = InputBox(“Ingrese A?”) B = InputBox(“Ingrese B?”) C = InputBox(“Ingrese C?”) If RAIZ(A, B, C, X1, X2) Then MsgBox “X1= ” & Str(X1) MsgBox “X2= ” & Str(X2) Else MsgBox “NO EXISTEN RAÍCES REALES” End If Paso de argumentos por valor Cuando se ejecuta una función, se podrá especificar que el valor de un argumento no sea cambiado por esta función, pasando dicho argumento por valor. Para ello se debe anteponer la Pág. 50
  • 51. palabra reservada ByVal a la declaración del parámetro en la cabecera de la función. Por ejemplo: Function F(ByVal X As Double) As Double F = X ^ 2 + 2 * X + 3 End Function La cabecera de la función F especifica que X será pasado por valor y no por referencia. Funciones recursivas Se dice que una función es recursiva si se llama a sí misma. Por ejemplo la función FACTORIAL cuyo código se presenta a continuación es recursiva: Function FACTORIAL(N As Integer) As Long If N 0 Then<> FACTORIAL = FACTORIAL(N - 1) * N Else FACTORIAL = 1 End If End Function PROCEDIMIENTOS La sintaxis para definir un procedimiento es la siguiente: Private Sub NOMBRE_PROCEDIMIENTO([LISTA_PARÁMETROS]) Pág. 51
  • 52. SENTENCIAS [Exit Sub] End Sub La explicación es análoga a la dada para las funciones. Sin embargo, un procedimiento no puede ser utilizado en una expresión, ya que un procedimiento no retorna ningún valor a través de su nombre. La llamada a un procedimiento puede ser realizada de alguna de las dos formas siguientes: Call NOMBRE_PROCEDIMIENTO([LISTA_ARGUMENTOS]) ó NOMBRE_PROCEDIMIENTO([LISTA_ARGUMENTOS]) Por ejemplo, el siguiente código corresponde a un procedimiento que calcula e imprime la suma de los primeros números naturales impares, es decir: = 1 + 3 + 5 + . . . + N S N Private Sub SUMA_IMPAR(N As Integer) Dim S As Integer, I As Integer S = 0 For I = 1 To N If I Mod 2 <> 0 Then S = S + I Pág. 52 End If
  • 53. Next MsgBox “La suma es S= ” & Str(S) End Sub La llamada a este procedimiento podría ser de la forma: Call SUMA_IMPAR(25) Pág. 53
  • 54. CAPÍTULO 4 USO DE LOS CONTROLES Los controles son aquellos objetos que se encuentran dentro de un contenedor y que permiten la interacción entre el usuario y la aplicación, ya sea para manipular datos y/o ejecutar tareas. En Visual Basic, los controles suelen ser agrupados en tres categorías: • Controles básicos • Controles complementarios • Controles externos Los controles básicos son las etiquetas, cuadros de texto y botones de comando, pues utilizando estos tres controles se puede construir cualquier interfaz. Los controles complementarios son el resto de los controles, por ejemplo una casilla de verificación, un cuadro combinado o un cronómetro. Los controles externos se refieren a aquellos controles creados por terceros. Este tipo de controles son llamados ActiveX. Pág. 54
  • 55. CONTROLES BÁSICOS Los controles básicos lo conforman las etiquetas, cuadros de texto y botones de comando, debido a que cualquier interfaz se puede implementar con sólo estos tres objetos. Etiqueta Una etiqueta es un control que permite presentar texto de solo lectura. Se utiliza para mostrar títulos y mensajes que por lo general no cambian. Sin embargo, si lo desea, puede escribir procedimientos que cambien el texto mostrado por una etiqueta como respuesta a eventos en tiempo de ejecución. Propiedad Descripción Alignment Especifica la forma como se alineará el texto. AutoSize Especifica si se cambia automáticamente el tamaño del control para que quepan sus contenidos. BackColor, ForeColor Especifica el color de fondo y de primer plano empleado para mostrar el texto. BackStyle Especifica si el fondo del control es transparente u opaco. Caption Especifica el texto que se muestra en el control. WordWrap Especifica si la etiqueta se extiende a más de una línea cuando el texto es amplio. Pág. 55
  • 56. Cuadro de texto Un cuadro de texto es un control en el que el usuario pueda ingresar datos desde el teclado o visualizar un resultado generado por la aplicación. El valor de un cuadro de texto por lo general se asocia a una variable de memoria. Propiedad Descripción Enabled Habilita o deshabilita el control, es decir si se puede o no modificar el contenido. Locked Permite bloquear el acceso al control en tiempo de ejecución. MaxLenght Especifica la longitud máxima (en caracteres) que puede escribirse en el control. MultiLine Especifica si el control admitirá múltiples líneas. PasswordChar Determina si se muestran en el control los caracteres escritos por el usuario o los caracteres de marcador de posición. ScrollBars Especifica si se muestran las barras de desplazamiento horizontales o verticales. SelLength Especifica el número de caracteres seleccionados. SelStart Especifica el inicio del texto seleccionado. Si su valor es 0, el texto seleccionado comienza por el primer carácter. SelText Contiene el texto seleccionado. Text Contiene el texto introducido en el control. Puede inicializar el contenido en tiempo de diseño. Pág. 56
  • 57. Los eventos asociados a un cuadro de texto son los siguientes: Evento Descripción Change Ocurre cuando se cambia el contenido del control utilizando el teclado o el ratón. KeyPress Ocurre cuando se pulsa una tecla. Botón de comando Un botón de comando es un control que suele emplearse para ejecutar una acción, como cerrar un formulario, imprimir un informe, etc. Propiedad Descripción Cancel Especifica si el control responderá a la tecla ESC, por lo general para terminar la aplicación. Caption Muestra un título para el control. Default Especifica si el control responderá a la tecla ENTRAR, sin importar la ubicación del enfoque. Enabled Permite habilitar o deshabilitar el control. Picture Especifica una imagen tipo icono para el control. Style Especifica la apariencia del control, ya sea estándar (estilo estándar de Windows) o gráfica (con una imagen personalizada). Pág. 57
  • 58. Los botones de comando suelen responder al evento Click, cuya descripción es: Evento Descripción Click Ocurre cuando el usuario hace click sobre el control. A manera de ejemplo vamos a desarrollar la siguiente aplicación. Esta consiste en un cajero automático el cual permite manipular cierta cantidad de dinero para lo cual dispone de los siguientes billetes: S/. 10.00; S/. 20.00; S/. 50.00; S/. 100.00 y S/. 200.00. Elaborar una aplicación que permita la lectura de la cantidad a retirar e indique el menor número de billetes a utilizar. Para el desarrollo de la presente aplicación proceda a ubicar los siguientes controles en el formulario: 6 etiquetas Pág. 58
  • 59. 6 cajas de texto 3 botones de comando Una vez ubicados los controles, establezca las propiedades según se indica: Form1 Nombre FrmCajero BorderStyle 3-Fixed Dialog Caption Cajero automático Label1 Nombre LblCantidad AutoSize True Caption Cantidad a retirar: Label2 Nombre LblB10 AutoSize True Caption Billetes de S/. 10 Label3 Nombre LblB20 AutoSize True Caption Billetes de S/. 20 Label4 Nombre LblB50 AutoSize True Caption Billetes de S/. 50 Label5 Pág. 59
  • 60. Nombre LblB100 AutoSize True Caption Billetes de S/. 100 Label6 Nombre LblB200 AutoSize True Caption Billetes de S/. 200 Text1 Nombre TxtCantidad Text Text2 Nombre TxtB10 Text Text3 Nombre TxtB20 Text Text4 Nombre TxtB50 Text Text5 Nombre TxtB100 Text Text6 Nombre TxtB200 Text Command1 Pág. 60
  • 61. Nombre CmdAceptar Caption &Aceptar Command2 Nombre CmdLimpiar Caption &Limpiar Command3 Nombre CmdSalir Caption &Salir Para añadir código a la aplicación haga doble click sobre el botón “Aceptar” e ingrese lo siguiente: Private Sub CmdAceptar_Click() Dim C As Integer, B200 As Integer, B100 As Integer, _ B50 As Integer, B20 As Integer, B10 As Integer C = Val(TxtCantidad) If C Mod 10 = 0 Then B200 = C 200 : C = C Mod 200 B100 = C 100 : C = C Mod 100 B50 = C 50 : C = C Mod 50 B20 = C 20 : B10 = C Mod 20 TxtB200 = Str(B200) TxtB100 = Str(B100) TxtB50 = Str(B50) TxtB20 = Str(B20) TxtB10 = Str(B10) Else Pág. 61
  • 62. MsgBox “Cantidad a retirar debe ser múltiplo de 10” TxtCantidad = “” TxtCantidad.SetFocus End If End Sub Luego, haga doble click sobre el botón “Limpiar” y añada el siguiente código: Private Sub CmdLimpiar_Click() TxtCantidad = “” TxtB200 = “” TxtB100 = “” TxtB50 = “” TxtB20 = “” TxtB10 = “” TxtCantidad.SetFocus End Sub Finalmente dar doble click sobre el botón “Salir” y añada el siguiente código: Private Sub CmdSalir_Click() End End Sub Pág. 62
  • 63. En el código anterior hemos utilizado el método SetFocus para enfocar la caja de texto TxtCantidad, esto es, para posicionar el cursor sobre ella. CONTROLES COMPLEMENTARIOS Los controles complementarios se utilizan como alternativa a los controles básicos en aplicaciones en las cuales su uso facilita o mejora el diseño de la interfaz. Como el lector podrá verificar, algunos controles son más adecuados que otros dependiendo del tipo de aplicación que se pretenda desarrollar. Marco Un marco es un objeto contenedor que puede utilizarse para agrupar casillas de verificación, botones de opción, botones de comando, etc. Propiedad Descripción Caption Muestra un título para el control. Casilla de verificación Una casilla de verificación se utiliza para alternar entre dos posibles valores (Activado/Desactivado). Cada casilla de verificación es independiente de las demás ya que cada una tiene su propio nombre (Name). Puede utilizar casillas de verificación en grupos para mostrar múltiples opciones entre Pág. 63
  • 64. las cuales el usuario puede seleccionar todas las que desee a la vez. Propiedad Descripción Caption Muestra un título para el control. Value Devuelve o establece el estado del control, puede ser: Desactivado (0), Activado (1). Las casillas de verificación suelen responder al evento Click. Botón de opción Un botón de opción se utiliza para alternar entre dos posibles valores (Activado/Desactivado), de manera similar a las casillas de verificación, la diferencia radica en que de un grupo de botones de opción el usuario sólo puede seleccionar un único botón a la vez. Propiedad Descripción Caption Muestra un título para el control. Value Devuelve o establece el estado del control, puede ser: Desactivado (Falso), Activado (True). Los botones de opción también suelen responder al evento Click. Pág. 64
  • 65. A manera de ejemplo vamos a desarrollar la siguiente aplicación, la cual permite cambiar el aspecto de un cuadro de texto, el usuario debe elegir el color (rojo, verde, azul) y el estilo (negrita, cursiva, subrayado) de la fuente a utilizar. Adicionalmente, cuando el usuario active la casilla de verificación “Convertir a mayúsculas”, todo el texto que haya escrito en el cuadro de texto se presentará en mayúsculas y todo texto que escriba a continuación (mientras la opción esté activada) también deberá aparecer en mayúsculas. Para el desarrollo de la presente aplicación proceda a ubicar los siguientes controles en el formulario: 1 cuadro de texto 2 marcos 3 botones de opción 4 casillas de verificación Pág. 65
  • 66. Una vez ubicados los controles, establezca las propiedades según se indica: Form1 Nombre FrmEditor BorderStyle 3-Fixed Dialog Caption Editor Text1 Nombre TxtMensaje ForeColor &H000000FF& Text Frame1 Nombre FraColor Caption Color Frame2 Nombre FraEstilo Caption Estilo Option1 Nombre OptRojo Caption Rojo ForeColor &H000000FF& Value True Option2 Nombre OptVerde Caption Verde ForeColor &H00008000& Pág. 66
  • 67. Option3 Nombre OptAzul Caption Azul ForeColor &H00C00000& Check1 Nombre ChkNegrita Caption Negrita Font Arial (Negrita) Check2 Nombre ChkCursiva Caption Cursiva Font Arial (Cursiva) Check3 Nombre ChkSubrayado Caption Subrayado Font Arial (Subrayado) Check4 Nombre ChkMayuscula Caption Convertir a mayúsculas Una vez establecidas las propiedades, proceda a ingresar el código que se indica a continuación: Private Sub OptRojo_Click() If OptRojo.Value Then TxtMensaje.ForeColor = RGB(255, 0, 0) End If Pág. 67 End Sub
  • 68. Private Sub OptVerde_Click() If OptVerde.Value Then TxtMensaje.ForeColor = RGB(0, 255, 0) End If End Sub Private Sub OptAzul_Click() If OptAzul.Value Then TxtMensaje.ForeColor = RGB(0, 0, 255) End If End Sub Private Sub ChkNegrita_Click() If ChkNegrita.Value Then TxtMensaje.Font.Bold = True Else TxtMensaje.Font.Bold = False End If End Sub Private Sub ChkCursiva_Click() If ChkCursiva.Value Then TxtMensaje.Font.Italic = True Else TxtMensaje.Font.Italic = False End If End Sub Pág. 68
  • 69. Private Sub ChkSubrayado_Click() If ChkSubrayado.Value Then TxtMensaje.Font.Underline = True Else TxtMensaje.Font.Underline = False End If End Sub Private Sub ChkMayuscula_Click() If ChkMayuscula.Value Then TxtMensaje = UCase(TxtMensaje) End If End Sub Private Sub TxtMensaje_KeyPress(KeyAscii As Integer) Dim CAR As String * 1 If ChkMayuscula.Value Then CAR = UCase(Chr(KeyAscii)) KeyAscii = Asc(CAR) End If End Sub La función RGB() especifica el color que se asigna a la propiedad ForeColor. La función UCase() retorna una cadena de caracteres en mayúsculas. Pág. 69
  • 70. Cuadro de lista Un cuadro de lista es un control que presenta una lista de elementos en la que el usuario puede seleccionar uno o más de dichos elementos. Si el número de elementos supera el número que puede mostrarse, se agregará automáticamente una barra de desplazamiento al control. Propiedad Descripción List Contiene los elementos de la lista. Puede definirlos en tiempo de diseño. ListCount Especifica el número de elementos de la lista. Su valor siempre es uno más que el mayor valor de ListIndex. ListIndex Especifica el número de orden que ocupa el elemento seleccionado en la lista. Toma el valor de 0 para el primer elemento, si no ha selecciona ninguno retorna -1. MultiSelect Especifica si se pueden seleccionar varios elementos de la lista. SelCount Devuelve el número de elementos seleccionados. Selected Especifica si un elemento de la lista está seleccionado. Sorted Especifica si los elementos de la lista se ordenan alfabéticamente. Text Especifica el valor del elemento seleccionado en ese instante. El valor es tratado como una cadena de caracteres. Pág. 70
  • 71. Los métodos que se pueden utilizar para un cuadro de lista son los siguientes: Método Descripción AddItem Agrega un nuevo elemento a la lista. Clear Elimina todos los elementos contenidos en la lista. RemoveItem Elimina en elemento de la lista. Cuadro combinado Un cuadro combinado es una mezcla de un cuadro de texto con una lista. En él no sólo se podrá ingresar un dato sino también seleccionarlo de la lista. Presenta las mismas propiedades, eventos y métodos que el cuadro de lista a excepción de lo siguiente: Propiedad Descripción Style Especifica si el control se comporta como un cuadro de texto o como una lista desplegable. Un cuadro de texto permite ingresar valores. Una lista desplegable sólo permite seleccionar valores. El valor predeterminado es 0-vbComboDropDown, e incluye una lista desplegable y un cuadro de texto. El valor 1-vbComboSimple incluye tan solo cuadro de texto. El valor 2-Dropdown List incluye sólo una lista desplegable. Pág. 71
  • 72. Como ejemplo del uso de listas vamos a desarrollar una aplicación que permita ingresar el nombre de un curso, el cual pasa a formar parte de una lista de espera antes de ser programado para su dictado. Los cursos deben ser seleccionados de la lista de espera y trasladados a la lista de cursos programados y viceversa. Para el desarrollo de la presente aplicación proceda a ubicar los siguientes controles en el formulario: 3 etiquetas 1 cuadro de texto 2 listas 5 botones de comando Pág. 72
  • 73. En seguida proceda a establecer las propiedades según se indica: Form1 Nombre FrmCursos BorderStyle 3-Fixed Dialog Caption Cursos Label1 Nombre LblCurso AutoSize True Caption Ingrese nuevo curso: Label2 Nombre LblSeleccionar AutoSize True Caption Seleccione un curso: Label3 Nombre LblProgramado AutoSize True Caption Curso programado: Text1 Nombre TxtCurso Text List1 Nombre LstSeleccionar List2 Nombre LstProgramado Pág. 73
  • 74. Command1 Nombre CmdAgregar Caption Picture C:FundVBBitmapsAddItem.Bmp Style 1-Graphical Command2 Nombre CmdAgregarTodo Caption Picture C:FundVBBitmapsAddAll.Bmp Style 1-Graphical Command3 Nombre CmdQuitar Caption Picture C:FundVBBitmapsRemove.Bmp Style 1-Graphical Command4 Nombre CmdQuitarTodo Caption Picture C:FundVBBitmapsRemoveAll.Bmp Style 1-Graphical Command5 Nombre CmdAnnadir Caption &Añadir Default True Seguidamente proceda a ingresar el código que se indica a continuación: Pág. 74 Private Sub CmdAnnadir_Click()
  • 75. LstSeleccionar.AddItem TxtCurso TxtCurso = “” TxtCurso.SetFocus End Sub Private Sub CmdAgregar_Click() Dim CURSO As String, I As Integer CURSO = LstSeleccionar.Text I = LstSeleccionar.ListIndex If LstSeleccionar.ListIndex >= 0 Then LstProgramado.AddItem CURSO LstSeleccionar.RemoveItem I End If End Sub Private Sub CmdQuitar_Click() Dim CURSO As String, I As Integer CURSO = LstProgramado.Text I = LstProgramado.ListIndex If LstProgramado.ListIndex >= 0 Then LstSeleccionar.AddItem CURSO LstProgramado.RemoveItem I End If End Sub Private Sub CmdAgregarTodo_Click() Dim I As Integer Pág. 75
  • 76. For I = 0 To LstSeleccionar.ListCount - 1 LstProgramado.AddItem LstSeleccionar.List(I) Next LstSeleccionar.Clear End Sub Private Sub CmdQuitarTodo_Click() Dim I As Integer For I = 0 To LstProgramado.ListCount - 1 LstSeleccionar.AddItem LstProgramado.List(I) Next LstProgramado.Clear End Sub Seguidamente mostraremos un ejemplo del uso de los cuadros combinados. Para tal fin vamos a desarrollar una aplicación que permita realizar consultas acerca de un determinado curso. La relación de cursos se presentará mediante un cuadro combinado, del cual el usuario debe seleccionar el curso de su interés y en seguida se presentará el nombre del profesor encargado del curso (teoría), el nombre del jefe de práctica (laboratorio), así como los horarios de teoría y de laboratorio, respectivamente. Pág. 76
  • 77. Para el desarrollo de la presente aplicación proceda a ubicar los siguientes controles en el formulario: 1 etiqueta 1 cuadro de texto 1 cuadro combinado 1 botón de comando En seguida proceda a establecer las propiedades según se indica: Form1 Nombre FrmConsultaCursos BorderStyle 3-Fixed Dialog Caption Consulta de cursos Pág. 77
  • 78. Label1 Nombre LblCursos Caption Cursos: Text1 Nombre TxtCurso MultiLine True ScrollBars 2-Vertical Text Combo1 Nombre CboCursos Text Style 2-Dropdown List Command1 Nombre CmdSalir Caption &Salir Seguidamente proceda a ingresar el código que se indica a continuación: Dim Matriz(5, 3) As String Private Sub Form_Load() CboCursos.AddItem “Microsoft Visual Basic Nivel I” CboCursos.AddItem “Microsoft Visual Basic Nivel II” CboCursos.AddItem “Microsoft Visual FoxPro Nivel I” CboCursos.AddItem “Microsoft Visual FoxPro Nivel II” CboCursos.AddItem “Microsoft Visual C++ Nivel I” CboCursos.AddItem “Microsoft Visual C++ Nivel II” Pág. 78
  • 79. Matriz(0, 0) = “Castillo Peralta, Carlos” Matriz(1, 0) = “Castillo Peralta, Carlos” Matriz(2, 0) = “Linares Alarcon, Adams” Matriz(3, 0) = “Castillo Peralta, Carlos” Matriz(4, 0) = “Córdoba Saavedra, Javier” Matriz(5, 0) = “Castillo Peralta, Carlos” Matriz(0, 1) = “Sa 08-11” Matriz(1, 1) = “Sa 14-17” Matriz(2, 1) = “Sa 08-11” Matriz(3, 1) = “Do 08-11” Matriz(4, 1) = “Sa 14-17” Matriz(5, 1) = “Sa 17-20” Matriz(0, 2) = “Castillo Peralta, Carlos” Matriz(1, 2) = “Linares Alarcon, Adams” Matriz(2, 2) = “Montes Tejada, Estela” Matriz(3, 2) = “Linares Alarcon, Adams” Matriz(4, 2) = “Córdoba Saavedra, Javier” Matriz(5, 2) = “Córdoba Saavedra, Javier” Matriz(0, 3) = “Sa 11-13” Matriz(1, 3) = “Do 08-10” Matriz(2, 3) = “Sa 11-13” Matriz(3, 3) = “Do 14-16” Matriz(4, 3) = “Sa 18-20” Matriz(5, 3) = “Do 08-10” End Sub Pág. 79
  • 80. Private Sub CboCursos_Click() Dim P_TEORIA As String, H_TEORIA As String Dim P_LAB As String, H_LAB As String P_TEORIA = “Profesor de teoría: ” & _ Matriz(CboCursos.ListIndex, 0) H_TEORIA = “Horario de teoría: ” & _ Matriz(CboCursos.ListIndex, 1) P_LAB = “Jefe de práctica: ” & _ Matriz(CboCursos.ListIndex, 2) H_LAB = “Horario laboratorio: ” & _ Matriz(CboCursos.ListIndex, 3) TxtCurso = P_TEORIA & vbCrLf & H_TEORIA & vbCrLf & _ P_LAB & vbCrLf & H_LAB End Sub Private Sub CmdSalir_Click() End End Sub La constante vbCrLf es una combinación de retorno de carro y avance de línea, es equivalente a Chr(13) + Chr(10). Para este ejemplo en particular hemos almacenado la información en memoria RAM mediante el uso de un arreglo bidimensional (Matriz). Pág. 80
  • 81. Cronómetro Un cronómetro sirve para controlar el tiempo transcurrido desde el inicio de una acción. Propiedad Descripción Interval Especifica el número de milisegundos que se esperará para disparar el evento Timer. El control Cronómetro responde al evento Timer, cuya descripción es: Evento Descripción Timer Ocurre cuando el número de milisegundos especificado en la propiedad Interval ha transcurrido. A manera de ejemplo vamos a desarrollar la siguiente aplicación que simula el funcionamiento de un reloj digital. Pág. 81
  • 82. Para el desarrollo de la presente aplicación proceda a ubicar los siguientes controles sobre el formulario: 1 etiqueta 1 cuadro de texto 1 cronómetro 1 botón de comando En seguida proceda a establecer las propiedades según se indica: Form1 Nombre FrmReloj BorderStyle 3-Fixed Dialog Caption Reloj digital Label1 Nombre LblHora Caption Hora Text1 Nombre TxtHora Text Timer1 Nombre Timer1 Interval 500 Command1 Nombre CmdTerminar Caption &Terminar Pág. 82
  • 83. Seguidamente proceda a ingresar el código que se indica a continuación: Private Sub Form_Activate() TxtHora = Time() End Sub Private Sub Timer1_Timer() If TxtHora Time() Then<> TxtHora = Time() End If End Sub Private Sub CmdTerminar_Click() End End Sub Cuadro de imagen Un cuadro de imagen se utiliza para mostrar un archivo de imagen (BMP, GIF o JPG). Recorta el gráfico si el control no es lo bastante grande para mostrar la imagen completa. Propiedad Descripción AutoSize Especifica si el control ajusta automáticamente su tamaño para mostrar un gráfico completo. Picture Especifica el archivo de imagen para el control. Pág. 83
  • 84. El evento que suele manejarse para este control es MouseMove, cuya descripción es: Evento Descripción MouseMove Ocurre cuando el usuario mueve el ratón sobre el control. Imagen Un control imagen se utilizará para mostrar un archivo de imagen (BMP, GIF o JPG) de manera similar a un Cuadro de imagen. Sin embargo, este control utiliza menos recursos del sistema y se actualiza con más rapidez que un cuadro de imagen. Propiedad Descripción Picture Especifica el archivo de imagen para el control. Stretch Especifica como se ajusta el tamaño del archivo gráfico para que quepa dentro del control imagen. Para este control también se suele manejar el evento MouseMove. Barras de desplazamiento horizontal Una barra de desplazamiento horizontal representa un valor entero, la cual tiene un cuadrado que se desplaza a lo largo de la misma para fijar un valor. Pág. 84
  • 85. La posición más a la izquierda se corresponde con el valor mínimo, la posición más a la derecha con el valor máximo, y cualquier otra posición es un valor entre ellos dos. Propiedad Descripción Max Especifica el valor máximo que puede tomar la propiedad Value. Min Especifica el valor mínimo que puede tomar la propiedad Value. LargeChange Especifica en cuanto cambiará el valor de la propiedad Value cuando el usuario haga click antes o después del cuadrado de desplazamiento. SmallChange Especifica en cuanto cambiará el valor de la propiedad Value cuando el usuario haga click en alguna de las flechas de los extremos de la barra. Value Especifica el valor del control, este se encuentra siempre entre los valores de las propiedades Min y Max. Las barras de desplazamientos responden a los eventos: Evento Descripción Change Ocurre inmediatamente después que el cuadrado de desplazamiento ha sido movido. Scroll Ocurre mientras el cuadrado de desplazamiento está siendo movido (este evento sólo ocurre cuando el cuadrado es arrastrado). Barras de desplazamiento vertical Pág. 85
  • 86. Una barra de desplazamiento vertical representa un valor entero, la cual tiene un cuadrado que se desplaza a lo largo de la misma para fijar un valor. La posición más hacia arriba se corresponde con el valor mínimo, la posición más hacia abajo se corresponde con el valor máximo, y cualquier otra posición es un valor entre ellos dos. Las propiedades y eventos de las barras de desplazamiento horizontal y vertical son análogas. Como ejemplo, vamos a construir una aplicación que permita cambiar el color de fondo de un cuadro de imagen, mediante tres barras de desplazamiento (rojo, verde y azul). Para el desarrollo de la presente aplicación proceda a ubicar los siguientes controles en el formulario: 3 etiquetas Pág. 86
  • 87. 3 barras de desplazamiento horizontal 1 cuadro de imagen En seguida proceda a establecer las propiedades según se indica: Form1 Nombre FrmColores BorderStyle 3-Fixed Dialog Caption Colores Label1 Nombre LblRojo Caption Rojo Label2 Nombre LblVerde Caption Verde Label3 Nombre LblAzul Caption Azul HScroll1 Nombre HSRojo LargeChange 10 Max 255 Min 0 SmallChange 1 Value 255 HScroll2 Pág. 87
  • 88. Nombre HSVerde LargeChange 10 Max 255 Min 0 SmallChange 1 Value 0 HScroll3 Nombre HSAzul LargeChange 10 Max 255 Min 0 SmallChange 1 Value 0 Picture1 Nombre PicFondo BackColor &H000000FF& Seguidamente proceda a ingresar el código que se indica a continuación: Private Sub HSRojo_Change() PicFondo.BackColor = RGB(HSRojo, HSVerde, HSAzul) End Sub Private Sub HSVerde_Change() PicFondo.BackColor = RGB(HSRojo, HSVerde, HSAzul) End Sub Private Sub HSAzul_Change() Pág. 88
  • 89. PicFondo.BackColor = RGB(HSRojo, HSVerde, HSAzul) End Sub En el código anterior se debió colocar HSRojo.Value, HSVerde.Value y HSAzul.Value, pero debido a que la propiedad Value es por defecto se puede omitir. Cuadro de lista de unidades Un cuadro de lista de unidades permite al usuario seleccionar una unidad de disco válida en tiempo de ejecución. Utilice este control para presentar una lista de todas las unidades válidas del sistema. Propiedad Descripción Drive Especifica la unidad seleccionada en tiempo de ejecución. Este control responde al evento Change, cuya descripción es la siguiente: Evento Descripción Change Ocurre cuando el usuario hace click sobre la unidad que desea seleccionar. El evento Change también ocurre si se selecciona la unidad mediante el teclado. Cuadro de lista de directorios Pág. 89
  • 90. Un cuadro de lista de directorios muestra directorios y rutas de acceso en tiempo de ejecución. Utilice este control para mostrar una lista jerárquica de directorios. Propiedad Descripción Path Especifica la ruta de acceso actual. Un cuadro de lista de directorios también responde al evento Change. Cuadro de lista de archivos Un cuadro de lista de archivos encuentra y muestra los archivos del directorio especificado por la propiedad Path en tiempo de ejecución. Utilice este control para mostrar una lista de los archivos seleccionados por tipo. Propiedad Descripción Path Especifica la ruta de acceso actual. Pattern Especifica el tipo de archivo que se desea visualizar en el control. List Devuelve los elementos contenidos en la parte de lista del control. ListIndex Especifica el índice del elemento seleccionado actualmente en el control. Como ejemplo vamos a desarrollar una aplicación que permita el manejo de unidades, carpetas y archivos. El usuario Pág. 90
  • 91. puede seleccionar la unidad actual de trabajo, la carpeta y el archivo y poder visualizar su contenido (en este caso archivos gráficos *.JPG). Para el desarrollo de la presente aplicación proceda a ubicar los siguientes controles en el formulario: 4 etiquetas 1 cuadro de lista de unidades 1 cuadro de lista de directorios 1 cuadro de lista de archivos 1 imagen En seguida proceda a establecer las propiedades según se indica: Form1 Nombre FrmVisor Caption Visor Pág. 91
  • 92. Label1 Nombre LblUnidad Caption Unidad Label2 Nombre LblCarpeta Caption Carpeta Label3 Nombre LblArchivo Caption Archivo Label4 Nombre LblVista Caption Vista previa Drive1 Nombre Drive1 Dir1 Nombre Dir1 File1 Nombre File1 Pattern *.JPG Image1 Nombre ImgVista Stretch True Seguidamente proceda a ingresar el código que se indica a continuación: Private Sub Drive1_Change() Pág. 92
  • 93. On Error GoTo DRIVE_ERROR Dir1.Path = Drive1.Drive Exit Sub DRIVE_ERROR: MsgBox “ERROR: Unidad no preparada”, vbCritical, “Error” Exit Sub End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub File1_Click() Dim ARCHIVO As String ARCHIVO = File1.Path & “” ARCHIVO = ARCHIVO & File1.List(File1.ListIndex) ImgVista.Picture = LoadPicture(ARCHIVO) End Sub La instrucción On Error activa una rutina de control de errores y especifica la ubicación de la misma en un procedimiento. LA FUNCIÓN MSGBOX A menudo habrá situaciones en las cuales tendrá que presentar algún mensaje (por ejemplo una pregunta) y en función Pág. 93
  • 94. de la respuesta del usuario se ejecutará una determinada acción. La función MsgBox() muestra un cuadro de diálogo predefinido y retorna un valor de tipo entero dependiendo del botón seleccionado por el usuario. Su sintaxis es de la siguiente forma: VALOR = MsgBox(MENSAJE [, BOTÓN + ICONO, TÍTULO]) Donde MENSAJE se refiere a una expresión de cadena que se muestra como mensaje en el cuadro de diálogo. BOTÓN es una expresión numérica que se refiere al tipo y cantidad de botones a utilizar. ICONO es una expresión numérica que se refiere al estilo de icono que se va ha utilizar. TÍTULO es una texto que se mostrará en la barra de título de la caja de diálogo. Tipo de botón Valor Botón Nombre 0 Aceptar vbOKOnly Pág. 94
  • 95. 1 Aceptar y Cancelar vbOKCancel 2 Anular, Reintentar, Ignorar vbAbortRetryIgnore 3 Sí, No y Cancelar vbYesNoCancel 4 Sí y No vbYesNo 5 Reintentar y Cancelar vbRetryCancel Tipo de icono Valor Icono Nombre 16 Mensaje crítico vbCritical 32 Signo de interrogación vbQuestion 48 Signo de exclamación vbExclamation 64 Signo de información vbInformation Valores retornados Valor Botón Nombre 1 Aceptar vbOK 2 Cancelar vbCancel 3 Anular vbAbort 4 Reintentar vbRetry 5 Ignorar vbIgnore 6 Sí vbYes 7 No vbNo Como ejemplo vamos a construir un formulario que presente un botón “Salir”, de tal forma que cuando el usuario pulse dicho botón se presente el siguiente mensaje: Pág. 95
  • 96. En caso de que el usuario elija la opción “Sí”, la aplicación debe terminar. En caso contrario, es decir si el usuario elige la opción “No”, se debe proseguir con la aplicación. Para el desarrollo del presente ejemplo, proceda a ubicar sobre el formulario un botón de comando (CmdSalir), a continuación ingresar el siguiente código: Private Sub CmdSalir_Click() Dim RESP As Integer RESP = MsgBox(“Desea terminar la aplicación?”, _ vbQuestion + vbYesNo, “Pregunta”) If RESP = vbYes Then End End If End Sub Para ilustrar mejor el uso de la función MsgBox() vamos a desarrollar la siguiente aplicación que permite mostrar los diferentes tipos de botones e iconos generados por la función. Pág. 96
  • 97. Para ello proceda a ubicar los siguientes controles en el formulario: 2 cuadros de lista 1 botón de comando En seguida proceda a establecer las propiedades según se indica: Form1 Nombre FrmFuncionMsgBox BorderStyle 3-Fixed Dialog Caption Función MsgBox List1 Nombre LstBoton List2 Nombre LstIcono Command1 Pág. 97
  • 98. Nombre CmdMensaje Caption &Mensaje Seguidamente proceda a ingresar el código que se indica a continuación: Private Sub Form_Load() LstBoton.AddItem “Aceptar” LstBoton.AddItem “Aceptar y Cancelar” LstBoton.AddItem “Anular, Reintentar, Ignorar” LstBoton.AddItem “Sí, No y Cancelar” LstBoton.AddItem “Sí y No” LstBoton.AddItem “Reintentar y Cancelar” LstIcono.AddItem “Mensaje crítico” LstIcono.AddItem “Signo de interrogación” LstIcono.AddItem “Signo de exclamación” LstIcono.AddItem “Signo de información” End Sub Private Sub CmdMensaje_Click() Dim RESP As Integer, BOTON As Integer, ICONO As Integer BOTON = LstBoton.ListIndex ICONO = (LstIcono.ListIndex + 1) * 16 RESP = MsgBox(“Hola Mundo”, BOTON + ICONO, “Ejemplo”) End Sub Pág. 98
  • 99. CAPÍTULO 5 EL FORMULARIO Un formulario es un objeto contenedor que sirve para diseñar la interfaz de usuario. En el formulario se colocan los controles para que el usuario pueda interactuar con la aplicación de una manera fácil e intuitiva. Los formularios tienen sus propias propiedades, eventos y métodos con los que se puede controlar su apariencia y comportamiento, muchos de los cuales ya han sido utilizados en las aplicaciones de los capítulos anteriores y que a continuación pasamos a describir. Pág. 99
  • 100. Propiedad Descripción AutoRedraw Especifica si se activa el redibujado automático del formulario. BackColor Especifica el color de fondo del formulario. BorderStyle Especifica un estilo de borde para el formulario. Caption Especifica el texto que se muestra en la barra de título del formulario. ControlBox Especifica si aparece un icono de menú desplegable en el ángulo superior izquierdo del formulario. ForeColor Especifica el color de primer plano utilizado para mostrar texto sobre el formulario. Height Especifica el alto del formulario. Se mide en “twips”. Icon Especifica el icono que se muestra para un formulario. MaxButton Especifica si el formulario tiene un botón Maximizar. MinButton Especifica si el formulario tiene un botón Minimizar. Picture Especifica el archivo de imagen que se va ha mostrar como fondo para el formulario. StartUpPosition Especifica la posición del formulario la primera vez que se ejecuta. Visible Establece si el formulario es visible o está oculto. Width Especifica el ancho del formulario. Se mide en “twips”. WindowState Establece el estado del formulario (normal, minimizado o maximizado). Pág. 100
  • 101. Nota Un 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 igual a 1/20 de un punto de impresora. Existen aproximadamente 1440 twips en una pulgada o 567 twips en un centímetro. Los eventos a los que responde un formulario son los siguientes: Evento Descripción Activate Ocurre cuando el formulario se convierte en ventana activa. Deactivate Ocurre cuando el formulario deja de ser la ventana activa. Load Ocurre cuando el formulario se carga en la memoria. MouseDown Ocurre cuando el usuario pulsa el botón derecho del ratón sobre el formulario. QueryUnload Ocurre antes de iniciarse el proceso de descarga del formulario (antes del evento Unload). Resize Ocurre cuando se muestra primero el formulario o se cambian sus dimensiones. Unload Ocurre cuando el formulario se descarga de la memoria. Pág. 101
  • 102. Los métodos que se pueden utilizar con un formulario son los siguientes: Método Descripción Hide Oculta un formulario. PopupMenu Presenta un menú popup en la posición actual del ratón. Print Imprime un valor sobre el formulario. Refresh Vuelve a pintar un formulario y actualiza todos los valores contenidos en él. Show Muestra un formulario y determina si es modal o carece de modo. Si el formulario a mostrar no está cargado Visual Basic lo carga automáticamente. Como ejemplo vamos a desarrollar una aplicación que utilice dos formularios. Desde el primer formulario el usuario podrá ir al segundo formulario y viceversa. Pág. 102
  • 103. Para el desarrollo de la presente aplicación proceda a crear un nuevo proyecto. Seguidamente debe ubicar dos botones de comando en el formulario. Luego establezca las siguientes propiedades: Form1 Nombre Form1 Caption Primer formulario Command1 Nombre CmdIr Caption &Ir Command2 Nombre CmdSalir Caption &Salir Seguidamente procede a ingresar el código que se muestra a continuación: Private Sub CmdIr_Click() Form2.Show Form1.Hide End Sub Private Sub CmdSalir_Click() End End Sub Pág. 103
  • 104. Luego debe añadir un formulario adicional al proyecto. Para tal fin, seleccione el menú Proyecto y elija la opción Agregar formulario. Del cuadro de diálogo que se presenta elija el icono Formulario y haga click en el botón “Abrir”, tal como se indica en la figura. En ese instante se añadirá un nuevo formulario al proyecto. Luego, proceda a ubicar un botón de comandos en el formulario que acaba de añadir y establezca las siguientes propiedades: Form2 Nombre Form2 Caption Segundo formulario ControlBox False Pág. 104
  • 105. Command2 Nombre CmdVolver Caption &Volver En seguida proceda a ingresar el código que se indica a continuación: Private Sub CmdVolver_Click() Form1.Show Form2.Hide End Sub ESTILOS DE FORMULARIO Visual Basic cuenta con seis diferentes estilos de formulario, cuya descripción es la siguiente: Valor Estilo Descripción 0 None No presenta ningún borde. 1 Fixed Single Puede incluir un Menú de control, una Barra de título , un botón Maximizar y un botón Minimizar. Sólo puede cambiar de tamaño mediante los botones Maximizar y Minimizar. 2 Sizable (Predeterminado). Puede cambiar de tamaño mediante cualquiera de los elementos opcionales de borde indicados para Fixed Single. Pág. 105
  • 106. Valor Estilo Descripción 3 Fixed Dialog Puede incluir un Menú de control y una Barra de título, pero no los botones Maximizar ni Minimizar. No puede cambiar de tamaño. 4 Fixed ToolWindow Sólo muestra el botón Cerrar y el texto de la barra de título aparece con un tamaño de fuente reducido. No puede cambiar su tamaño. 5 Sizable ToolWindow Sólo muestra el botón Cerrar y el texto de la barra de título aparece con un tamaño de fuente reducido. Puede cambiar de tamaño. Como ejemplo vamos a desarrollar una aplicación que permita representar los diferentes estilos de formulario de Visual Basic. Pág. 106
  • 107. Para el desarrollo de la presente aplicación proceda a crear un nuevo proyecto y luego ubique los siguientes controles en el formulario: 1 cuadro de lista 2 botones de comando Luego debe establecer las propiedades que se indican a continuación: Form1 Nombre FrmPrincipal Caption Estilos de formulario BorderStyle 3-Fixed Dialog List1 Nombre LstTipoForm List 0-None 1-Fixed Single 2-Sizable 3-Fixed Dialog 4-Fixed ToolWindow 5-Sizable ToolWindow Command1 Nombre CmdMostrar Caption &Mostrar Command2 Nombre CmdSalir Caption &Salir Pág. 107
  • 108. Seguidamente procede a ingresar el código que se muestra a continuación: Private Sub Form_Load() Load FrmNone Load FrmFixedSingle Load FrmSizable Load FrmFixedDialog Load FrmFixedToolWindow Load FrmSizableToolWindow End Sub Private Sub CmdMostrar_Click() Dim OP As Integer OP = LstTipoForm.ListIndex Select Case OP Case 0 : FrmNone.Show vbModal Case 1 : FrmFixedSingle.Show vbModal Case 2 : FrmSizable.Show vbModal Case 3 : FrmFixedDialog.Show vbModal Case 4 : FrmFixedToolWindow.Show vbModal Case 5 : FrmSizableToolWindow.Show vbModal Case Else MsgBox “Debe seleccionar estilo de formulario” End Select End Sub Pág. 108
  • 109. Private Sub LstTipoForm_DblClick() Call CmdMostrar_Click End Sub Private Sub CmdSalir_Click() End End Sub Seguidamente proceda a añadir los formularios para las diferentes opciones del cuadro de lista. Cambie los nombres de los formularios según se indica: Formulario Nombre Form2 FrmNone Form3 FrmFixedSingle Form4 FrmSizable Form5 FrmFixedDialog Form6 FrmFixedToolWindow Form7 FrmSizableToolWindow Luego debe activar el formulario FrmNone, ubicar un botón de comandos sobre el mismo y establecer las siguientes propiedades: Form2 Nombre FrmNone BorderStyle 0-None Caption None Pág. 109
  • 110. Command1 Nombre CmdVolver Caption &Volver Una vez establecidas las propiedades, proceda a ingresar el código que se muestra a continuación: Private Sub CmdVolver_Click() Unload Me End Sub Para concluir con el diseño de la aplicación, simplemente repita el procedimiento anterior para los demás tipos de formularios. Como habrá podido observar, al mostrar un formulario mediante el método Show podemos hacerlo de forma modal (vbModal) o no modal (opción por defecto). Un formulario modal es aquel que necesita cerrarse antes de pasar el enfoque a otro formulario. Un formulario no modal no requiere cerrarse para pasar el enfoque a otro formulario. PASANDO VALORES ENTRE FORMULARIOS Muchas veces se requieren pasar valores de un formulario a otro, esto se puede realizar mediante el uso módulos estándar, los cuales son contenedores de procedimientos y declaraciones a los que tienen acceso otros módulos de la aplicación. Pág. 110
  • 111. Como ejemplo vamos a construir la siguiente aplicación, la cual envía un mensaje de texto del primer formulario hacia el segundo formulario. Para el desarrollo de la presente aplicación proceda a crear un nuevo proyecto y añada un formulario adicional, de tal forma que tenga los formularios Form1 y Form2. Seguidamente ubicar los siguientes controles: Form1 Form2 Text1 TxtMensaje1 Text1 TxtMensaje2 Command1 CmdEnviar Command1 CmdRecibir Command2 CmdSalir Command2 CmdVolver A continuación proceda a ingresar el código que se indica para el primer formulario (Form1): Pág. 111
  • 112. Private Sub CmdEnviar_Click() Mensaje = TxtMensaje1 Form1.Hide Form2.Show End Sub Private Sub CmdSalir_Click() End End Sub Para el segundo formulario (Form2) proceda a ingresar el código siguiente: Private Sub CmdRecibir_Click() TxtMensaje2 = Mensaje End Sub Private Sub CmdVolver_Click() Form2.Hide Form1.Show End Sub Seguidamente debe añadir un módulo estándar al proyecto, para ello, seleccione el Menú Proyecto y elija la opción Agregar módulo, se debe presentar un cuadro de diálogo similar a la figura mostrada, en el cual debe dar click en el botón “Abrir”. Pág. 112
  • 113. Seguidamente proceda a declarar la variable Mensaje como “pública” en la sección de declaraciones del módulo que acaba de añadir: Una variable pública (Public) es una variable que se declara a nivel de módulo y se le puede acceder desde cualquier otro módulo. Pág. 113
  • 114. FORMULARIOS MDI Un formulario MDI (Interfaz de Documentos Múltiples) es una ventana que actúa como fondo de una aplicación y es el contenedor (ventana padre) de otros formularios (ventanas hijas). En una aplicación MDI pueden haber varias ventanas hijas, pero sólo una ventana padre por aplicación. Para que una ventana actúe como hija debe tener su propiedad MDIChild establecida a True. Como ejemplo vamos a desarrollar una aplicación MDI que incluya tres ventanas hijas. Para tal fin proceda a crear un nuevo proyecto y seguidamente agregar dos formularios (simples) al mismo. Pág. 114
  • 115. No olvide establecer la propiedad MDIChild de los formularios Form1, Form2 y Form3 a True. Luego, debemos agregar el formulario MDI, para ello acceder al Menú Proyecto y elegir la opción Agregar formulario MDI, del cuadro de diálogo que se presenta hacer click en el botón “Abrir”. A continuación dar doble click sobre el formulario MDI e ingresar el siguiente código: Private Sub MDIForm_Load() Form1.Show Form2.Show Form3.Show End Sub Pág. 115
  • 116. Ahora sólo tiene que indicarle a Visual Basic que el formulario de arranque (inicial) será el formulario MDI. Para ello vaya al Menú Proyecto y elija la opción Propiedades de Proyecto. En el cuadro combinado “Objeto inicial” seleccionar MDIForm1, tal como se indica en la figura: Eso es todo, ahora simplemente tiene que ejecutar su aplicación. Cabe destacar que en los formularios MDI por lo general no se pueden incluir controles, debido a ello se suele trabajar con menús de opciones o barras de herramientas para indicar alguna acción a realizar. Pág. 116
  • 117. CREACIÓN DE MENÚS Un menú es un conjunto de opciones que se presentan al usuario, entre las cuales debe elegir una de ellas. Dependiendo de la decisión se realizarán una serie de acciones. Para diseñar un menú cualquiera dar click derecho sobre el formulario y del menú emergente que se presenta elegir la opción Editor de menús. Pág. 117
  • 118. En seguida se ha de presentar el Editor de menús de Visual Basic. Para crear un menú, tener en cuenta los siguiente procedimientos: • Ingresar el Editor de menús. • Introducir el título del menú en el cuadro de texto Caption, el cual aparecerá en la barra de menús. • Introducir un nombre para el menú en el cuadro de texto Name, el cual será utilizado en el código para referirse al menú. • Introducir los elementos que componen el menú, para ello escriba en los cuadros de texto Caption y Name el título y el nombre del correspondiente elemento del menú. Pág. 118
  • 119. • Para diferenciar un elemento del menú del propio menú, hay que sangrar el título del elemento, para tal fin, selecciónelo y haga click en el botón flecha hacia la derecha ( ). • Un elemento de menú puede ser una orden (si el elemento siguiente aparece sangrado al mismo nivel) o un submenú (si el elemento siguiente aparece sangrado un nivel más). • Utilizando separadores puede agrupar las órdenes en función de lo que realizan. Para insertar un separador, escriba un único guión (-) en el cuadro Caption del Editor de menús. Tiene que especificar también un nombre para el separador. • Para añadir un acelerador (una tecla o combinación de teclas que permiten activar un menú), utilizar la propiedad Shortcut. • La propiedad Checked es útil para indicar si una orden está activa o no lo está. Cuando se especifica esta propiedad aparece una marca (3) a la izquierda del elemento de menú. • La propiedad Enabled es útil para desactivar una orden en un momento en el cual no tiene sentido que esté activa. • La propiedad Visible es útil cuando durante la ejecución se desea ocultar un elemento de menú. • Cerrar el Editor de menús, para ello una vez que haya finalizado su diseño pulse el botón “Aceptar”. Pág. 119
  • 120. Como ejercicio intente construir el menú mostrado en la figura anterior. Caption Name ShortCut &Archivo MnuArchivo Ninguno . . . &Artículo MnuArchivoArticulo Ninguno . . . &Cliente MnuArchivoCliente Ninguno . . . &Vendedor MnuArchivoVendedor Ninguno . . . - MnuArchivoLinea Ninguno . . . &Salir MnuArchivoSalir Ctrl + X &Proceso MnuProceso Ninguno . . . &Pedido MnuProcesoPedido Ninguno . . . &Facturación MnuProcesoFacturacion Ninguno &Reporte MnuReporte Ninguno . . . &Registro de ventas MnuReporteRegVentas Ninguno . . . Catálogo de &artículos Ninguno . . . - MnuReporteLinea Ninguno . . . &Cliente del mes MnuReporteClienteMes Ninguno . . . &Vendedor del mes MnuReporteVendMes Ninguno Ay&uda MnuAyuda Ninguno . . . &Contenido MnuAyudaContenido Ninguno . . . &Indice MnuAyudaIndice Ninguno . . . &Búsqueda MnuAyudaBusqueda Ninguno . . . - MnuAyudaLinea Ninguno . . . &Acerca de MnuAyudaAbout Ninguno Pág. 120
  • 121. Para probar el menú que acaba de crear, ingrese el siguiente código: Private Sub MnuArchivoArticulo_Click() MsgBox “Seleccionó la opción Artículo” End Sub Private Sub MnuArchivoCliente_Click() MsgBox “Seleccionó la opción Cliente” End Sub Private Sub MnuArchivoVendedor_Click() MsgBox “Seleccionó la opción Vendedor” End Sub Private Sub MnuArchivoSalir_Click() Unload Me End Sub Private Sub MDIForm_Unload(Cancel As Integer) Dim RESP As Integer RESP = MsgBox(“¿Desea terminar la aplicación?”, _ vbQuestion + vbYesNo, “Pregunta”) If RESP = vbYes Then End Else: Cancel = True End If End Sub Pág. 121
  • 122. Luego al ejecutar su aplicación y seleccionar el menú Archivo, opción Artículo, el resultado será similar a la figura mostrada: Hasta ahora hemos programado la salida de una aplicación, asociando el código al botón “Salir”. Sin embargo, cuando el usuario hace click en el botón “Cerrar” de la barra de título o en la opción “Salir” del Menú de control del formulario, el código escrito para el botón “Salir” es ignorado. Para remediar esta situación, en el ejemplo anterior cuando el usuario pulsa el botón “Salir”, se invoca al evento Unload. La palabra reservada “Me” proporciona una forma de referirse al formulario desde donde se está ejecutando el código. Recordar que el evento Unload del formulario se desencadena cuando el usuario intenta cerrar el formulario mediante cualquiera de las formas descritas anteriormente. Para determinar si ocurre la descarga del formulario utilice el parámetro Cancel. Si Cancel es False ocurre la descarga, si Cancel es True impide que el formulario se quite. CREACIÓN DE UNA BARRA DE HERRAMIENTAS Pág. 122
  • 123. Una barra de herramientas contiene botones con las opciones más utilizadas de un menú, de tal manera que el usuario haciendo click en dicho control activaría la opción indicada de una manera más rápida. Para crear una barra de herramientas debemos utilizar dos controles que no están en la lista de controles estándar, por tanto debemos agregar dichos controles que se encuentran en el componente Microsoft Windows Common Controls 6.0, tal como se indica a continuación: Pág. 123
  • 124. Como ejemplo, vamos a crear la barra de herramientas de la figura mostrada: Para ello, ubicar un control ImageList sobre el formulario, para establecer sus propiedades dar click derecho sobre el control y elija la opción Propiedades. Pág. 124
  • 125. Se ha de presentar un cuadro de diálogo similar a la figura mostrada: Activar la ficha Imágenes y pulsar el botón “Insertar imagen” para seleccionar las imágenes que se incluirán en el control ImageList. Para el ejemplo, debe incluir ocho imágenes que corresponden a cada uno de los botones de la barra de herramientas. Concluido el proceso anterior, proceda a ubicar un control Toolbar sobre el formulario. Luego hacer click derecho sobre dicho control y del menú emergente que se presenta seleccionar la opción Propiedades. Del cuadro de diálogo que se presenta en la ficha General establecer las siguientes propiedades: Pág. 125
  • 126. Luego, en la ficha Botones pulse el botón “Insertar botón”. En el cuadro de texto Image se debe indicar un número que corresponde al orden de imagen a mostrar. Pág. 126
  • 127. El lector debe continuar con este proceso hasta completar los botones restantes, según: Index ToolTipText Image 1 Artículo 1 2 Cliente 2 3 Vendedor 3 4 Pedido 4 5 Facturación 5 6 Registro de ventas 6 7 Catálogo de artículos 7 8 Ayuda 8 Como el código a ejecutar tiene que ser el mismo cuando el usuario elija una opción del menú o de un click sobre un botón de la barra de herramientas se pueden programar procedimientos de usuario que realicen dichas tareas, luego se deben invocar a estos procedimientos tanto para las opciones del menú como para la barra de herramientas. Sin embargo, para el ejemplo el código es muy sencillo, ya que sólo muestra un mensaje con la opción seleccionada (esto por razones de simplicidad). Para probar la funcionalidad de la barra de herramientas que acaba de crear ingrese el siguiente código: Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Pág. 127
  • 128. Select Case Button.Index Case 1: MsgBox “Seleccionó la opción Artículo” Case 2: MsgBox “Seleccionó la opción Cliente” Case 3: MsgBox “Seleccionó la opción Vendedor” Case 4: MsgBox “Seleccionó la opción Pedido” Case 5: MsgBox “Seleccionó la opción Facturación” Case 6: MsgBox “Seleccionó la opción Registro de ventas” Case 7: MsgBox “Seleccionó opción Catálogo de artículos” Case 8: MsgBox “Seleccionó la opción Ayuda” End Select End Sub El evento ButtonClick se dispara cuando el usuario hace click sobre un botón de la barra de herramientas. La propiedad Index permite identificar el número de botón pulsado. CREACIÓN DE UNA BARRA DE ESTADO Una barra de estado es un marco que se ubica en la parte inferior del formulario y puede contener varios paneles que informan al usuario acerca del estado de la aplicación. Para crear una barra de estado utilizar el control StatusBar, el cual forma de los controles personalizados que se encuentran en el componente Microsoft Windows Common Controls 6.0. Como ejemplo vamos a crear una barra de estado similar a la de la figura mostrada: Pág. 128
  • 129. Para ello ubicar un control StatusBar sobre el formulario, dar click derecho sobre el mismo y en la ficha Paneles incluir una imagen para la hora del sistema. Pág. 129
  • 130. El resto de propiedades se establecerán mediante código al momento de la carga del formulario. Private Sub MDIForm_Load() Dim I As Integer For I = 1 To 2 StatusBar1.Panels.Add ' Se agregan 2 paneles más Next With StatusBar1.Panels .Item(1).Style = sbrTime .Item(2).Style = sbrCaps .Item(3).Style = sbrIns End With End Sub La propiedad Style permite mostrar el estado de las teclas, la hora y la fecha del sistema con un mínimo de código. Constante Valor Descripción sbrText 0 (Predeterminado). Texto o mapa de bits. sbrCaps 1 Tecla BLOQ MAYÚS. sbrNum 2 Tecla BLOQ NÚM. sbrIns 3 Tecla INS. sbrScrl 4 Tecla BLOQ DESPL. sbrTime 5 Muestra la hora actual con el formato del sistema. sbrDate 6 Muestra la fecha actual con el formato del sistema. Pág. 130
  • 131. CREACIÓN DE UN MENÚ CONTEXTUAL Un menú contextual es un menú emergente (flotante) que se muestra sobre un formulario, independiente de la barra de menús. Para mostrar un menú contextual el usuario debe pulsar el botón derecho del ratón sobre el formulario. A menudo querrá usar un menú contextual para tener acceso a opciones que no se encuentran disponibles en la barra de menús. Para crear un menú que no se presente en la barra de menús, haga invisible un elemento de menú de nivel superior en tiempo de diseño (asegúrese de que la casilla de verificación Visible del Editor de menús no esté activada). Cuando Visual Basic presenta un menú emergente, pasa por alto la propiedad Visible del menú de nivel superior especificado. Pág. 131
  • 132. Para crear el menú contextual de la figura, debe ingresar al Editor de menús y añadir lo siguiente: Caption Name Visible &Herramientas MnuTools . . . Calculadora MnuToolsCalc 3 . . . Calendario MnuToolsCalen 3 . . . Solitario MnuToolsSol 3 Seguidamente proceda a ingresar el código que se indica a continuación: Private Sub MDIForm_MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Single) If Button = vbRightButton Then PopupMenu MnuTools End If End Sub Private Sub MnuToolsCalc_Click() Dim I I = Shell(“C:WINDOWSCALC.EXE”, 1) End Sub Private Sub MnuToolsCalen_Click() FrmCalendario.Show Pág. 132 End Sub
  • 133. Private Sub MnuToolsSol_Click() Dim I I = Shell(“C:WINDOWSSOL.EXE”, 1) End Sub En el ejemplo anterior se asume que existe otro formulario de nombre FrmCalendario. Este puede ser construido usando el control MonthView. La función Shell ejecuta un programa ejecutable y devuelve un tipo Variant (Double) que representa la identificación de la tarea del programa si se ha ejecutado con éxito, en caso contrario devuelve cero. Pág. 133
  • 134. CAPÍTULO 6 CONTROLES ACTIVEX Los controles ActiveX son objetos que no forman parte del conjunto de controles estándar de Visual Basic, sino más bien han sido desarrollados por terceras personas. Los controles ActiveX existen como archivos independientes con extensión .OCX y deben ser cargados antes de utilizarse. Para ello ingresar al Menú Proyecto y elija la opción Componentes. Pág. 134
  • 135. CONTROL ANIMATION El control Animation permite reproducir archivos de extensión .AVI que no tengan sonido para crear animaciones. Para agregar este control debe seleccionar el componente Microsoft Windows Common Controls-2 6.0. Propiedad Descripción AutoPlay Especifica si el archivo AVI se reproducirá automáticamente al cargarse el control. Método Descripción Close Cierra el archivo AVI abierto actualmente. Open Permite abrir el archivo AVI. Play Reproduce el archivo AVI en el control Animation. Stop Termina la reproducción del archivo AVI. Como ejemplo vamos a desarrollar un formulario que permita reproducir un archivo AVI, tal como se muestra en la figura: Pág. 135
  • 136. Para ello crear un nuevo formulario y agregar un control Animation (Animation1) y dos botones de comando (CmdIniciar y CmdTerminar, respectivamente). Luego ingrese el código que se muestra: Private Sub CmdIniciar_Click() Dim RUTA As String RUTA = “C:Archivos de programaMicrosoft Visual Studio” RUTA = RUTA & “CommonGraphicsVideosFilenuke.avi” Animation1.Open (RUTA) Animation1.Play End Sub Private Sub CmdTerminar_Click() Animation1.Close End End Sub CONTROL COMMONDIALOG El control CommonDialog proporciona un conjunto de cuadros de diálogo estándar que permiten realizar las operaciones más comúnmente empleadas en el diseño de aplicaciones, como abrir y guardar archivos, seleccionar colores y fuentes, imprimir, etc. Para agregar este control seleccionar el componente Microsoft Common Dialog Control 6.0. Pág. 136
  • 137. Propiedad Descripción Color Especifica el color seleccionado. FileName Especifica la ruta y nombre del archivo seleccionado. Filter Especifica el tipo de archivos que se han de mostrar en un cuadro de diálogo Abrir o Guardar como. FilterIndex Especifica el filtro predeterminado para un cuadro de diálogo Abrir o Guardar como, en caso se esté utilizando varios filtros. Método Descripción ShowColor Presenta la paleta de colores. ShowFont Presenta el cuadro de diálogo Fuentes. ShowHelp Presenta la ayuda de Windows. ShowOpen Presenta el cuadro de diálogo Abrir. ShowPrinter Presenta el cuadro de diálogo Imprimir. ShowSave Presenta el cuadro de diálogo Guardar como. Como ejemplo vamos a desarrollar una aplicación que permite cambiar el color de fondo de un formulario en tiempo de ejecución. Para ello el usuario debe dar click en el botón “Cambiar color” y en seguida se presentará la paleta de colores de donde debe elegir el color deseado, tal como se muestra en la figura siguiente: Pág. 137
  • 138. Para ello crear un nuevo formulario, agregarle un botón de comando (CmdCambiarColor) y un control CommonDialog. Luego ingresar el siguiente código: Private Sub CmdCambiarColor_Click() CommonDialog1.ShowColor Form1.BackColor = CommonDialog1.Color End Sub Como siguiente ejemplo vamos a desarrollar una aplicación que permita mostrar el contenido de un archivo JPG. Este deberá ser seleccionado por el usuario de un cuadro de diálogo Abrir, tal como se indica en la figura: Pág. 138
  • 139. Al hacer click en el botón “Abrir”, el archivo seleccionado debe ser mostrado en el formulario: Para el diseño de esta aplicación crear un nuevo formulario y ubicar un botón de comando (CmdAbrirArchivo), un control imagen y un control CommonDialog. Pág. 139