CAPÍTULO 1
FUNDAMENTOS
Microsoft Visual Basic es un conjunto de herramientas que
posibilitan el desarrollo de aplicaciones...
aplicaciones Windows. El lenguaje de programación Visual Basic
Script para programar en Internet es un subconjunto del
len...
En la ventana anterior indicar el tipo de proyecto que
desea crear (para nuestro caso seleccionar EXE estándar) y dar
clic...
Presenta las órdenes que se utilizan para desarrollar una
aplicación. Las opciones más utilizadas son: Archivo, Edición,
V...
Icono Descripción
Puntero
Cuadro de imagen
Etiqueta
Cuadro de texto
Marco
Botón de comando
Casilla de verificación
Botón d...
Para utilizar algún objeto simplemente debe hacer doble
click sobre el icono correspondiente, luego puede cambiar su
posic...
Ventana de propiedades
Como veremos más adelante, cada objeto lleva asociado un
conjunto de propiedades. Para ver o especi...
Es un menú emergente que presenta órdenes específicas
relativas a un determinado objeto. Para abrir un menú
contextual, da...
MI PRIMERA APLICACIÓN
Hay tres pasos principales para crear una aplicación en
Visual Basic:
• Crear la interfaz.
• Estable...
La apariencia de la interfaz debe ser similar a la figura
mostrada:
Estableciendo las propiedades
Para ver las propiedades...
Puede cambiar el valor de cualquier propiedad
seleccionándolo de la ventana anterior y simplemente
modificando su valor, p...
Escribiendo el código
Para ingresar el código a la aplicación debe dar doble
click sobre el control al cual asociaremos di...
CAPÍTULO 2
LOS OBJETOS
Visual Basic se basa en la programación orientada a
objetos (POO), la cual es una forma de programa...
Objetos
Un objeto es una entidad que tiene atributos particulares
(propiedades) y unas formas de operar sobre ellos (métod...
Mensajes
Un mensaje es una llamada a un método (procedimiento), de
tal forma que cuando un objeto recibe un mensaje la res...
Abstracción
La abstracción permite no detenernos en los detalles
concretos del funcionamiento de las cosas, sino centrarno...
aquellas características que son específicas suyas. El usuario
de Visual Basic no dispone de esta característica.
Polimorf...
verificación, botones de opción, cuadros de lista, cuadros
combinados, etc.
Los contenedores son objetos que pueden inclui...
Para aclarar este concepto desarrollaremos la siguiente
aplicación, la cual consiste en un formulario, un cuadro de
texto ...
La convención a seguir en la presente guía - para dar
nombre a los objetos - consiste en utilizar ciertos prefijos,
los cu...
Gra Gráfico
Ctr Control (se utiliza en procedimientos cuando
el tipo de control es desconocido)
CAPÍTULO 3
EL LENGUAJE
Vis...
descripciones, fechas, etc. Cada dato corresponde a un
determinado tipo, es decir, pertenece a una categoría de datos
que ...
bytes + 1 byte por
carácter
IDENTIFICADORES
Los identificadores son nombres dados a los elementos de
una aplicación, tales...
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
val...
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
Var...
* / Multiplicación y división
 División entera
Mod Resto de una división entera
+ - Suma y resta
Operadores relacionales
O...
Operadores de cadenas de caracteres
Operador Significado
& Concatenación
Like Compara dos cadenas de caracteres
SENTENCIAS...
Otra posibilidad de proporcionar datos o de visualizarlos
durante la ejecución de una aplicación es utilizando cajas de
di...
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 de...
Salida de datos
La salida de datos generalmente consiste en tomar la
información de la memoria y mostrarla en pantalla. Pa...
Para que pueda ejecutar el código anterior, proceda a
crear una nueva aplicación y haga doble click sobre el
formulario, l...
If CONDICIÓN Then
SENTENCIAS_VERDADERAS
Else
SENTENCIAS_FALSAS
End If
Si CONDICIÓN es verdadera se ejecuta el grupo de
SEN...
SENTENCIAS_1
ElseIf CONDICIÓN_2 Then
SENTENCIAS_2
.
.
.
Else
SENTENCIAS_FALSAS
End If
Si CONDICIÓN_1 es verdadera se ejecu...
ElseIf N = 6 Then : MsgBox “Junio”
ElseIf N = 7 Then : MsgBox “Julio”
ElseIf N = 8 Then : MsgBox “Agosto”
ElseIf N = 9 The...
En este caso se comprueba el valor de EXPRESIÓN_TEST
frente a la lista expresiones EXPRESIÓN_1, EXPRESIÓN_2, . . . y
así s...
Case 10 : MsgBox “Octubre”
Case 11 : MsgBox “Noviembre”
Case 12 : MsgBox “Diciembre”
Case Else
MsgBox “Error de datos”
End...
ser conocido de antemano. Su sintaxis es la que se presenta a
continuación:
For CONTADOR = INICIO To FINAL [Step INCREMENT...
del bucle se repite mientras se cumple una determinada
condición. Su sintaxis es la siguiente:
While CONDICIÓN
SENTENCIAS_...
condición puede ser verificada antes o después de ejecutarse el
cuerpo del bucle. Su sintaxis es:
Formato 1: Do [While/Unt...
MsgBox “El factorial de ” & Str(N) & “ es=” & Str(FACT)
Sentencia GoTo
Transfiere el control a una línea específica de cód...
Un uso abusivo de la sentencia GoTo da lugar a códigos
difíciles de interpretar y de mantener. Por ello, se recomienda
su ...
Donde DIMENSIONES es una lista de números, separados por
comas y que definen las dimensiones del arreglo. Esta lista
puede...
numeración comience en 1, debe ingresar la siguiente orden en
la sección de Declaraciones del módulo de formulario:
Luego,...
ReDim NOMBRE_ARREGLO(NÚMERO_ELEMENTOS)
Cada vez que se ejecuta la sentencia ReDim, todos los
valores almacenados en el arr...
REGISTROS
Un registro es un nuevo tipo de dato, que se define como
una colección de datos de diferentes tipos, conocidos c...
Para referirse a un determinado miembro del registro se
utiliza el operador selector de campos ( . ), veamos:
X.ID_ALUMNO ...
Una función es un procedimiento que cuando se ejecuta
devuelve un único resultado al procedimiento que la invocó. La
sinta...
La sintaxis para la llamada a una función es de la
siguiente forma:
VARIABLE = NOMBRE_FUNCIÓN([LISTA_ARGUMENTOS])
Donde LI...
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 d...
RAIZ = True ' Verdadero si hay raíces reales
Else
RAIZ = False ' Falso si no hay raíces reales
End If
End Function
La llam...
palabra reservada ByVal a la declaración del parámetro en la
cabecera de la función. Por ejemplo:
Function F(ByVal X As Do...
SENTENCIAS
[Exit Sub]
End Sub
La explicación es análoga a la dada para las funciones.
Sin embargo, un procedimiento no pue...
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)
...
CAPÍTULO 4
USO DE LOS CONTROLES
Los controles son aquellos objetos que se encuentran
dentro de un contenedor y que permite...
CONTROLES BÁSICOS
Los controles básicos lo conforman las etiquetas, cuadros
de texto y botones de comando, debido a que cu...
Cuadro de texto
Un cuadro de texto es un control en el que el usuario
pueda ingresar datos desde el teclado o visualizar u...
Los eventos asociados a un cuadro de texto son los
siguientes:
Evento Descripción
Change Ocurre cuando se cambia el conten...
Los botones de comando suelen responder al evento Click,
cuya descripción es:
Evento Descripción
Click Ocurre cuando el us...
6 cajas de texto
3 botones de comando
Una vez ubicados los controles, establezca las propiedades
según se indica:
Form1
No...
Nombre LblB100
AutoSize True
Caption Billetes de S/. 100
Label6
Nombre LblB200
AutoSize True
Caption Billetes de S/. 200
T...
Nombre CmdAceptar
Caption &Aceptar
Command2
Nombre CmdLimpiar
Caption &Limpiar
Command3
Nombre CmdSalir
Caption &Salir
Par...
MsgBox “Cantidad a retirar debe ser múltiplo de 10”
TxtCantidad = “”
TxtCantidad.SetFocus
End If
End Sub
Luego, haga doble...
En el código anterior hemos utilizado el método SetFocus
para enfocar la caja de texto TxtCantidad, esto es, para
posicion...
las cuales el usuario puede seleccionar todas las que desee a
la vez.
Propiedad Descripción
Caption Muestra un título para...
A manera de ejemplo vamos a desarrollar la siguiente
aplicación, la cual permite cambiar el aspecto de un cuadro de
texto,...
Una vez ubicados los controles, establezca las propiedades
según se indica:
Form1
Nombre FrmEditor
BorderStyle 3-Fixed Dia...
Option3
Nombre OptAzul
Caption Azul
ForeColor &H00C00000&
Check1
Nombre ChkNegrita
Caption Negrita
Font Arial (Negrita)
Ch...
Private Sub OptVerde_Click()
If OptVerde.Value Then
TxtMensaje.ForeColor = RGB(0, 255, 0)
End If
End Sub
Private Sub OptAz...
Private Sub ChkSubrayado_Click()
If ChkSubrayado.Value Then
TxtMensaje.Font.Underline = True
Else
TxtMensaje.Font.Underlin...
Cuadro de lista
Un cuadro de lista es un control que presenta una lista de
elementos en la que el usuario puede selecciona...
Los métodos que se pueden utilizar para un cuadro de lista
son los siguientes:
Método Descripción
AddItem Agrega un nuevo ...
Como ejemplo del uso de listas vamos a desarrollar una
aplicación que permita ingresar el nombre de un curso, el cual
pasa...
En seguida proceda a establecer las propiedades según se
indica:
Form1
Nombre FrmCursos
BorderStyle 3-Fixed Dialog
Caption...
Command1
Nombre CmdAgregar
Caption
Picture C:FundVBBitmapsAddItem.Bmp
Style 1-Graphical
Command2
Nombre CmdAgregarTodo
Cap...
LstSeleccionar.AddItem TxtCurso
TxtCurso = “”
TxtCurso.SetFocus
End Sub
Private Sub CmdAgregar_Click()
Dim CURSO As String...
For I = 0 To LstSeleccionar.ListCount - 1
LstProgramado.AddItem LstSeleccionar.List(I)
Next
LstSeleccionar.Clear
End Sub
P...
Para el desarrollo de la presente aplicación proceda a
ubicar los siguientes controles en el formulario:
1 etiqueta
1 cuad...
Label1
Nombre LblCursos
Caption Cursos:
Text1
Nombre TxtCurso
MultiLine True
ScrollBars 2-Vertical
Text
Combo1
Nombre CboC...
Matriz(0, 0) = “Castillo Peralta, Carlos”
Matriz(1, 0) = “Castillo Peralta, Carlos”
Matriz(2, 0) = “Linares Alarcon, Adams...
Private Sub CboCursos_Click()
Dim P_TEORIA As String, H_TEORIA As String
Dim P_LAB As String, H_LAB As String
P_TEORIA = “...
Cronómetro
Un cronómetro sirve para controlar el tiempo transcurrido
desde el inicio de una acción.
Propiedad Descripción
...
Para el desarrollo de la presente aplicación proceda a
ubicar los siguientes controles sobre el formulario:
1 etiqueta
1 c...
Seguidamente proceda a ingresar el código que se indica a
continuación:
Private Sub Form_Activate()
TxtHora = Time()
End S...
El evento que suele manejarse para este control es
MouseMove, cuya descripción es:
Evento Descripción
MouseMove Ocurre cua...
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
cua...
Una barra de desplazamiento vertical representa un valor
entero, la cual tiene un cuadrado que se desplaza a lo largo de
l...
3 barras de desplazamiento horizontal
1 cuadro de imagen
En seguida proceda a establecer las propiedades según se
indica:
...
Nombre HSVerde
LargeChange 10
Max 255
Min 0
SmallChange 1
Value 0
HScroll3
Nombre HSAzul
LargeChange 10
Max 255
Min 0
Smal...
PicFondo.BackColor = RGB(HSRojo, HSVerde, HSAzul)
End Sub
En el código anterior se debió colocar HSRojo.Value,
HSVerde.Val...
Un cuadro de lista de directorios muestra directorios y
rutas de acceso en tiempo de ejecución. Utilice este control
para ...
puede seleccionar la unidad actual de trabajo, la carpeta y el
archivo y poder visualizar su contenido (en este caso archi...
Label1
Nombre LblUnidad
Caption Unidad
Label2
Nombre LblCarpeta
Caption Carpeta
Label3
Nombre LblArchivo
Caption Archivo
L...
On Error GoTo DRIVE_ERROR
Dir1.Path = Drive1.Drive
Exit Sub
DRIVE_ERROR:
MsgBox “ERROR: Unidad no preparada”, vbCritical, ...
de la respuesta del usuario se ejecutará una determinada
acción.
La función MsgBox() muestra un cuadro de diálogo
predefin...
1 Aceptar y Cancelar vbOKCancel
2 Anular, Reintentar, Ignorar vbAbortRetryIgnore
3 Sí, No y Cancelar vbYesNoCancel
4 Sí y ...
En caso de que el usuario elija la opción “Sí”, la
aplicación debe terminar. En caso contrario, es decir si el
usuario eli...
Para ello proceda a ubicar los siguientes controles en el
formulario:
2 cuadros de lista
1 botón de comando
En seguida pro...
Nombre CmdMensaje
Caption &Mensaje
Seguidamente proceda a ingresar el código que se indica a
continuación:
Private Sub For...
CAPÍTULO 5
EL FORMULARIO
Un formulario es un objeto contenedor que sirve para
diseñar la interfaz de usuario. En el formul...
Propiedad Descripción
AutoRedraw Especifica si se activa el redibujado
automático del formulario.
BackColor Especifica el ...
Nota
Un twip es una unidad independiente de la pantalla
utilizada para asegurar que la colocación y la proporción de
los e...
Los métodos que se pueden utilizar con un formulario son
los siguientes:
Método Descripción
Hide Oculta un formulario.
Pop...
Para el desarrollo de la presente aplicación proceda a
crear un nuevo proyecto. Seguidamente debe ubicar dos botones
de co...
Luego debe añadir un formulario adicional al proyecto.
Para tal fin, seleccione el menú Proyecto y elija la opción
Agregar...
Command2
Nombre CmdVolver
Caption &Volver
En seguida proceda a ingresar el código que se indica a
continuación:
Private Su...
Valor Estilo Descripción
3 Fixed Dialog Puede incluir un Menú de control y
una Barra de título, pero no los
botones Maximi...
Para el desarrollo de la presente aplicación proceda a
crear un nuevo proyecto y luego ubique los siguientes controles
en ...
Seguidamente procede a ingresar el código que se muestra a
continuación:
Private Sub Form_Load()
Load FrmNone
Load FrmFixe...
Private Sub LstTipoForm_DblClick()
Call CmdMostrar_Click
End Sub
Private Sub CmdSalir_Click()
End
End Sub
Seguidamente pro...
Command1
Nombre CmdVolver
Caption &Volver
Una vez establecidas las propiedades, proceda a ingresar
el código que se muestr...
Como ejemplo vamos a construir la siguiente aplicación, la
cual envía un mensaje de texto del primer formulario hacia el
s...
Private Sub CmdEnviar_Click()
Mensaje = TxtMensaje1
Form1.Hide
Form2.Show
End Sub
Private Sub CmdSalir_Click()
End
End Sub...
Seguidamente proceda a declarar la variable Mensaje como
“pública” en la sección de declaraciones del módulo que acaba
de ...
FORMULARIOS MDI
Un formulario MDI (Interfaz de Documentos Múltiples) es
una ventana que actúa como fondo de una aplicación...
No olvide establecer la propiedad MDIChild de los
formularios Form1, Form2 y Form3 a True.
Luego, debemos agregar el formu...
Ahora sólo tiene que indicarle a Visual Basic que el
formulario de arranque (inicial) será el formulario MDI. Para
ello va...
CREACIÓN DE MENÚS
Un menú es un conjunto de opciones que se presentan al
usuario, entre las cuales debe elegir una de ella...
En seguida se ha de presentar el Editor de menús de Visual
Basic.
Para crear un menú, tener en cuenta los siguiente
proced...
• Para diferenciar un elemento del menú del propio menú, hay
que sangrar el título del elemento, para tal fin,
selecciónel...
Como ejercicio intente construir el menú mostrado en la
figura anterior.
Caption Name ShortCut
&Archivo MnuArchivo Ninguno...
Para probar el menú que acaba de crear, ingrese el
siguiente código:
Private Sub MnuArchivoArticulo_Click()
MsgBox “Selecc...
Luego al ejecutar su aplicación y seleccionar el menú
Archivo, opción Artículo, el resultado será similar a la figura
most...
Una barra de herramientas contiene botones con las
opciones más utilizadas de un menú, de tal manera que el
usuario hacien...
Como ejemplo, vamos a crear la barra de herramientas de la
figura mostrada:
Para ello, ubicar un control ImageList sobre e...
Se ha de presentar un cuadro de diálogo similar a la
figura mostrada:
Activar la ficha Imágenes y pulsar el botón “Inserta...
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 corr...
El lector debe continuar con este proceso hasta completar
los botones restantes, según:
Index ToolTipText Image
1 Artículo...
Select Case Button.Index
Case 1: MsgBox “Seleccionó la opción Artículo”
Case 2: MsgBox “Seleccionó la opción Cliente”
Case...
Para ello ubicar un control StatusBar sobre el formulario,
dar click derecho sobre el mismo y en la ficha Paneles incluir
...
El resto de propiedades se establecerán mediante código al
momento de la carga del formulario.
Private Sub MDIForm_Load()
...
CREACIÓN DE UN MENÚ CONTEXTUAL
Un menú contextual es un menú emergente (flotante) que se
muestra sobre un formulario, inde...
Para crear el menú contextual de la figura, debe ingresar
al Editor de menús y añadir lo siguiente:
Caption Name Visible
&...
Private Sub MnuToolsSol_Click()
Dim I
I = Shell(“C:WINDOWSSOL.EXE”, 1)
End Sub
En el ejemplo anterior se asume que existe ...
CAPÍTULO 6
CONTROLES ACTIVEX
Los controles ActiveX son objetos que no forman parte del
conjunto de controles estándar de V...
CONTROL ANIMATION
El control Animation permite reproducir archivos de
extensión .AVI que no tengan sonido para crear anima...
Para ello crear un nuevo formulario y agregar un control
Animation (Animation1) y dos botones de comando (CmdIniciar y
Cmd...
Propiedad Descripción
Color Especifica el color seleccionado.
FileName Especifica la ruta y nombre del archivo
seleccionad...
Para ello crear un nuevo formulario, agregarle un botón de
comando (CmdCambiarColor) y un control CommonDialog. Luego
ingr...
Al hacer click en el botón “Abrir”, el archivo
seleccionado debe ser mostrado en el formulario:
Para el diseño de esta apl...
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Visual basic 0.6 rivera & g
Upcoming SlideShare
Loading in …5
×

Visual basic 0.6 rivera & g

2,041 views
1,996 views

Published on

Mis Paginas Web :
Mi web Principal" Rivera & G ":
Descarga la biblia de java y manual de windows 8.

http://riverasn.p.ht/

Mi web Company.Rivera&G :
Descarga mis Aplicaciones y Proyectos en visual basic 2012 ,java,C#,PHP,HTML,JavaScript
http://santosrl.p.ht/

Mi web "El Hacker 2013":
Descarga el manual de visual basic 2010 y visual basic 6.0 portable a full
http://riverayg.zz.mu/

Mi facebook:
https://www.facebook.com/PatrickNilsd...

Mi grupo de programadores :
https://www.facebook.com/groups/39860...

Mi grupo de soporte tecnico PC :
https://www.facebook.com/groups/14517...

Mi web JIMBO:
http://riverasn.jimdo.com/

Mi twitter.com:
https://twitter.com/RIVERALUJANSANT

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,041
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Visual basic 0.6 rivera & g

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

×