Professional Documents
Culture Documents
FUNDAMENTOS
Microsoft Visual Basic es un conjunto de herramientas que posibilitan el desarrollo de aplicaciones para Windows de una manera rpida y sencilla, basado en el lenguaje BASIC y en la programacin orientada a objetos. La palabra Visual hace referencia al mtodo que se
utiliza para crear la interfaz grfica de usuario. En lugar de escribir numerosas lneas de cdigo para implementar la
interfaz, simplemente se utiliza el ratn 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 ms programadores que ningn otro lenguaje en la historia de la informtica. Visual Basic ha evolucionado a
partir del lenguaje BASIC original y ahora contiene centenares de instrucciones, funciones y palabras clave, muchas de las cuales estn directamente relacionadas con la interfaz grfica de Windows. El lenguaje de programacin Visual Basic no es exclusivo de Microsoft Visual Basic. Este lenguaje es utilizado tambin por Microsoft Excel, Microsoft Access y muchas Pg. 1 otras
aplicaciones Windows. El lenguaje de programacin Visual Basic Script para programar en Internet es un subconjunto del
lenguaje Visual Basic. De tal forma, que la inversin realizada en el aprendizaje de Visual Basic le ayudar a abarcar estas otras reas.
proceda igual que con cualquier otra aplicacin Windows: hacer click en el icono correspondiente. En seguida se presentar una ventana similar a la figura siguiente:
Pg. 2
En la ventana anterior indicar el tipo de proyecto que desea crear (para nuestro caso seleccionar EXE estndar) y dar click sobre el botn 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 mens Cuadro de herramientas Explorador de proyectos Posicin del formulario Barra de mens Pg. 3 Barra de herramientas Diseador de formularios Ventana de propiedades Mens contextuales
Presenta las rdenes que se utilizan para desarrollar una aplicacin. Las opciones ms utilizadas son: Archivo, Edicin, Ver, Ventana y Ayuda. Se proporcionan otros mens para tener acceso a funciones especficas de programacin como Proyecto, Formato o Depuracin. Barra de herramientas Facilita el acceso rpido a las rdenes ms comnmente utilizadas. Omitimos el significado de cada botn porque le ser mostrado al pasar el puntero del ratn sobre cada uno de ellos.
Puede visualizar otras barras de herramientas ejecutando la opcin Barra de herramientas del Men Ver. Cuadro de herramientas Proporciona un conjunto de herramientas que permiten
Pg. 4
Icono Puntero
Descripcin
Cuadro de imagen Etiqueta Cuadro de texto Marco Botn de comando Casilla de verificacin Botn de opcin Cuadro combinado Cuadro de lista Barra de desplazamiento horizontal Barra de desplazamiento vertical Cronmetro Cuadro de lista de unidades Cuadro de lista de directorios Cuadro de lista de archivos Formas Lneas Imagen Contenedor OLE
Pg. 5
Para utilizar algn objeto simplemente debe hacer doble click sobre el icono correspondiente, luego puede cambiar su posicin y sus dimensiones. Diseador de formularios Es la ventana sobre la que colocaremos los objetos
aplicacin o proyecto.
Pg. 6
Ventana de propiedades Como veremos ms 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.
Posicin del formulario Esta ventana le permite especificar la posicin de los formularios de la aplicacin.
Es
un a
men un
emergente
que
presenta objeto.
rdenes
especficas un men
relativas
determinado
Para
abrir
contextual, dar click derecho sobre el objeto. Por ejemplo, al dar click derecho sobre el formulario se presenta el siguiente men contextual.
Ventana de cdigo Se presenta cuando se hace doble click sobre un objeto que se encuentra en el Diseador 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).
Pg. 8
MI PRIMERA APLICACIN Hay tres pasos principales para crear una aplicacin en Visual Basic: Crear la interfaz. Establecer propiedades. Escribir el cdigo. Para siguiente ver como se para realiza crear esto, una siga los pasos del que
ejemplo
aplicacin
sencilla
consiste en un formulario y un botn de comando. Cuando haga click en el botn de comando aparecer el mensaje Visual Basic es fcil en un cuadro de dilogo predefinido. Creacin de la interfaz Para el desarrollo del presente ejemplo proceda a crear una nueva aplicacin. En seguida aadir un botn 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:
Pg. 9
Estableciendo las propiedades Para ver las propiedades de un objeto, simplemente debe seleccionarlo siguiente y pulsar las la tecla F4. Por ejemplo de la figura y
muestra
propiedades
del
botn
comando
Pg. 10
Puede
cambiar de
el la
valor ventana
de
cualquier y
seleccionndolo modificando su
anterior para el
valor,
por
ejemplo
caso
De manera similar proceda cambiar la propiedad Caption del formulario a Mi primera aplicacin. La apariencia de la
Pg. 11
Escribiendo el cdigo Para ingresar el cdigo a la aplicacin debe dar doble click sobre el control al cual asociaremos dicho cdigo. Para nuestro caso dar doble click sobre el botn de comando e
Para guardar la aplicacin que acaba de crear, seleccione la opcin Guardar Proyecto del Men Archivo. Bueno, ahora slo falta que ejecute su aplicacin. Para ello simplemente debe pulsar la tecla F5. El resultado debe ser similar al siguiente:
Pg. 12
CAPTULO 2
LOS OBJETOS
Visual Basic se basa en la programacin orientada a
objetos (POO), la cual es una forma de programacin que utiliza objetos (similares a los objetos del mundo real) para la
solucin 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 ms largos de una manera sencilla.
Pg. 13
Objetos Un objeto es una entidad que tiene atributos particulares (propiedades) y unas formas de operar sobre ellos (mtodos). 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 objeto. propiedades Hay representan las caractersticas como Caption que del la
propiedades
particulares,
poseen los botones de comando por ejemplo, y genricas como Name que la poseen todos lo objetos. Mtodos Los mtodos son procedimientos asociados a un objeto. Se ejecutan como respuesta a un evento, por ejemplo al dar click en un botn de comando. Tambin pueden ser invocados
cuando ocurre una determinada accin (accin y reaccin). Como respuesta a un evento se enva un mensaje y se ejecuta un determinado mtodo (procedimiento).
Pg. 14
Mensajes Un mensaje es una llamada a un mtodo (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 estn constantemente recibiendo, interpretando y
respondiendo a mensajes de otros objetos. Clases Una clase es una descripcin para producir objetos de esa clase o tipo. Es decir se trata de una generalizacin de un tipo especfico 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.
Pg. 15
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 podra decir que es sese el objeto y olvdese de como funciona en forma interna. Por ejemplo, para manejar una computadora no necesitamos saber como funcionan sus circuitos electrnicos, en trminos de corriente, tensin, etc. Encapsulamiento Esta caracterstica permite ver un objeto como una caja negra autocontenida en la que se ha metido de alguna manera toda la informacin los que maneja dicho objeto. bsicas, Esto permite
manipular
objetos
como
unidades
permaneciendo
oculta su estructura interna. Herencia La herencia es la caracterstica que permite compartir automticamente propiedades y mtodos entre objetos. Es decir, se pueden crear nuevas clases de objetos en base a clases existentes. Ms concreto, un objeto puede heredar un conjunto general de propiedades y mtodos a las que puede aadir
Pg. 16
aquellas caractersticas que son especficas suyas. El usuario de Visual Basic no dispone de esta caracterstica.
formas, es la caracterstica que permite implementar mltiples formas de un mismo mtodo, dependiendo cada una de ellas de la clase sobre la que se realiza la implementacin. Esto hace posible que se puede acceder a una variedad de mtodos
distintos (todos con el mismo nombre) utilizando exactamente el mismo medio de acceso.
LOS OBJETOS DE VISUAL BASIC Visual Basic soporta la abstraccin, la encapsulacin, el polimorfismo y la reutilizacin de cdigo. La reutilizacin de cdigo es la capacidad de trasladar caractersticas de un objeto a otro, lo que se logra con alguna forma de herencia. Esto se consigue mediante la creacin y uso del objeto. Los objetos de Visual Basic estn divididos en dos tipos: controles y contenedores. Los controles son un medio grfico que permiten a los usuarios interactuar con la aplicacin para la manipulacin de datos y ejecucin de tareas. Son ejemplo de controles:
verificacin,
botones
de
opcin,
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 ms utilizados tenemos a los formularios, marcos y
REFERENCIANDO OBJETOS La sintaxis para referenciar objetos es la siguiente: OBJETO.PROPIEDAD = VALOR Por ejemplo, para establecer el ttulo de un formulario a Visual Basic es fcil, la orden sera: Form1.Caption = Visual Basic es fcil
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
Pg. 18
Para aclarar este concepto desarrollaremos la siguiente aplicacin, la cual consiste en un formulario, un cuadro de texto y un botn de comando. El usuario debe ingresar un
mensaje en el cuadro de texto y al pulsar el botn de comando, el mensaje recientemente ingresado, se coloca como ttulo del formulario.
Para ello proceda a construir la interfaz mostrada en la figura anterior. Luego, dar doble click sobre el botn de
comando e ingrese el siguiente cdigo: Private Sub Command1_Click() Form1.Caption = Text1.Text End Sub Seguidamente guarde y proceda ejecutar su aplicacin. Como puede verificar, el evento Click se dispara cada vez que el usuario pulsa (hace click) sobre un control.
Pg. 19
La convencin a seguir en la presente gua - para dar nombre a los objetos - consiste en utilizar ciertos prefijos, los cuales indicaran el tipo de objeto del que se trata. Prefijo Frm Fra Lbl Txt Cmd Chk Opt Lst Cbo Tim HS VS Pic Img Drv Dir Fil Ole Grd Formulario Marco Etiqueta Cuadro de texto Botn de comando Casilla de verificacin Botn de opcin Cuadro de lista Cuadro combinado Cronmetro Barra de desplazamiento horizontal Barra de desplazamiento vertical Cuadro de imagen Imagen Cuadro de lista de unidades Cuadro de lista de directorios Cuadro de lista de archivos Contenedor OLE Cuadrcula Objeto
Pg. 20
Gra Ctr
CAPTULO 3
EL LENGUAJE
Visual Basic es un lenguaje de programacin basado en el lenguaje BASIC, al cual incorpora la funcionalidad de la
programacin orientada a objetos. El cdigo de Visual Basic se almacena en mdulos, donde cada mdulo est subdividido en distintas secciones, una para cada objeto del mdulo. Cada seccin de cdigo puede contener uno o ms procedimientos, formados por declaraciones de
constantes y variables, expresiones, sentencias de control y llamadas a procedimientos y/o funciones. En este captulo vamos a analizar los diferentes elementos que intervienen al momento de realizar el cdigo para una
aplicacin.
TIPOS DE DATOS Los datos con los que trabajaremos probablemente incluyan informacin relacionada con nmeros, dinero, nombres,
Pg. 21
descripciones,
fechas,
etc.
Cada
dato
corresponde
un
determinado tipo, es decir, pertenece a una categora de datos que se manipulan de maneras similares. Tipo Integer Long Descripcin Entero (2 bytes) Entero largo (4 bytes) Rango -32768 a 32767 -2147483648 a 2147483647 Single Punto flotante de simple -3.40E+38 a 3.40E+38 doble -1.79D+308 a 1.79D+308 +/922337203685477.5807 Byte String Carcter (1 byte) Cadena de caracteres 0 a 255 (1 Aproximadamente hasta 64K (65400
caracteres) Boolean Date Lgico (2 bytes) Fecha/Hora (8 bytes) True o False 01/ENERO/100 a 31/DICIEMBRE/9999 Variant (por omisin) Cualquier tipo de dato Con nmeros hasta el intervalo de un tipo Double. Con caracteres Pg. 22 22
IDENTIFICADORES Los identificadores son nombres dados a los elementos de una aplicacin, tales como constantes, variables,
procedimientos, funciones, objetos, etc. Un identificador es una secuencia de caracteres la que puede de ser de hasta 255
caracteres.
Para
construccin
identificadores
debemos
tener presente las siguientes reglas: Deben comenzar con una letra y no puede contener espacios en blanco. Letras, dgitos y caracteres subrayados estn permitidos
despus del primer carcter. No se puede utilizar Una palabra una palabra tiene reservada un como
identificador.
reservada
significado
CONSTANTES Una durante constante la almacena de un un dato cuyo valor no cambia una
ejecucin
programa.
Para
declarar
constante utilice la siguiente sintaxis: Const NOMBRE_CONSTANTE [As TIPO] = VALOR Pg. 23
Si no se declara el tipo de constante (utilizando As TIPO) se asigna a la constante el tipo de dato ms apropiado a su valor. El valor de una constante puede ser numrico,
alfanumrico, carcter o de tipo fecha y hora. Por ejemplo: Const MAXIT = 25 Const PI As Double = 3.141592 Const CADENA As String = Visual Basic es fcil Const FECHA_POR_DEFECTO = #01/01/99#
VARIABLES Una variable almacena un dato cuyo valor puede cambiar durante la ejecucin 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 instruccin Dim puede realizar ms de una declaracin, teniendo en cuenta que la clusula opcional As TIPO le permite definir el tipo de dato de cada variable que vaya a declarar. Por ejemplo: Dim X, Y As Integer
Pg. 24
La sentencia anterior le puede inducir a pensar que X e Y son de tipo Integer, lo cual no es cierto, pues X es de tipo Variant (por omisin) 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 los son smbolos Los que indican son cmo los sern datos
manipulados
operandos.
operandos
(constantes y/o variables) sobre los que acta los operadores para producir un determinado resultado. Operadores aritmticos Operador ^ Significado Exponenciacin Menos unario
Pg. 25
* \
Multiplicacin y divisin Divisin entera Resto de una divisin entera Suma y resta
Mod + -
Operadores relacionales Operador = Igual que Diferente que Menor que Mayor que Menor o igual que Mayor o igual que Significado
Operadores lgicos Operador Not And Or Xor Eqv Imp Negacin Conjuncin Disyuncin inclusiva Disyuncin exclusiva Equivalencia (opuesto a Xor) Implicacin (falso si primer operando verdadero y segundo operando falso) Significado
Pg. 26
Operadores de cadenas de caracteres Operador & Like SENTENCIAS Una sentencia es una lnea de cdigo que indica una o ms operaciones sentencias, 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 ms de una lnea fsica utilizando el carcter de continuacin de lnea (un espacio en blanco seguido del carcter de subrayado). Por ejemplo: Dim CH4_ENTRADA As Double, CH4_SALIDA As Double, _ CH4_GENERA As Double, CH4_CONSUME AS Double a realizar. Una de lnea otras puede por incluir dos varias Por Concatenacin Compara dos cadenas de caracteres Significado
separadas
unas
puntos.
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 sern estudiados en captulos
posteriores. Pg. 27
Otra posibilidad de proporcionar datos o de visualizarlos durante la ejecucin de una aplicacin es utilizando cajas de dilogos predefinidas. Debido a que esta es la forma ms simple de realizar la E/S de datos nos ocuparemos de ella.
Entrada de datos La entrada de datos permite proporcionar valores durante la ejecucin de una aplicacin. Estos valores son ingresados generalmente mediante el teclado y asignados a variables del programa. En Visual Basic una forma de ingresar datos a la aplicacin es utilizando la caja de dilogo predefinida
provista por la funcin InputBox. Su sintaxis es la siguiente: VARIABLE = InputBox(MENSAJE [, TTULO] [, PREDETERMINADO]) Donde MENSAJE es el mensaje que indica al usuario el tipo de informacin 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 dilogo solicitando la informacin requerida:
Pg. 28
Como
puede
observar,
el
resto
de
los
parmetros
son
opcionales. TTULO es el texto que se muestra en la barra de ttulo del cuadro de dilogo, si se omite TTULO, el nombre de la aplicacin es la que se muestra en la barra de ttulo. PREDETERMINADO es una expresin de cadena que aparece en el cuadro de texto como respuesta predeterminada si no se
proporciona ningn otro texto. Si se omite PREDETERMINADO el cuadro de texto se muestra vaco. 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 dilogo que se
Pg. 29
Salida de datos La salida de datos generalmente informacin realizar la de la memoria de y consiste en en en tomar la Para Basic,
mostrarla de datos
pantalla. Visual
operacin
salida
podemos utilizar el procedimiento MsgBox, cuya sintaxis es como sigue: MsgBox MENSAJE [, ICONO, TTULO] MENSAJE es La cadena que se muestra como salida en la caja de dilogo. ICONO es se refiere al estilo de icono que se va ha utilizar y TTULO es una texto que se mostrar en la barra de ttulo de la caja de dilogo. Por ejemplo: Dim EDAD As Integer EDAD = InputBox(Ingrese su edad?) EDAD = EDAD + 10 MsgBox Dentro de 10 aos su edad ser: & Str(EDAD) Si ejecuta el cdigo anterior e ingresa su edad (en mi caso 29 aos) la salida debe ser similar a la figura siguiente:
Pg. 30
que
pueda
ejecutar
el y
cdigo haga
anterior, click
proceda sobre
a el
nueva
aplicacin
doble
formulario, luego ingrese el cdigo anterior: Private Sub Form_Load() Dim EDAD As Integer EDAD = InputBox(Ingrese su edad?) EDAD = EDAD + 10 MsgBox Dentro de 10 aos su edad ser: & Str(EDAD) End Sub A manera de observacin cabe sealar que la funcin Str() se utiliza para convertir una expresin numrica 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 evala una determinada condicin y en funcin a ello ejecuta uno de entre dos posibles grupos de sentencias. Su sintaxis es la siguiente: Pg. 31
If CONDICIN Then SENTENCIAS_VERDADERAS Else SENTENCIAS_FALSAS End If Si CONDICIN es verdadera Si se es ejecuta falsa el se grupo ejecuta de el
SENTENCIAS_VERDADERAS. grupo de
CONDICIN
SENTENCIAS_FALSAS.
Por ejemplo, el siguiente cdigo 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 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 mltiples alternativas. Su sintaxis es como sigue: If CONDICIN_1 Then Pg. 32 & Str(B)
SENTENCIAS_1 ElseIf CONDICIN_2 Then SENTENCIAS_2 . . . Else SENTENCIAS_FALSAS End If Si CONDICIN_1 es verdadera se ejecuta el grupo de
SENTENCIAS_1, y si es no se cumple, se evalan secuencialmente las condiciones siguientes hasta Else, ejecutndose las
sentencias correspondientes al primer ElseIf cuya condicin sea verdadera. Si todas las condiciones son falsas, se ejecutan las SENTENCIAS_FALSAS correspondientes a Else. Por ejemplo considere el siguiente cdigo, el cual imprime el nombre del mes correspondiente a los nmeros del 1 al 12. Dim N As Integer N = InputBox(Ingrese N?) If N = 1 Then MsgBox Enero ElseIf N = 2 Then ElseIf N = 3 Then ElseIf N = 4 Then ElseIf N = 5 Then : MsgBox Febrero : MsgBox Marzo : MsgBox Abril : MsgBox Mayo Pg. 33
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 expresin con diferentes valores. Su sintaxis es la siguiente: Select Case EXPRESIN_TEST Case EXPRESIN_1 SENTENCIAS_1 Case EXPRESIN_2 SENTENCIAS_2 . . . Case Else SENTENCIAS_FALSAS End Select Pg. 34
En
este
caso
se
comprueba
el
valor
de
EXPRESIN_TEST
frente a la lista expresiones EXPRESIN_1, EXPRESIN_2, . . . y as sucesivamente, y busca el primer Case que incluya el valor evaluado en EXPRESIN_TEST, ejecutando a continuacin el bloque de sentencias correspondiente. Si no existe un valor igual a EXPRESIN_TEST, entonces se ejecuta las SENTENCIAS_FALSAS
correspondientes al Case Else. A manera de ejemplo vamos a codificar el programa de la seccin anterior el cual imprime el nombre del mes
correspondiente a los nmeros del 1 al 12. Pero en esta vez utilizaremos la estructura Select Case (compare con cual de ambas estructuras es ms cmodo trabajar). Dim N As Integer N = InputBox(Ingrese N?) Select Case N Case 1 Case 2 Case 3 Case 4 Case 5 Case 6 Case 7 Case 8 Case 9 : MsgBox Enero : MsgBox Febrero : MsgBox Marzo : MsgBox Abril : MsgBox Mayo : MsgBox Junio : MsgBox Julio : MsgBox Agosto : MsgBox Setiembre Pg. 35
Case 10 : MsgBox Octubre Case 11 : MsgBox Noviembre Case 12 : MsgBox Diciembre Case Else MsgBox Error de datos End Select
Cabe destacar que Select Case tambin 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 Esta estructura es utilizada para ejecutar un bucle un nmero determinado de veces. El nmero de iteraciones deber Pg. 36
ser conocido de antemano. Su sintaxis es la que se presenta a continuacin: 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 iteracin. La sentencia Exit For permite salir del bucle For . . . Next antes de que este finalice. Por ejemplo, el siguiente cdigo imprime los cuadrados de los nmeros enteros del 1 al 25. Dim C As Integer For C = 1 To 25 Print C Next Para que este cdigo funcione correctamente debe
establecer la propiedad AutoRedraw del formulario a True. Estructura While . . . Wend La estructura While . . . Wend es aquella en la que el nmero de iteraciones no se conoce por anticipado y el cuerpo Pg. 37
del
bucle
se
repite
mientras
se
cumple
una
determinada
condicin. Su sintaxis es la siguiente: While CONDICIN SENTENCIAS_REPETITIVAS Wend La estructura While . . . Wend evala la CONDICIN en cada iteracin y si el resultado es verdadero contina su ejecucin. El bucle termina cuando CONDICIN es falsa. A manera de ejemplo, considere el siguiente cdigo, el cual imprime en pantalla la suma de los
N
primeros nmeros
naturales, es decir S = 1 + 2 + 3 + 4 + . . . + 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 condicin dada sea cierta, o hasta que una condicin dada sea cierta. La
Pg. 38
condicin puede ser verificada antes o despus de ejecutarse el cuerpo del bucle. Su sintaxis es: Formato 1: Do [While/Until] CONDICIN SENTENCIAS_REPETITIVAS [Exit Do] Loop Formato 2: Do SENTENCIAS_REPETITIVAS [Exit Do] Loop [While/Until] CONDICIN Esta estructura (como se puede observar en ambos formatos) permite realizar varias estructuras diferentes dependiendo si la condicin de terminacin est al principio o al final del cuerpo del bucle. Como ejemplo, consideremos el siguiente programa, el cual calcula el factorial de un entero N ingresado por teclado: 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 Loop While C <= N Pg. 39
Sentencia GoTo Transfiere el control a una lnea especfica de cdigo, identificada por una etiqueta o por un nmero de lnea. Su sintaxis es: GoTo ETIQUETA/NUMERO_LNEA 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 programacin 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
programacin. Por ejemplo podra escribir un bucle para imprimir los cuadrados de los nmeros enteros del 1 al 25. Dim X As Integer X = 0 LABEL1: X = X + 1 Print X ^ 2 If X < 25 Then GoTo LABEL1
Pg. 40
Un uso abusivo de la sentencia GoTo da lugar a cdigos difciles de interpretar y de mantener. Por ello, se recomienda su uso solamente en ocasiones excepcionales. La tarea que vaya a desempear de una las sentencia GoTo puede de suplirse utilizando en las
cualquiera
estructuras
control
vistas
secciones anteriores. ARREGLOS Un arreglo o matriz es una estructura de datos en la que se almacena una coleccin finita de datos del mismo tipo, que comparten un nombre comn, a los que se puede acceder por la posicin (ndice) que ocupa cada uno de ellos dentro del
arreglo. Cada elemento del arreglo es una variable que puede contener un nmero o una cadena de caracteres, dependiendo del tipo de arreglo que se declare. Los arreglos en Visual Basic se clasifican en estticos y dinmicos. Arreglos estticos Son aquellos arreglos cuyo tamao no puede cambiar en
tiempo de ejecucin. La declaracin de un arreglo esttico se puede realizar mediante la siguiente sintaxis: Dim NOMBRE_ARREGLO(DIMENSONES) As TIPO
Pg. 41
Donde DIMENSIONES es una lista de nmeros, separados por comas y que definen las dimensiones del arreglo. Esta lista puede ser de la siguiente forma:
DIMENSIN_1, DIMENSIN_2, DIMENSIN_3, . . ., DIMENSIN_ 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 precisin. 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 arreglo se por observa defecto la numeracin en de los elementos hacer de que un la
comienza
cero,
para
Pg. 42
numeracin comience en 1, debe ingresar la siguiente orden en la seccin de Declaraciones del mdulo de formulario:
Luego,
para
declarar
los
mismos
arreglos
de
los
casos
anteriores, las sentencias seran 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 consideracin del lector. Arreglos dinmicos Son aquellos arreglos en los que su tamao puede definirse o modificarse en tiempo de ejecucin. Para declara una arreglo dinmico utilice la siguiente sintaxis: Dim NOMBRE_ARREGLO() As TIPO Para definir el tamao del arreglo utilizar la siguiente sintaxis:
Pg. 43
ReDim NOMBRE_ARREGLO(NMERO_ELEMENTOS) Cada vez que se ejecuta la sentencia ReDim, todos los valores almacenados en el arreglo se pierden. Para definir o cambiar el tamao del arreglo conservando los valores del mismo use la siguiente sintaxis: ReDim Preserve NOMBRE_ARREGLO(NMERO_ELEMENTOS) Para liberar el espacio de memoria utilizado por arreglos dinmicos que ya no son tiles, utilizar la sintaxis: Erase NOMBRE_ARREGLO La orden Erase asigna cero a cada elemento de los arreglos numricos y nulo () a cada elemento de los arreglos de cadena de caracteres. A manera de ejemplo considere el siguiente cdigo que
declara y hace uso de un arreglo dinmico: 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 Pg. 44
REGISTROS Un registro es un nuevo tipo de dato, que se define como una coleccin de datos de diferentes tipos, conocidos como
campos, los cuales se encuentran evidentemente relacionados. Un registro slo se puede ser creado en la seccin de
declaraciones de un mdulo. La sintaxis correspondiente es: Private Type NOMBRE_REGISTRO DECLARACIONES_DE_LOS_MIEMBROS End Type Por ejemplo considere el siguiente cdigo 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
Pg. 45
Para referirse a un determinado miembro del registro se utiliza el operador selector de campos ( . ), veamos: X.ID_ALUMNO = 980976G X.NOMBRE = Carlos Castillo Peralta X.DIRECCION = Jr. C. Richardson 412 Chorrillos X.TELEFONO = 2510850 X.ESTADO = True Las mismas rdenes del prrafo anterior se pueden escribir de una manera ms fcil, ms legible y ms 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
Pg. 46
Una
funcin
es
un
procedimiento
que
cuando
se
ejecuta
devuelve un nico resultado al procedimiento que la invoc. La sintaxis correspondiente a la declaracin de una funcin es: Function NOMBRE_FUNCIN([LISTA_PARMETROS]) [As TIPO] SENTENCIAS [NOMBRE_FUNCIN = VALOR_RETORNADO] [Exit Function] End Function Donde separadas LISTA_PARMETROS por comas que se es una secuencia con de los variables argumentos
corresponden
pasados cuando es invocada la funcin. Para especificar el tipo de datos que ser retornado por la funcin utilice la clusula opcional As TIPO, el tipo es Variant por omisin. El valor retornado por la funcin es almacenado en propio nombre, es decir en NOMBRE_FUNCIN, que acta su como
variable dentro del cuerpo de la funcin. Si no se efecta esta asignacin el valor devuelto ser cero si la funcin es de tipo numrica, nulo () si la funcin es de tipo cadena, o vaco (Empty) si la funcin es de tipo Variant. La clusula opcional Exit Function permite salir de una funcin antes de que la funcin finalice, en caso sea esto necesario.
Pg. 47
La
sintaxis
para
la
llamada
una
funcin
es
de
la
siguiente forma: VARIABLE = NOMBRE_FUNCIN([LISTA_ARGUMENTOS]) Donde variables argumentos LISTA_ARGUMENTOS o expresiones debe ser es una secuencia por comas. de de El constantes, nmero de de la
separadas al
igual
nmero
parmetros
funcin. Los tipos de los argumentos deben coincidir con los tipos de sus correspondientes parmetros. A manera de ejemplo considere la implementacin de la
siguiente funcin:
f ( x) = x 2 + 2 x + 3
En la seccin de Declaraciones del mdulo de formulario ingrese el siguiente cdigo: Function F(X As Double) As Double F = X ^ 2 + 2 * X + 3 End Function Para invocar la funcin creada recientemente, codifique las siguientes lneas: Dim A As Double, RESP As Double A = InputBox(Ingrese A?) RESP = F(A) Pg. 48
MsgBox (Str(RESP)) Paso de argumentos a una funcin El paso de argumentos a una funcin es la forma como se ingresan los datos y variables al interior de la funcin y se presenta de dos formas:
cambio de valor que sufra un parmetro en el cuerpo de la funcin, tambin se produce en el argumento correspondiente de la llamada a la funcin. Esta forma de pasar los argumentos a una funcin es til para funciones que devuelven ms de un valor. Por ejemplo, considere la siguiente funcin que calcula las races reales de una ecuacin cuadrtica Ax 2 + Bx + C = 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) Pg. 49
La llamada a esta funcin se puede realizar de la manera que se presenta a continuacin: 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 RACES REALES End If Paso de argumentos por valor Cuando se ejecuta una funcin, se podr especificar que el valor de un argumento no sea cambiado por esta funcin, pasando dicho argumento por valor. Para ello se debe anteponer la
Pg. 50
palabra reservada ByVal a la declaracin del parmetro en la cabecera de la funcin. Por ejemplo: Function F(ByVal X As Double) As Double F = X ^ 2 + 2 * X + 3 End Function La cabecera de la funcin F especifica que X ser pasado por valor y no por referencia. Funciones recursivas Se dice que una funcin es recursiva si se llama a s misma. Por ejemplo la funcin FACTORIAL cuyo cdigo se presenta a continuacin 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
SENTENCIAS [Exit Sub] End Sub La explicacin es anloga a la dada para las funciones. Sin embargo, un procedimiento no puede ser utilizado en una expresin, ya que un procedimiento no retorna ningn valor a travs 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 cdigo corresponde a un
procedimiento que calcula e imprime la suma de los N primeros nmeros naturales impares, es decir: S = 1 + 3 + 5 + . . . + 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 End If Pg. 52
Next MsgBox La suma es S= & Str(S) End Sub La llamada a este procedimiento podra ser de la forma: Call SUMA_IMPAR(25)
Pg. 53
CAPTULO 4
dentro de un contenedor y que permiten la interaccin entre el usuario y la aplicacin, ya sea para manipular datos y/o
ejecutar tareas. En Visual Basic, los controles suelen ser agrupados en tres categoras:
controles, por ejemplo una casilla de verificacin, un cuadro combinado o un cronmetro. Los controles externos se refieren a aquellos controles creados ActiveX. por terceros. Este tipo de controles son llamados
Pg. 54
CONTROLES BSICOS Los controles bsicos lo conforman las etiquetas, cuadros de texto y botones de comando, debido a que cualquier interfaz se puede implementar con slo estos tres objetos.
Etiqueta Una etiqueta es un control que permite presentar texto de solo lectura. Se utiliza para mostrar ttulos 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 ejecucin.
Especifica si se cambia automticamente el tamao del control para que quepan sus contenidos.
Especifica
el
color
de
fondo
de
primer
transparente u opaco. Caption Especifica control. WordWrap Especifica si la etiqueta se extiende a ms de una lnea cuando el texto es amplio. el texto que se muestra en el
Pg. 55
Cuadro de texto Un cuadro de texto es un control en el que el usuario pueda ingresar datos desde el teclado o visualizar un resultado generado por la aplicacin. El valor de un cuadro de texto por lo general se asocia a una variable de memoria.
Propiedad Enabled
Locked
Permite
bloquear
el
acceso
al
control
en
tiempo de ejecucin. MaxLenght Especifica la longitud mxima (en caracteres) que puede escribirse en el control. MultiLine Especifica si el control admitir mltiples lneas. PasswordChar Determina si se muestran en el control los caracteres escritos por el usuario o los caracteres de marcador de posicin. ScrollBars Especifica si se muestran las barras de
seleccionados. SelStart Especifica el inicio del texto seleccionado. Si su valor es 0, el texto seleccionado comienza por el primer carcter. SelText Text Contiene el texto seleccionado. Contiene el texto introducido en el control. Puede inicializar el contenido en tiempo de diseo.
Pg. 56
Los
eventos
asociados
un
cuadro
de
texto
son
los
siguientes:
control utilizando el teclado o el ratn. KeyPress Ocurre cuando se pulsa una tecla.
Botn de comando Un botn de comando es un control que suele emplearse para ejecutar una accin, como cerrar un formulario, imprimir un informe, etc.
Enabled Picture
Permite habilitar o deshabilitar el control. Especifica control. una imagen tipo icono para el
Style
Especifica la apariencia del control, ya sea estndar (estilo estndar de Windows) o grfica (con una imagen personalizada).
Pg. 57
Los botones de comando suelen responder al evento Click, cuya descripcin es:
Evento Click
manera
de
vamos en un
desarrollar cajero de
la
Esta
automtico para
manipular de los
cantidad
dinero S/.
siguientes
billetes:
10.00;
S/.
20.00;
S/. 50.00; S/. 100.00 y S/. 200.00. Elaborar una aplicacin que permita la lectura de la cantidad a retirar e indique el menor nmero de billetes a utilizar.
Para el desarrollo de la presente aplicacin proceda a ubicar los siguientes controles en el formulario: 6 etiquetas Pg. 58
6 cajas de texto 3 botones de comando Una vez ubicados los controles, establezca las propiedades segn se indica: Form1 Nombre BorderStyle Caption Label1 Nombre AutoSize Caption Label2 Nombre AutoSize Caption Label3 Nombre AutoSize Caption Label4 Nombre AutoSize Caption Label5 LblB50 True Billetes de S/. 50 LblB20 True Billetes de S/. 20 LblB10 True Billetes de S/. 10 LblCantidad True Cantidad a retirar: FrmCajero 3-Fixed Dialog Cajero automtico
Pg. 59
Nombre AutoSize Caption Label6 Nombre AutoSize Caption Text1 Nombre Text Text2 Nombre Text Text3 Nombre Text Text4 Nombre Text Text5 Nombre Text Text6 Nombre Text Command1
TxtCantidad
TxtB10
TxtB20
TxtB50
TxtB100
TxtB200
Pg. 60
CmdAceptar &Aceptar
CmdLimpiar &Limpiar
CmdSalir &Salir
Para aadir cdigo a la aplicacin haga doble click sobre el botn Aceptar e ingrese lo siguiente: Private Sub CmdAceptar_Click() Dim C As Integer, B200 As Integer, B100 As Integer, _ B50 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 B20 = C \ 50 = C \ 20 : C = C Mod 50 : B10 = C Mod 20 B20 As Integer, B10 As Integer
TxtB200 = Str(B200) TxtB100 = Str(B100) TxtB50 = Str(B50) TxtB20 = Str(B20) TxtB10 = Str(B10) Else Pg. 61
MsgBox Cantidad a retirar debe ser mltiplo de 10 TxtCantidad = TxtCantidad.SetFocus End If End Sub Luego, haga doble click sobre el botn Limpiar y aada el siguiente cdigo: Private Sub CmdLimpiar_Click() TxtCantidad = TxtB200 = TxtB100 = TxtB50 = TxtB20 = TxtB10 = TxtCantidad.SetFocus End Sub Finalmente dar doble click sobre el botn Salir y aada el siguiente cdigo: Private Sub CmdSalir_Click() End End Sub
Pg. 62
En el cdigo anterior hemos utilizado el mtodo SetFocus para enfocar la caja de texto TxtCantidad, esto es, para
CONTROLES COMPLEMENTARIOS Los controles complementarios se utilizan como alternativa a los controles bsicos en aplicaciones en las cuales su uso facilita o mejora el diseo de la interfaz. Como el lector podr verificar, algunos controles son ms adecuados que otros dependiendo del tipo de aplicacin que se pretenda desarrollar.
Marco Un marco es un objeto contenedor que puede utilizarse para agrupar casillas de verificacin, botones de opcin, botones de comando, etc.
Propiedad Caption
Casilla de verificacin Una casilla de verificacin se utiliza para alternar entre dos posibles valores (Activado/Desactivado). Cada casilla de verificacin es independiente de las dems ya que cada una tiene su propio nombre (Name). Puede utilizar casillas de
las cuales el usuario puede seleccionar todas las que desee a la vez.
Descripcin Muestra un ttulo para el control. Devuelve o establece el estado del control, puede ser: Desactivado (0), Activado (1).
Botn de opcin Un botn de opcin se utiliza para alternar entre dos posibles valores (Activado/Desactivado), de manera similar a las casillas de verificacin, la diferencia radica en que de un grupo de botones de opcin el usuario slo puede seleccionar un nico botn a la vez.
Descripcin Muestra un ttulo para el control. Devuelve o establece el estado del control, puede (True). ser: Desactivado (Falso), Activado
Pg. 64
manera
de
ejemplo
vamos
desarrollar
la
siguiente
aplicacin, 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
verificacin Convertir a maysculas, todo el texto que haya escrito en el cuadro de texto se presentar en maysculas y todo texto que escriba a continuacin (mientras la opcin est activada) tambin deber aparecer en maysculas.
Para el desarrollo de la presente aplicacin proceda a ubicar los siguientes controles en el formulario: 1 cuadro de texto 2 marcos 3 botones de opcin 4 casillas de verificacin
Pg. 65
Una vez ubicados los controles, establezca las propiedades segn se indica: Form1 Nombre BorderStyle Caption Text1 Nombre ForeColor Text Frame1 Nombre Caption Frame2 Nombre Caption Option1 Nombre Caption ForeColor Value Option2 Nombre Caption ForeColor OptVerde Verde &H00008000& OptRojo Rojo &H000000FF& True FraEstilo Estilo FraColor Color TxtMensaje &H000000FF& FrmEditor 3-Fixed Dialog Editor
Pg. 66
Option3 Nombre Caption ForeColor Check1 Nombre Caption Font Check2 Nombre Caption Font Check3 Nombre Caption Font Check4 Nombre Caption ChkMayuscula Convertir a maysculas ChkSubrayado Subrayado Arial (Subrayado) ChkCursiva Cursiva Arial (Cursiva) ChkNegrita Negrita Arial (Negrita) OptAzul Azul &H00C00000&
Una vez establecidas las propiedades, proceda a ingresar el cdigo que se indica a continuacin: Private Sub OptRojo_Click() If OptRojo.Value Then TxtMensaje.ForeColor = RGB(255, 0, 0) End If End Sub Pg. 67
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 Pg. 68
Private Sub ChkSubrayado_Click() If ChkSubrayado.Value Then TxtMensaje.Font.Underline = True Else TxtMensaje.Font.Underline = False End If End Sub Private Sub ChkMayuscula_Click() If ChkMayuscula.Value Then TxtMensaje = UCase(TxtMensaje) End If End Sub Private Sub TxtMensaje_KeyPress(KeyAscii As Integer) Dim CAR As String * 1 If ChkMayuscula.Value Then CAR = UCase(Chr(KeyAscii)) KeyAscii = Asc(CAR) End If End Sub La funcin RGB() especifica el color que se asigna a la propiedad ForeColor. La funcin UCase() retorna una cadena de caracteres en maysculas. Pg. 69
Cuadro de lista Un cuadro de lista es un control que presenta una lista de elementos en la que el usuario puede seleccionar uno o ms de dichos elementos. Si el nmero de elementos supera el nmero que puede mostrarse, se agregar automticamente una barra de desplazamiento al control.
lista. Su valor siempre es uno ms que el mayor valor de ListIndex. ListIndex Especifica el nmero 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 nmero de elementos
seleccionados. Selected Especifica si un elemento de la lista est seleccionado. Sorted Especifica si los elementos de la lista se ordenan alfabticamente. Text Especifica el valor del elemento seleccionado en ese instante. El valor es tratado como una cadena de caracteres.
Pg. 70
Los mtodos que se pueden utilizar para un cuadro de lista son los siguientes:
Descripcin Agrega un nuevo elemento a la lista. Elimina todos los elementos contenidos en la lista.
RemoveItem
Cuadro combinado Un cuadro combinado es una mezcla de un cuadro de texto con una lista. En l no slo se podr ingresar un dato sino tambin seleccionarlo eventos y de la lista. que el Presenta cuadro las de mismas lista a
propiedades,
mtodos
excepcin de lo siguiente:
Propiedad Style
Descripcin Especifica si el control se comporta como un cuadro de texto o como una lista desplegable. Un cuadro de texto permite ingresar valores. Una es lista desplegable e slo permite una lista seleccionar valores. El valor predeterminado 0-vbComboDropDown, incluye desplegable y un cuadro de texto. El valor 1-vbComboSimple incluye tan solo cuadro de texto. El valor 2-Dropdown List incluye slo una lista desplegable.
Pg. 71
Como ejemplo del uso de listas vamos a desarrollar una aplicacin 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 aplicacin proceda a ubicar los siguientes controles en el formulario: 3 etiquetas 1 cuadro de texto 2 listas 5 botones de comando
Pg. 72
En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre BorderStyle Caption Label1 Nombre AutoSize Caption Label2 Nombre AutoSize Caption Label3 Nombre AutoSize Caption Text1 Nombre Text List1 Nombre List2 Nombre LstProgramado LstSeleccionar TxtCurso LblProgramado True Curso programado: LblSeleccionar True Seleccione un curso: LblCurso True Ingrese nuevo curso: FrmCursos 3-Fixed Dialog Cursos
Pg. 73
Command1 Nombre Caption Picture Style Command2 Nombre Caption Picture Style Command3 Nombre Caption Picture Style Command4 Nombre Caption Picture Style Command5 Nombre Caption Default CmdAnnadir &Aadir True C:\FundVB\Bitmaps\RemoveAll.Bmp 1-Graphical CmdQuitarTodo C:\FundVB\Bitmaps\Remove.Bmp 1-Graphical CmdQuitar C:\FundVB\Bitmaps\AddAll.Bmp 1-Graphical CmdAgregarTodo C:\FundVB\Bitmaps\AddItem.Bmp 1-Graphical CmdAgregar
Seguidamente proceda a ingresar el cdigo que se indica a continuacin: Private Sub CmdAnnadir_Click() Pg. 74
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 Pg. 75
For I = 0 To LstSeleccionar.ListCount - 1 LstProgramado.AddItem LstSeleccionar.List(I) Next LstSeleccionar.Clear End Sub Private Sub CmdQuitarTodo_Click() Dim I As Integer For I = 0 To LstProgramado.ListCount - 1 LstSeleccionar.AddItem LstProgramado.List(I) Next LstProgramado.Clear End Sub Seguidamente mostraremos un ejemplo del uso de los cuadros combinados. Para tal fin vamos a desarrollar una aplicacin que permita realizar consultas acerca de un determinado curso. La relacin de cursos se presentar mediante un cuadro combinado, del cual el usuario debe seleccionar el curso de su inters y en seguida se presentar el nombre del profesor encargado del curso (teora), el nombre del jefe de prctica (laboratorio), as como los horarios de teora y de laboratorio,
respectivamente.
Pg. 76
Para el desarrollo de la presente aplicacin proceda a ubicar los siguientes controles en el formulario: 1 etiqueta 1 cuadro de texto 1 cuadro combinado 1 botn de comando En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre BorderStyle Caption FrmConsultaCursos 3-Fixed Dialog Consulta de cursos
Pg. 77
Label1 Nombre Caption Text1 Nombre MultiLine ScrollBars Text Combo1 Nombre Text Style Command1 Nombre Caption CmdSalir &Salir 2-Dropdown List CboCursos TxtCurso True 2-Vertical LblCursos Cursos:
Seguidamente proceda a ingresar el cdigo que se indica a continuacin: 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 Pg. 78
Matriz(0, 0) = Castillo Peralta, Carlos Matriz(1, 0) = Castillo Peralta, Carlos Matriz(2, 0) = Linares Alarcon, Adams Matriz(3, 0) = Castillo Peralta, Carlos Matriz(4, 0) = Crdoba 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) = Crdoba Saavedra, Javier Matriz(5, 2) = Crdoba 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 Pg. 79
Private Sub CboCursos_Click() Dim P_TEORIA As String, H_TEORIA As String Dim P_LAB As String, H_LAB As String P_TEORIA = Profesor de teora: & _ Matriz(CboCursos.ListIndex, 0) H_TEORIA = Horario de teora: & _ Matriz(CboCursos.ListIndex, 1) P_LAB = Jefe de prctica: & _ 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 combinacin de retorno de carro y avance de lnea, es equivalente a Chr(13) + Chr(10). Para este en ejemplo memoria en RAM particular mediante el hemos uso almacenado de un la
informacin
arreglo
bidimensional (Matriz).
Pg. 80
Cronmetro Un cronmetro sirve para controlar el tiempo transcurrido desde el inicio de una accin.
Propiedad Interval
Descripcin Especifica el nmero de milisegundos que se esperar para disparar el evento Timer.
El
control
Cronmetro
responde
al
evento
Timer,
cuya
descripcin es:
especificado transcurrido.
propiedad
manera
de
ejemplo
vamos
desarrollar
la
siguiente
Pg. 81
Para el desarrollo de la presente aplicacin proceda a ubicar los siguientes controles sobre el formulario: 1 etiqueta 1 cuadro de texto 1 cronmetro 1 botn de comando En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre BorderStyle Caption Label1 Nombre Caption Text1 Nombre Text Timer1 Nombre Interval Command1 Nombre Caption CmdTerminar &Terminar Pg. 82 Timer1 500 TxtHora LblHora Hora FrmReloj 3-Fixed Dialog Reloj digital
Seguidamente proceda a ingresar el cdigo que se indica a continuacin: 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 grfico si el control no es lo bastante grande para mostrar la imagen completa.
automticamente
mostrar
El
evento
que
suele
manejarse
para
este
control
es
Evento MouseMove
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 ms rapidez que un cuadro de imagen.
se para
ajusta que
el
tamao dentro
del del
grfico
quepa
control imagen.
Para MouseMove.
este
control
tambin
se
suele
manejar
el
evento
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. Pg. 84
La posicin ms a la izquierda se corresponde con el valor mnimo, la posicin ms a la derecha con el valor mximo, y cualquier otra posicin es un valor entre ellos dos.
Propiedad Max
Min
LargeChange
Especifica en cuanto cambiar el valor de la propiedad Value cuando el usuario haga click antes o despus 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
Evento Change
Scroll
Ocurre mientras el cuadrado de desplazamiento est siendo movido (este evento slo ocurre cuando el cuadrado es arrastrado).
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 posicin ms hacia arriba se corresponde con el valor mnimo, la posicin ms hacia abajo se corresponde con el valor mximo, y cualquier otra posicin es un valor entre ellos dos. Las propiedades y eventos de las barras de desplazamiento horizontal y vertical son anlogas. Como ejemplo, vamos a construir una aplicacin 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 aplicacin proceda a ubicar los siguientes controles en el formulario: 3 etiquetas
Pg. 86
3 barras de desplazamiento horizontal 1 cuadro de imagen En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre BorderStyle Caption Label1 Nombre Caption Label2 Nombre Caption Label3 Nombre Caption HScroll1 Nombre LargeChange Max Min SmallChange Value HScroll2 HSRojo 10 255 0 1 255 LblAzul Azul LblVerde Verde LblRojo Rojo FrmColores 3-Fixed Dialog Colores
Pg. 87
Nombre LargeChange Max Min SmallChange Value HScroll3 Nombre LargeChange Max Min SmallChange Value Picture1 Nombre BackColor
HSVerde 10 255 0 1 0
HSAzul 10 255 0 1 0
PicFondo &H000000FF&
Seguidamente proceda a ingresar el cdigo que se indica a continuacin: 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() Pg. 88
PicFondo.BackColor = RGB(HSRojo, HSVerde, HSAzul) End Sub En el cdigo anterior se debi colocar HSRojo.Value,
HSVerde.Value y HSAzul.Value, pero debido a que la propiedad Value es por defecto se puede omitir.
seleccionar una unidad de disco vlida en tiempo de ejecucin. Utilice este control para presentar una lista de todas las unidades vlidas del sistema.
Propiedad Drive
Evento Change
Descripcin Ocurre cuando el usuario hace click sobre la unidad Change que desea seleccionar. si se El evento la tambin ocurre selecciona
Un cuadro de lista de directorios muestra directorios y rutas de acceso en tiempo de ejecucin. Utilice este control para mostrar una lista jerrquica de directorios.
Propiedad Path
Un
cuadro
de
lista
de
directorios
tambin
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 ejecucin. Utilice este control para mostrar una
Descripcin Especifica la ruta de acceso actual. Especifica el tipo de archivo que se desea visualizar en el control.
List
ListIndex
Especifica
el
ndice
del
elemento
Como
ejemplo
vamos
desarrollar
una
aplicacin
que
puede seleccionar la unidad actual de trabajo, la carpeta y el archivo y poder visualizar su contenido (en este caso archivos grficos *.JPG).
Para el desarrollo de la presente aplicacin 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 segn se indica: Form1 Nombre Caption FrmVisor Visor Pg. 91
Label1 Nombre Caption Label2 Nombre Caption Label3 Nombre Caption Label4 Nombre Caption Drive1 Nombre Dir1 Nombre File1 Nombre Pattern Image1 Nombre Stretch ImgVista True File1 *.JPG Dir1 Drive1 LblVista Vista previa LblArchivo Archivo LblCarpeta Carpeta LblUnidad Unidad
Seguidamente proceda a ingresar el cdigo que se indica a continuacin: Private Sub Drive1_Change() Pg. 92
On Error GoTo DRIVE_ERROR Dir1.Path = Drive1.Drive Exit Sub DRIVE_ERROR: MsgBox ERROR: Unidad no preparada, vbCritical, Error Exit Sub End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub File1_Click() Dim ARCHIVO As String ARCHIVO = File1.Path & \ ARCHIVO = ARCHIVO & File1.List(File1.ListIndex) ImgVista.Picture = LoadPicture(ARCHIVO) End Sub La instruccin On Error activa una rutina de control de errores y especifica la ubicacin de la misma en un
procedimiento. LA FUNCIN MSGBOX A menudo habr situaciones en las cuales tendr que
Pg. 93
de
la
respuesta
del
usuario
se
ejecutar
una
determinada
accin.
La
funcin
MsgBox()
muestra
un
cuadro
de
dilogo
predefinido y retorna un valor de tipo entero dependiendo del botn seleccionado por el usuario. Su sintaxis es de la
siguiente forma: VALOR = MsgBox(MENSAJE [, BOTN + ICONO, TTULO]) Donde MENSAJE se refiere a una expresin de cadena que se muestra como mensaje en el cuadro de dilogo. BOTN es una expresin numrica que se refiere al tipo y cantidad de botones a utilizar. ICONO es una expresin numrica que se refiere al estilo de icono que se va ha utilizar. TTULO es una texto que se mostrar en la barra de ttulo de la caja de dilogo. Tipo de botn Valor 0 Aceptar Botn vbOKOnly Nombre
Pg. 94
1 2 3 4 5
Tipo de icono Valor 16 32 48 64 Icono Mensaje crtico Signo de interrogacin Signo de exclamacin Signo de informacin Nombre vbCritical vbQuestion vbExclamation vbInformation
Valores retornados Valor 1 2 3 4 5 6 7 Aceptar Cancelar Anular Reintentar Ignorar S No Botn vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo Nombre
Como ejemplo vamos a construir un formulario que presente un botn Salir, de tal forma que cuando el usuario pulse dicho botn se presente el siguiente mensaje:
Pg. 95
En
caso
de
que
el
usuario
elija
la
opcin
S,
la
aplicacin debe terminar. En caso contrario, es decir si el usuario elige la opcin No, se debe proseguir con la
aplicacin. Para el desarrollo del presente ejemplo, proceda a ubicar sobre el formulario un botn de comando (CmdSalir), a
continuacin ingresar el siguiente cdigo: Private Sub CmdSalir_Click() Dim RESP As Integer RESP = MsgBox(Desea terminar la aplicacin?, _ vbQuestion + vbYesNo, Pregunta) If RESP = vbYes Then End End If End Sub Para ilustrar mejor el uso de la funcin MsgBox() vamos a desarrollar la siguiente aplicacin que permite mostrar los diferentes tipos de botones e iconos generados por la funcin.
Pg. 96
Para ello proceda a ubicar los siguientes controles en el formulario: 2 cuadros de lista 1 botn de comando En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre BorderStyle Caption List1 Nombre List2 Nombre Command1 LstIcono LstBoton FrmFuncionMsgBox 3-Fixed Dialog Funcin MsgBox
Pg. 97
Nombre Caption
CmdMensaje &Mensaje
Seguidamente proceda a ingresar el cdigo que se indica a continuacin: 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 crtico LstIcono.AddItem Signo de interrogacin LstIcono.AddItem Signo de exclamacin LstIcono.AddItem Signo de informacin 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
Pg. 98
CAPTULO 5
EL FORMULARIO
Un formulario es un objeto contenedor que sirve para
disear la interfaz de usuario. En el formulario se colocan los controles para que el usuario pueda interactuar con la
Los formularios tienen sus propias propiedades, eventos mtodos con los que se puede controlar su apariencia
y y
comportamiento, muchos de los cuales ya han sido utilizados en las aplicaciones de los captulos anteriores y que a
Pg. 99
automtico del formulario. BackColor BorderStyle Especifica el color de fondo del formulario. Especifica formulario. Caption Especifica el texto que se muestra en la un estilo de borde para el
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 botn Maximizar. MinButton Especifica si el formulario tiene un botn Minimizar. Picture Especifica el archivo de imagen que se va ha mostrar como fondo para el formulario. StartUpPosition Especifica la posicin 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). Pg. 100
utilizada para asegurar que la colocacin y la proporcin de los elementos de la pantalla de la aplicacin 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 centmetro.
Los
eventos
los
que
responde
un
formulario
son
los
siguientes:
Evento Activate
Deactivate
Load
MouseDown
Ocurre
cuando
el
usuario
pulsa
el
botn
derecho del ratn sobre el formulario. QueryUnload Ocurre descarga Unload). Resize Ocurre cuando se muestra primero el antes del de iniciarse el proceso del de
formulario
(antes
evento
formulario o se cambian sus dimensiones. Unload Ocurre cuando el formulario se descarga de la memoria.
Pg. 101
Los mtodos que se pueden utilizar con un formulario son los siguientes:
Descripcin Oculta un formulario. Presenta un men popup en la posicin actual del ratn.
Print Refresh
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 automticamente.
Como
ejemplo
vamos
desarrollar
una
aplicacin
que
utilice dos formularios. Desde el primer formulario el usuario podr ir al segundo formulario y viceversa.
Pg. 102
Para el desarrollo de la presente aplicacin proceda a crear un nuevo proyecto. Seguidamente debe ubicar dos botones de comando en el formulario. Luego establezca las siguientes propiedades: Form1 Nombre Caption Command1 Nombre Caption Command2 Nombre Caption CmdSalir &Salir CmdIr &Ir Form1 Primer formulario
Seguidamente procede a ingresar el cdigo que se muestra a continuacin: Private Sub CmdIr_Click() Form2.Show Form1.Hide End Sub Private Sub CmdSalir_Click() End End Sub
Pg. 103
Luego debe aadir un formulario adicional al proyecto. Para tal fin, seleccione el men Proyecto y elija la opcin Agregar formulario.
Del
cuadro
de
dilogo
que
se
presenta
elija
el
icono
Formulario y haga click en el botn Abrir, tal como se indica en la figura. En ese instante se aadir un nuevo formulario al proyecto. Luego, proceda a ubicar un botn de comandos en el formulario que acaba de aadir y establezca las siguientes
Pg. 104
En seguida proceda a ingresar el cdigo que se indica a continuacin: Private Sub CmdVolver_Click() Form1.Show Form2.Hide End Sub
Valor 0 1 None
Estilo
Descripcin No presenta ningn borde. Puede incluir un Men de control, una Slo Barra de y los ttulo un botn cambiar botones , un botn tamao y Maximizar mediante Minimizar. de Maximizar
Fixed Single
puede
Minimizar. 2 Sizable (Predeterminado). Puede cambiar de tamao mediante cualquiera de los elementos opcionales de borde indicados para Fixed Single.
Pg. 105
Valor 3
Descripcin Puede incluir un Men de control y una Barra de ttulo, pero no los botones Maximizar ni Minimizar. No puede cambiar de tamao.
Fixed ToolWindow
Slo muestra el botn Cerrar y el texto de la barra de ttulo aparece con un tamao de fuente reducido. No puede cambiar su tamao.
Sizable ToolWindow
Slo muestra el botn Cerrar y el texto de la barra de ttulo aparece con un tamao de fuente reducido. Puede cambiar de tamao.
Como
ejemplo
vamos
desarrollar
una
aplicacin
que
Pg. 106
Para el desarrollo de la presente aplicacin 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 continuacin: Form1 Nombre Caption BorderStyle List1 Nombre List LstTipoForm 0-None 1-Fixed Single 2-Sizable 3-Fixed Dialog 4-Fixed ToolWindow 5-Sizable ToolWindow Command1 Nombre Caption Command2 Nombre Caption CmdSalir &Salir CmdMostrar &Mostrar FrmPrincipal Estilos de formulario 3-Fixed Dialog
Pg. 107
Seguidamente procede a ingresar el cdigo que se muestra a continuacin: 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 Pg. 108
Private Sub LstTipoForm_DblClick() Call CmdMostrar_Click End Sub Private Sub CmdSalir_Click() End End Sub Seguidamente proceda a aadir los formularios para las diferentes opciones del cuadro de lista. Cambie los nombres de los formularios segn se indica:
Nombre
Luego debe activar el formulario FrmNone, ubicar un botn de comandos sobre el mismo y establecer las siguientes
propiedades: Form2 Nombre BorderStyle Caption FrmNone 0-None None Pg. 109
Una vez establecidas las propiedades, proceda a ingresar el cdigo que se muestra a continuacin: Private Sub CmdVolver_Click() Unload Me End Sub Para concluir con el diseo de la aplicacin, simplemente repita el procedimiento anterior para los dems tipos de
formularios. Como mediante habr el podido observar, podemos al mostrar de un formulario modal
mtodo
Show
hacerlo
forma
(vbModal) o no modal (opcin 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 mdulos estndar, los cuales son contenedores de procedimientos y declaraciones a los que tienen acceso otros mdulos de la aplicacin.
Pg. 110
Como ejemplo vamos a construir la siguiente aplicacin, la cual enva un mensaje de texto del primer formulario hacia el segundo formulario.
Para el desarrollo de la presente aplicacin proceda a crear un nuevo proyecto y aada un formulario adicional, de tal forma que tenga los formularios Form1 y Form2. Seguidamente ubicar los siguientes controles:
Form1 Text1 Command1 Command2 TxtMensaje1 CmdEnviar CmdSalir Text1 Command1 Command2
A continuacin proceda a ingresar el cdigo que se indica para el primer formulario (Form1):
Pg. 111
Private Sub CmdEnviar_Click() Mensaje = TxtMensaje1 Form1.Hide Form2.Show End Sub Private Sub CmdSalir_Click() End End Sub Para el segundo formulario (Form2) proceda a ingresar el cdigo siguiente: Private Sub CmdRecibir_Click() TxtMensaje2 = Mensaje End Sub Private Sub CmdVolver_Click() Form2.Hide Form1.Show End Sub Seguidamente debe aadir un mdulo estndar al proyecto, para ello, seleccione el Men Proyecto y elija la opcin
Agregar mdulo, se debe presentar un cuadro de dilogo similar a la figura mostrada, en el cual debe dar click en el botn Abrir. Pg. 112
Seguidamente proceda a declarar la variable Mensaje como pblica en la seccin de declaraciones del mdulo que acaba de aadir:
Una
variable
pblica
(Public)
es
una
variable
que
se
Pg. 113
FORMULARIOS MDI Un formulario MDI (Interfaz de Documentos Mltiples) es una ventana que acta como fondo de una aplicacin y es el contenedor hijas). (ventana padre) de otros formularios (ventanas
En una aplicacin MDI pueden haber varias ventanas hijas, pero slo una ventana como padre debe por aplicacin. su Para que una
ventana
acte
hija
tener
propiedad
MDIChild
establecida a True. Como ejemplo vamos a desarrollar una aplicacin MDI que incluya tres ventanas hijas. Para tal fin proceda a crear un nuevo proyecto y seguidamente agregar dos formularios (simples) al mismo.
Pg. 114
No
olvide
establecer
la
propiedad
MDIChild
de
los
formularios Form1, Form2 y Form3 a True. Luego, debemos agregar el formulario MDI, para ello
acceder al Men Proyecto y elegir la opcin Agregar formulario MDI, del cuadro de dilogo que se presenta hacer click en el botn Abrir.
A continuacin dar doble click sobre el formulario MDI e ingresar el siguiente cdigo: Private Sub MDIForm_Load() Form1.Show Form2.Show Form3.Show End Sub Pg. 115
Ahora
slo
tiene
que
indicarle
Visual
Basic
que
el
formulario de arranque (inicial) ser el formulario MDI. Para ello vaya al Men Proyecto y elija la opcin 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
aplicacin. Cabe destacar que en los formularios MDI por lo general no se pueden incluir controles, debido a ello se suele trabajar con mens de opciones o barras de herramientas para indicar alguna accin a realizar.
Pg. 116
CREACIN DE MENS Un men es un conjunto de opciones que se presentan al usuario, entre las cuales debe elegir una de ellas. Dependiendo de la decisin se realizarn una serie de acciones.
Para disear un men cualquiera dar click derecho sobre el formulario y del men emergente que se presenta elegir la
Pg. 117
Para
crear
un
men,
tener
en
cuenta
los
siguiente
procedimientos:
Ingresar el Editor de mens. Introducir el ttulo del men en el cuadro de texto Caption,
el cual aparecer en la barra de mens.
Introducir
los
elementos
que
componen
el
men,
para
ello
escriba en los cuadros de texto Caption y Name el ttulo y el nombre del correspondiente elemento del men. Pg. 118
Shortcut.
Cerrar
el
Editor
de
mens,
para
ello
una
vez
que
haya
Pg. 119
Caption &Archivo . . . &Artculo . . . &Cliente . . . &Vendedor . . . . . . &Salir &Proceso . . . &Pedido . . . &Facturacin &Reporte . . . &Registro de ventas . . . Catlogo de &artculos . . . . . . &Cliente del mes . . . &Vendedor del mes Ay&uda . . . &Contenido . . . &Indice . . . &Bsqueda . . . . . . &Acerca de
Name MnuArchivo MnuArchivoArticulo MnuArchivoCliente MnuArchivoVendedor MnuArchivoLinea MnuArchivoSalir MnuProceso MnuProcesoPedido MnuProcesoFacturacion MnuReporte MnuReporteRegVentas
ShortCut Ninguno Ninguno Ninguno Ninguno Ninguno Ctrl + X Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno
Pg. 120
Para
probar
el
men
que
acaba
de
crear,
ingrese
el
siguiente cdigo: Private Sub MnuArchivoArticulo_Click() MsgBox Seleccion la opcin Artculo End Sub Private Sub MnuArchivoCliente_Click() MsgBox Seleccion la opcin Cliente End Sub Private Sub MnuArchivoVendedor_Click() MsgBox Seleccion la opcin 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 aplicacin?, _ vbQuestion + vbYesNo, Pregunta) If RESP = vbYes Then End Else: Cancel = True End If End Sub Pg. 121
Luego
al
ejecutar
su
aplicacin
seleccionar
el
men
Hasta ahora hemos programado la salida de una aplicacin, asociando el cdigo al botn Salir. Sin embargo, cuando el usuario hace click en el botn Cerrar de la barra de ttulo o en la opcin Salir del Men de control del formulario, el cdigo escrito para el botn Salir es ignorado. Para remediar esta situacin, en el ejemplo anterior
cuando el usuario pulsa el botn Salir, se invoca al evento Unload. La palabra al reservada desde Me proporciona se est una forma de el
referirse cdigo.
formulario
donde
ejecutando
Recordar desencadena
que
el el
evento usuario
Unload intenta
del cerrar
formulario el
se
cuando
formulario
mediante cualquiera de las formas descritas anteriormente. Para utilice el determinar parmetro si ocurre Si la descarga es del False formulario ocurre la
Cancel.
Cancel
descarga, si Cancel es True impide que el formulario se quite. CREACIN DE UNA BARRA DE HERRAMIENTAS Pg. 122
Una opciones
barra ms
de
herramientas de un
contiene men, de
con que
las el
utilizadas
usuario haciendo click en dicho control activara la opcin indicada de una manera ms rpida. Para crear una barra de herramientas debemos utilizar dos controles que no estn en la lista de controles estndar, por tanto debemos agregar dichos controles que se encuentran en el componente Microsoft Windows Common Controls 6.0, tal como se indica a continuacin:
Pg. 123
Para
ello,
ubicar
un
control
ImageList
sobre
el
formulario, para establecer sus propiedades dar click derecho sobre el control y elija la opcin Propiedades.
Pg. 124
Activar
la
ficha
Imgenes
pulsar
el
botn
Insertar
imagen para seleccionar las imgenes que se incluirn en el control ImageList. Para el a ejemplo, cada uno debe de incluir los ocho de imgenes la barra que de
corresponden herramientas.
botones
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 opcin Propiedades. Del cuadro de dilogo que se presenta en la ficha General establecer las siguientes propiedades:
Pg. 125
Luego,
en
la
ficha
Botones
pulse
el
botn
Insertar
botn. En el cuadro de texto Image se debe indicar un nmero que corresponde al orden de imagen a mostrar.
Pg. 126
El lector debe continuar con este proceso hasta completar los botones restantes, segn:
Index 1 2 3 4 5 6 7 8
ToolTipText Artculo Cliente Vendedor Pedido Facturacin Registro de ventas Catlogo de artculos Ayuda
Image 1 2 3 4 5 6 7 8
Como el cdigo a ejecutar tiene que ser el mismo cuando el usuario elija una opcin del men o de un click sobre un botn 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 cdigo es muy sencillo, ya que slo muestra un mensaje con la opcin seleccionada (esto por razones de simplicidad). Para probar la funcionalidad de la barra de herramientas que acaba de crear ingrese el siguiente cdigo:
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Pg. 127
Select Case Button.Index Case 1: MsgBox Seleccion la opcin Artculo Case 2: MsgBox Seleccion la opcin Cliente Case 3: MsgBox Seleccion la opcin Vendedor Case 4: MsgBox Seleccion la opcin Pedido Case 5: MsgBox Seleccion la opcin Facturacin Case 6: MsgBox Seleccion la opcin Registro de ventas Case 7: MsgBox Seleccion opcin Catlogo de artculos Case 8: MsgBox Seleccion la opcin Ayuda End Select End Sub
El
click sobre un botn de la barra de herramientas. La propiedad Index permite identificar el nmero de botn pulsado.
CREACIN 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 aplicacin. 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:
Pg. 128
Para ello ubicar un control StatusBar sobre el formulario, dar click derecho sobre el mismo y en la ficha Paneles incluir una imagen para la hora del sistema.
Pg. 129
El resto de propiedades se establecern mediante cdigo al momento de la carga del formulario. Private Sub MDIForm_Load() Dim I As Integer For I = 1 To 2 StatusBar1.Panels.Add 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 ' Se agregan 2 paneles ms
Valor 0 1 2 3 4 5
Descripcin (Predeterminado). Texto o mapa de bits. Tecla BLOQ MAYS. Tecla BLOQ NM. Tecla INS. Tecla BLOQ DESPL. Muestra la hora actual con el formato del sistema.
sbrDate
CREACIN DE UN MEN CONTEXTUAL Un men contextual es un men emergente (flotante) que se muestra sobre un formulario, independiente de la barra de
mens. Para mostrar un men contextual el usuario debe pulsar el botn derecho del ratn sobre el formulario. A menudo querr usar un men contextual para tener acceso a opciones que no se encuentran disponibles en la barra de mens. Para crear un men que no se presente en la barra de mens, haga invisible un elemento de men de nivel superior en tiempo de diseo (asegrese de que la casilla de verificacin Visible del Editor de mens no est activada). Cuando Visual Basic presenta un men emergente, pasa por alto la propiedad Visible del men de nivel superior especificado.
Pg. 131
Para crear el men contextual de la figura, debe ingresar al Editor de mens y aadir lo siguiente:
Name
Visible
3 3 3
Seguidamente proceda a ingresar el cdigo que se indica a continuacin: 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:\WINDOWS\CALC.EXE, 1) End Sub Private Sub MnuToolsCalen_Click() FrmCalendario.Show End Sub Pg. 132
Private Sub MnuToolsSol_Click() Dim I I = Shell(C:\WINDOWS\SOL.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 funcin Shell ejecuta un programa ejecutable y devuelve un tipo Variant (Double) que representa la identificacin de la tarea del programa si se ha ejecutado con xito, en caso
Pg. 133
CAPTULO 6
CONTROLES ACTIVEX
Los controles ActiveX son objetos que no forman parte del conjunto de controles estndar de Visual Basic, sino ms bien han sido desarrollados por terceras personas. Los controles ActiveX existen como archivos independientes con extensin .OCX y deben ser cargados antes de utilizarse. Para ello ingresar al Men Proyecto y elija la opcin
Componentes.
Pg. 134
extensin .AVI que no tengan sonido para crear animaciones. Para agregar este control debe seleccionar el componente
Propiedad AutoPlay
Descripcin Cierra el archivo AVI abierto actualmente. Permite abrir el archivo AVI. Reproduce Animation. el archivo AVI en el control
Stop
Como ejemplo vamos a desarrollar un formulario que permita reproducir un archivo AVI, tal como se muestra en la figura:
Pg. 135
Para ello crear un nuevo formulario y agregar un control Animation (Animation1) y dos botones de comando (CmdIniciar y CmdTerminar, respectivamente). Luego ingrese el cdigo que se muestra: Private Sub CmdIniciar_Click() Dim RUTA As String RUTA = C:\Archivos de programa\Microsoft Visual Studio\ RUTA = RUTA & Common\Graphics\Videos\Filenuke.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 dilogo estndar que permiten realizar las operaciones ms comnmente empleadas en el diseo 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.
Pg. 136
seleccionado. Filter Especifica el tipo de archivos que se han de mostrar en un cuadro de dilogo Abrir o Guardar como. FilterIndex Especifica el filtro predeterminado para un cuadro de dilogo Abrir o Guardar como, en caso se est utilizando varios filtros.
Descripcin Presenta la paleta de colores. Presenta el cuadro de dilogo Fuentes. Presenta la ayuda de Windows. Presenta el cuadro de dilogo Abrir. Presenta el cuadro de dilogo Imprimir. Presenta el cuadro de dilogo Guardar como.
Como
ejemplo
vamos
desarrollar
una
aplicacin
que
permite cambiar el color de fondo de un formulario en tiempo de ejecucin. Para ello el usuario debe dar click en el botn 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:
Pg. 137
Para ello crear un nuevo formulario, agregarle un botn de comando (CmdCambiarColor) y un control CommonDialog. Luego
ingresar el siguiente cdigo: Private Sub CmdCambiarColor_Click() CommonDialog1.ShowColor Form1.BackColor = CommonDialog1.Color End Sub Como siguiente ejemplo vamos a desarrollar una aplicacin que permita mostrar el contenido de un archivo JPG. Este deber ser seleccionado por el usuario de un cuadro de dilogo Abrir, tal como se indica en la figura: Pg. 138
Al
hacer
click
en
el
botn
Abrir,
el
archivo
Para
el
diseo
de
esta
aplicacin
crear
un
nuevo
Pg. 139
Seguidamente continuacin:
ingrese
el
cdigo
que
se
indica
Private Sub CmdAbrirArchivo_Click() Dim FILTRO As String, FILE As String FILTRO = Imgenes JPEG (*.JPG)|*.JPG CommonDialog1.Filter = FILTRO CommonDialog1.ShowOpen FILE = CommonDialog1.FileName Image1.Picture = LoadPicture(FILE) End Sub
CONTROL MARCHOSO El control Marchoso tiene como funcin reproducir archivos GIF animados. Para agregar este control seleccionar el
componente Marchoso ActiveX Control Module. Este control fue creado en Visual Basic y si no lo tiene en su disco duro lo puede bajar de Internet.
Propiedad FileName
A manera de ejemplo vamos a disear un formulario que permita mostrar archivos GIF animados.
Pg. 140
Para ello proceda a crear un nuevo formulario y ubicar un botn de comando (CmdVerGIFAnimado), un control Marchoso y un control CommonDialog. Luego, ingresar el siguiente cdigo:
Private Sub CmdVerGIFAnimado_Click() Dim FILTRO As String, FILE As String FILTRO = Archivos GIF Animados (*.GIF)|*.GIF CommonDialog1.Filter = FILTRO CommonDialog1.ShowOpen FILE = CommonDialog1.FileName Marchoso1.FileName = FILE End Sub
CONTROL HIERARCHICAL FLEXGRID El control Hierarchical FlexGrid presenta una cuadrcula la cual permite mostrar datos en forma de celdas. Una celda es la regin formada por la interseccin de una fila y una
columna.
Pg. 141
Para agregar este control debe seleccionar el componente Microsoft Hierarchical FlexGrid Control 6.0 (OLEDB).
Propiedad Col
Cols
FixedCols
FixedRows
Row
Especifica actual.
el
nmero
de
fila
de
la
celda
Rows
Text TextArray
Especifica el contenido de la celda actual. Especifica el contenido de una celda elegida aleatoriamente, se debe especificar el ndice de la celda a la cual se desea acceder.
ScrollBars
Como
ejemplo
vamos
desarrollar
una
aplicacin
que
N . Un cuadrado
Un mtodo de construccin del cuadrado consiste en situar el nmero 1 en el centro de la primera fila, el nmero
siguiente en la casilla situada encima y a la derecha, y as sucesivamente. Es preciso considerar que el cuadrado se cierra sobre s mismo, la fila encima de la primera es de hecho la ltima y la columna a la derecha de la ltima es la primera. Sin embargo, cuando la posicin del nmero caiga en una celda ocupada, se elige la casilla situada por debajo del nmero que acaba de ser situado. Para el desarrollo de la presente aplicacin proceda a crear un nuevo formulario y ubicar una etiqueta (N?), un cuadro de texto (TxtN) y un control Hierarchical FlexGrid.
Seguidamente debe ingresar el cdigo que se indica: Private Sub TxtN_Change() Pg. 143
Dim N As Integer, I As Integer Dim FIL As Integer, COL As Integer N = Val(TxtN) FIL = 1 COL = (N \ 2) + 1 MSHFlexGrid1.Cols = N MSHFlexGrid1.Rows = N MSHFlexGrid1.FixedCols = 0 MSHFlexGrid1.FixedRows = 0 For I = 1 To N ^ 2 MSHFlexGrid1.COL = COL - 1 MSHFlexGrid1.Row = FIL - 1 MSHFlexGrid1.Text = Str(I) If I Mod N = 0 Then FIL = FIL + 1 If FIL = N + 1 Then FIL = 1 Else FIL = FIL - 1 If FIL = 0 Then FIL = N COL = COL + 1 If COL = N + 1 Then COL = 1 End If Next End Sub CONTROL UPDOWN Pg. 144
El control UpDown tiene dos botones con flechas en los que el usuario puede hacer clic para incrementar o disminuir un valor de un control asociado, denominado control auxiliar. A menudo, al usuario le parecer que el control UpDown y su control auxiliar son un nico control. Por lo general se usa un control UpDown con un cuadro de texto para solicitar al usuario una entrada numrica, una combinacin que en ocasiones se
propiedad control
para su
Especifica un valor que determina la cantidad en que vara la propiedad Value cuando se hace click en los botones del control UpDown.
Max
Min
SyncBuddy
Especifica si el control UpDown sincroniza la propiedad Value con una propiedad del control auxiliar.
Como
ejemplo
vamos
desarrollar
una
aplicacin
que
Para
tal
fin
crear
un
nuevo
formulario
ubicar
los
siguientes controles: 2 etiquetas (Cdigo ANSI, Carcter), 2 cuadros de texto (TxtANSI, TxtCaracter) y 1 control UpDown. Luego establezca las propiedades que se indican: UpDown1 Nombre BuddyControl BuddyProperty Increment Max Min SyncBuddy UpDown1 TxtANSI Text 1 255 0 True
Seguidamente proceda a transcribir el siguiente cdigo: Private Sub TxtANSI_Change() TxtCaracter = Chr(TxtANSI) End Sub CONTROL MONTHVIEW
Pg. 146
El control MonthView permite al usuario la posibilidad de ver y establecer informacin de fechas mediante una interfaz similar a un calendario. Para agregar este control seleccionar el componente Microsoft Windows Common Controls-2 6.0.
Descripcin Especifica el nmero de da mostrado. Especifica el nmero de mes mostrado. Especifica el nmero de ao mostrado. Especifica la fecha mostrada. Especifica el da de la semana
correspondiente a la fecha mostrada. Week Especifica el nmero de la semana en que cae la fecha mostrada. MultiSelect Especifica si se puede seleccionar un
intervalo contiguo de fechas. MaxSelCount Especifica pueden MultiSelect. SelStart SelEnd MonthColumns MonthRows Especifica los lmite del inferior intervalo y de superior fechas el nmero mximo mediante de la das que
seleccionarse
propiedad
mostrar
ms
de
un
mes el
simultneamente.
MonthColumns
especifica
nmero de meses que se mostrarn en sentido horizontal. MonthRows especifica el nmero de meses que se mostrarn en sentido vertical. Evento Descripcin
Pg. 147
Click
DateClick
Ocurre cada vez que el usuario hace click sobre una fecha mostrada en el control.
Como ejemplo vamos a crear un sencillo calendario. Cuando el usuario haga click sobre alguna fecha, esta aparecer en el cuadro de texto. Pamela Anderson representar la parte
Para ello crear un nuevo formulario y agregar una etiqueta (La fecha selecciona es), un cuadro de texto (TxtFecha), un control imagen (ImgPamela) y un control MonthView. Luego
ingresar el siguiente cdigo: Private Sub MonthView1_DateClick(ByVal DateClicked As Date) Pg. 148
TxtFecha = WeekdayName(MonthView1.DayOfWeek) & , _ & Str(MonthView1.Day) & de _ & MonthName(MonthView1.Month) & de _ & Str(MonthView1.Year) End Sub Private Sub MonthView1_Click() Call MonthView1_DateClick(MonthView1.Value) End Sub Private Sub Form_Load() Call MonthView1_DateClick(MonthView1.Value) End Sub La funcin WeekdayName retorna una cadena con el nombre del da de la semana especificado. Requiere como argumento el nmero de da de la semana. La funcin MonthName retorna una cadena con el nombre del mes especificado. Requiere como argumento el nmero de mes. El evento DateClick tiene un parmetro DateClicked que especifica la fecha seleccionada. Puede utilizar este valor (DateClicked) para obtener la fecha en la que el usuario hizo click.
El control Calendar es similar en funcionalidad al control MonthView, pues tambin presenta un calendario. Para agregar este control seleccionar el componente Control Calendar de
Microsoft 9.0.
Descripcin Especifica el nmero de da mostrado. Especifica el nmero de mes mostrado. Especifica el nmero de ao mostrado. Especifica la fecha mostrada.
Como ejemplo vamos a desarrollar la aplicacin anterior, pero esta vez haciendo uso de un control Calendar.
Pg. 150
Para ello crear un nuevo formulario y agregar una etiqueta (La fecha selecciona es), un cuadro de texto (TxtFecha), un control imagen (ImgPamela) y un control Calendar. Luego
ingresar el siguiente cdigo: Private Sub Calendar1_Click() TxtFecha = WeekdayName(Weekday(Calendar1.Value)) & , _ & Str(Calendar1.Day) & de _ & MonthName(Calendar1.Month) & de _ & Str(Calendar1.Year) End Sub La funcin Weekday retorna un nmero entero que representa el da de la semana de una fecha dada. Se utiliza para suplir a la propiedad DayOfWeek la cual no est permitida para el
control Calendar.
Pg. 151
CAPTULO 7
ARCHIVOS
Un archivo entre de (fichero) s, es un conjunto como una de informacin en un
almacenada
unidad
secundario en un
(disquete, son en de
disco manera
datos de modo
archivo
permanente
ser
manipulados
cualquier
CONCEPTO DE ARCHIVO BAJO WINDOWS/VISUAL BASIC Un archivo tiene un nombre almacenado en una carpeta junto con otros archivos de disco. Los nombres de los archivos en Windows y Visual Basic requieren de 1 a 215 caracteres
(incluidos espacios en blanco), y pueden incluir tambin una extensin de 1 a 3 letras, normalmente son significativas y relativas al contenido del mismo. Por ejemplo: LEAME.TXT MISDATOS.DAT PLANILLA.XLS SHAKIRA.BMP Archivo de texto Archivo de datos Archivo de MS-Excel Archivo de mapa de bits
Pg. 152
El
nombre
de
un
archivo
para
ser
referenciado
Unidad (Especificador de unidad, por ejemplo A, B, C) Camino (Especificador de ruta, por ejemplo \DATA\) Nombre (Especificador de archivo, por ejemplo DEMO.DAT)
Como ejemplo, suponga que el archivo DEMO.DAT est en la carpeta DATA de la unidad C (disco duro); la descripcin
C:\DATA\DEMO.DAT Ahora, suponga que el archivo CONSTANTES.DAT se encuentra en la carpeta LIB, que a su vez est contenida en la carpeta DATA de la unidad C. La descripcin completa del nombre de dicho archivo est dada por:
almacena los datos como un conjunto de registros, conteniendo todos ellos, generalmente, los mismos campos. Cada campo
almacena un dato de tipo predefinido o de un tipo definido por el usuario. El elemento de informacin ms simple estara
Para manipular el sistema de archivos de un disco, Visual Basic proporciona las sentencias que a continuacin se
describen. Sentencia Kill Permite eliminar un archivo almacenado en un disco. Su sintaxis es de la forma: Kill NOMBRE_ARCHIVO Donde identifica NOMBRE_ARCHIVO al archivo es una se cadena desea de caracteres Se que
que
borrar.
permiten
caracteres comodn (* y ?). Si el archivo no existe se produce un error. Por ejemplo: Kill C:\TEMP\TEMPO.DAT La instruccin anterior elimina el archivo TEMPO.DAT
ubicado en la carpeta C:\TEMP. Sentencia Name Permite cambiar el nombre (renombrar) de un archivo del disco y moverlo a otro directorio si fuera preciso. Su sintaxis es la siguiente: Name NOMBRE_ACTUAL As NOMBRE_NUEVO Donde NOMBRE_ACTUAL es una cadena de caracteres que
cadena de caracteres que indica el nuevo nombre que se desea dar al archivo. Este nombre no debe existir, de lo contrario se obtendr un error. Por ejemplo: Name C:\TEMP\TEMPO.DAT As C:\DATA\CURSO.DAT La instruccin anterior cambia el nombre del archivo
TEMPO.DAT por el nombre CURSO.DAT. El contenido del archivo permanece inalterado y su localizacin fsica se cambia de la carpeta C:\TEMP a C:\DATA. Sentencia MkDir Permite crear una nueva carpeta. Su sintaxis es: MkDir NUEVA_CARPETA Donde NUEVA_CARPETA es una cadena de caracteres que
identifica la carpeta que se va ha crear. Por ejemplo: MkDir C:\DATA\TEMP Sentencia RmDir Elimina una carpeta vaca existente en el disco. Su
sintaxis es de la forma: RmDir NOMBRE_CARPETA Donde NOMBRE_CARPETA es una cadena de caracteres que
RmDir C:\DATA\TEMP Sentencia ChDir Permite cambiar la carpeta actual. Su sintaxis es: ChDir NOMBRE_CARPETA Donde NOMBRE_CARPETA es una cadena de caracteres que
identifica la nueva ruta de acceso predeterminada. Por ejemplo: ChDir C:\DATA\GRAFICOS MsgBox App.Path La propiedad Path del objeto App especifica la ruta de acceso actual. Sentencia ChDrive Permite cambiar la unidad de disco actual. Su sintaxis es:
ChDrive UNIDAD Donde UNIDAD es un carcter que especifica la nueva unidad de disco. Si el parmetro UNIDAD es una cadena de mltiples caracteres slo se lee la primera letra. Por ejemplo:
Pg. 156
Para
realizar
alguna su
operacin nombre
sobre
un Las
archivo
hay
referenciarlo
mediante
completo.
operaciones
Abrir, preparar un archivo para hacer referencia a l. Escribir, introducir un elemento de informacin a un archivo. Leer, obtener un elemento de informacin de un archivo. Modificar, alterar un elemento de informacin ya existente en
un archivo.
TIPOS DE ARCHIVOS Los tipos de archivos dependen del modo como estn
organizados los registros y de la forma de accesar a la los datos contenidos en ellos. En Visual Basic existen tres tipos de archivos de datos, estos son:
Archivos secuenciales (acceso secuencial). Archivos aleatorios (acceso aleatorio). Archivos binarios (acceso binario).
A continuacin pasamos a describir cada uno de ellos en forma detallada. ARCHIVOS DE ACCESO SECUENCIAL
Pg. 157
En
un
archivo
de
acceso
secuencial
los
registros
se
almacenan siguiendo una a otro, segn el orden en que son ingresados. Cuando se lee la informacin, se empieza por el primer registro y se continua al siguiente hasta alcanzar el final. Las sentencias y funciones necesarias para manipular archivos de tipo secuencial se presentan a continuacin. Sentencia Open Permite abrir un archivo. La sintaxis para esta sentencia es la siguiente: Open NOMBRE_ARCHIVO For MODO As # NMERO_ARCHIVO Donde NOMBRE_ARCHIVO es una cadena que especifica el
nombre del archivo que se debe ser abierto en MODO Output, Append o Input.
contenido actual se destruye. Si el archivo no existe, se crea. Append Aadir datos. Los datos son aadidos a partir de los ltimos existentes. Si el archivo no existe, se crea. Input Lectura de datos. La lectura empieza desde el
principio del archivo. Si el archivo no existe, se produce un error. El parmetro NMERO_ARCHIVO es un entero cuyo valor debe estar comprendido entre 1 y 511. Este nmero ser asociado al Pg. 158
nombre
del
archivo
mientras
ste
permanezca
abierto.
Para
obtener el nmero del siguiente archivo disponible se utiliza la funcin FreeFile(). Como ejemplo suponga que se requiere abrir el archivo
DEMO.DAT ubicado en la carpeta C:\DATA, la instruccin sera la siguiente: Dim N1 As Integer N1 = FreeFile() Open C:\DATA\DEMO.DAT For Output As # N1
archivo fue abierto. LISTA_DE_EXPRESIONES es un conjunto de expresiones (numricas, de cadena, de fecha, etc.) separadas por punto y coma (;) que sern escritas en el archivo. La sentencia Print escribe en el archivo una imagen de los datos tal y como se habran visualizado sobre el formulario con la sentencia Print. Por ejemplo: Dim N1 As Integer N1 = FreeFile()
Pg. 159
Open C:\DATA\DEMO.DAT For Output As # N1 Print # N1, Visual Basic es fcil; , ; Date() Al ejecutarse el cdigo anterior se escribira en el
archivo la siguiente informacin: Visual Basic es fcil, 24/04/2001 Como se observa, al utilizar la sentencia Print se deben delimitar los datos para que se impriman correctamente. Sentencia Write Permite escribir datos secuencialmente en un archivo. Su sintaxis es:
archivo fue abierto. LISTA_DE_EXPRESIONES es un conjunto de expresiones (numricas, de cadena, de fecha, etc.) separadas por punto y coma (;) que sern escritas en el archivo. La sentencia Write inserta comas (,) entre las expresiones de la LISTA_DE_EXPRESIONES, por tanto no es necesario poner delimitadores explcitamente como en el caso de la sentencia Print. Cuando se utiliza la sentencia Write para escribir
Pg. 160
universales, de modo que los datos siempre se pueden leer e interpretar correctamente, independientemente de la
Para datos de tipo Boolean se imprime # TRUE # o # FALSE #. Los datos de tipo Date se escriben en el archivo usando el
formato de fecha universal (fechas como # aaaa-mm-dd # y horas como # hh:mm:ss #). A manera de ejemplo considere el siguiente segmento de cdigo: Dim N1 As Integer N1 = FreeFile() Open C:\DATA\DEMO.DAT For Output As # N1 Write # N1, Visual Basic es fcil; Date() La ejecucin de este cdigo escribira en el archivo la siguiente informacin:
Sentencia Close
Pg. 161
Close # NMERO_ARCHIVO [, # NMERO_ARCHIVO, . . .] Donde NMERO_ARCHIVO es el nmero con el cual se abri el archivo. Por ejemplo:
Close # 1, # 2 La instruccin anterior cierra los archivos asociados con los nmeros 1 y 2. La siguiente sentencia cierra todos los archivos abiertos. Close Sentencia Input Permite leer datos de un archivo secuencial y los asigna a las variables especificadas. Su sintaxis es:
Input # NMERO_ARCHIVO, VARIABLE1 [, VARIABLE2, . . .] Donde archivo nombres NMERO_ARCHIVO abierto. las es el nmero utilizado . . cuando . son el los los
fue de
VARIABLE1,
VARIABLE2, han
variables
que
de
recibir
Pg. 162
Los datos del archivo deben aparecer en el mismo orden que tienen las variables en la sentencia Input y deben coincidir con variables del mismo tipo de datos. Por ejemplo: Dim N1 As Integer N1 = FreeFile() Open C:\DATA\DEMO.DAT For Input As # N1 Dim A As Integer Dim B As Double Dim S As String Dim F As Date Input # N1, A, B, S, F El segmento de cdigo anterior espera encontrar en el
archivo un entero, un real, una cadena y una fecha, en ese orden (separados por comas o un retorno de carro). Sentencia Line Input Permite leer una lnea de un archivo secuencial ignorando los delimitadores (comas) y la asigna a una variable tipo
archivo fue abierto. VARIABLE es el nombre de una variable tipo cadena de caracteres. Pg. 163
La sentencia Line Input se utiliza especialmente para leer un archivo de texto lnea a lnea, ya que esta sentencia lee todos los caracteres del archivo hasta que encuentra un retorno de carro, entonces continua en la siguiente lnea y as
sucesivamente. Por ejemplo: Dim N1 As Integer, LINE1 As String, LINE2 As String N1 = FreeFile() Open C:\DATA\DEMO.TXT For Output As # N1 Print # N1, Lnea de prueba 1 Print # N1, Lnea de prueba 2 Close # N1 Open C:\DATA\DEMO.TXT For Input As # N1 Line Input # N1, LINE1 MsgBox LINE1 Line Input # N1, LINE2 MsgBox LINE2 La ejecucin del cdigo anterior produce la siguiente salida:
Pg. 164
caracteres
de
un
archivo
secuencial y los asigna a una variable de cadena. Su sintaxis es de la forma: VARIABLE = Input( N , # NMERO_ARCHIVO) A diferencia de la sentencia Input, la funcin Input() retorna todos los caracteres que lee, incluyendo comas,
retornos de carro, continuaciones de lnea, etc. Por ejemplo: Dim N1 As Integer, S As String N1 = FreeFile() Open C:\DATA\DEMO.TXT For Output As # N1 Print # N1, Lnea de prueba 1 Print # N1, Lnea de prueba 2 Close # N1 Open C:\DATA\DEMO.TXT For Input As # N1 S = Input(24, # N1) MsgBox S La ejecucin del cdigo anterior produce la siguiente salida:
Especifica si se ha llegado al final de un archivo. Su sintaxis es de la forma: VARIABLE = EOF(NMERO_ARCHIVO) Se utiliza EOF() para evitar producir un error al intentar obtener informacin ms all del final del archivo. EOF()
retorna un valor True si se ha alcanzado el final del archivo y False en caso contrario. Por ejemplo: Dim N1 As Integer Dim CADENA As String N1 = FreeFile() Open C:\DATA\DEMO.TXT For Input As # N1 While Not EOF(N1) Line Input # N1, CADENA Print CADENA Wend Close # N1 Este segmento de cdigo lee y visualiza cada lnea del archivo de texto DEMO.TXT. El bucle finaliza cuando se detecta el final del archivo. Para que el cdigo anterior funcione correctamente, no olvide poner la propiedad AutoRedraw del
formulario a True. Como ejemplo final del uso de archivos secuenciales vamos a desarrollar un sencillo editor de texto. Este editor aunque Pg. 166
sus prestaciones son bastante limitadas va ha servir para poner en prctica lo aprendido recientemente.
Pg. 167
1 cuadro de texto 1 control CommonDialog Seguidamente indican: debe establecer las propiedades que se
Form1 Nombre Caption Text1 Nombre MultiLine ScrollBars Text CommonDialog1 Nombre CancelError CommonDialog1 True TxtEditor True 3-Both FrmEditor Editor
Una
vez
establecidas
las
propiedades
de
la
interfaz
Private Sub Form_Resize() TxtEditor.Move 0, 0, ScaleWidth, ScaleHeight End Sub Private Sub MnuArchivoNuevo_Click() TxtEditor = End Sub
Pg. 168
Private Sub MnuArchivoAbrir_Click() Dim FILTRO As String, FILE As String Dim N1 As Integer, CADENA As String On Error GoTo ERROR_ABRIR FILTRO = Archivos de texto (*.TXT)|*.TXT CommonDialog1.Filter = FILTRO CommonDialog1.ShowOpen FILE = CommonDialog1.FileName N1 = FreeFile() CADENA = TxtEditor = Open FILE For Input As # N1 While Not EOF(N1) Input # N1, CADENA TxtEditor = TxtEditor & CADENA & vbCrLf Wend Close # N1 FrmEditor.Caption = Editor - & FILE SALIR_ABRIR: Exit Sub ERROR_ABRIR: MsgBox Err.Description Resume SALIR_ABRIR End Sub Private Sub MnuArchivoGuardar_Click() Dim FILTRO As String, FILE As String Dim N1 As Integer
Pg. 169
On Error GoTo ERROR_GUARDAR FILTRO = Archivos de texto (*.TXT)|*.TXT CommonDialog1.Filter = FILTRO CommonDialog1.ShowSave FILE = CommonDialog1.FileName N1 = FreeFile() Open FILE For Output As # N1 Print # N1, TxtEditor Close # N1 FrmEditor.Caption = Editor - & FILE SALIR_GUARDAR: Exit Sub ERROR_GUARDAR: MsgBox Err.Description Resume SALIR_GUARDAR End Sub
La contiene
sentencia la
Err.Description asociada a
retorna un
una en
cadena tiempo
que de
descripcin
error
ejecucin. La sentencia Resume continua la ejecucin en la etiqueta especificada cuando termina una rutina de gestin de errores. ARCHIVOS DE ACCESO ALEATORIO En los archivo de acceso aleatorio el almacenamiento de los datos se hace mediante registros (todos de la misma
Pg. 170
longitud), lo cuales son identificados mediante un nico nmero denominado ndice. El primer registro de un archivo tiene como ndice 1, el segundo tiene ndice 2 y as sucesivamente. La informacin contenida en un archivo de este tipo puede ser accedida individual en se cualquier asocia con secuencia, su ya que cada y registro puede ser
respectivo
ndice
archivos de tipo aleatorio se presentan a continuacin. Sentencia Open Permite abrir un archivo. La sintaxis para acceder
aleatoriamente a un archivo es: Open NOMBRE_ARCHIVO For Random As # NMERO_ARCHIVO Len = LON_REG Donde NOMBRE_ARCHIVO es una cadena que especifica el
nombre del archivo que se debe ser abierto en modo Random. El parmetro NMERO_ARCHIVO es un entero cuyo valor est comprendido entre 1 y 511. Este nmero ser asociado con el nombre del archivo mientras permanezca abierto. LON_REG es un entero que establece la longitud del
registro para archivos aleatorios. Sentencia Put Permite grabar un registro en un archivo abierto para
Put # NMERO_ARCHIVO, NMERO_REG, VARIABLE Donde NMERO_ARCHIVO es el nmero bajo el cual se abri el archivo, NMERO_REG es el nmero correspondiente al registro que se va ha grabar y VARIABLE contiene los datos a escribir en el archivo. Por ejemplo: Dim N1 As Integer, REG As DISTRITO REG.ID_DISTRITO = L09 REG.NOMBRE = Chorrillos N1 = FreeFile() Open C:\DATA\RAND1.DAT For Random As # N1 Len = Len(REG) Put # N1, 1, REG Close # N1 El segmento de cdigo anterior utiliza una variable REG de tipo DISTRITO, cuya definicin es la siguiente: Private Type DISTRITO ID_DISTRITO As String * 3 NOMBRE As String * 30 End Type Sentencia Get Permite acceso leer un registro procedente los datos de en un archivo de
aleatorio,
almacenando
una
variable
Get # NMERO_ARCHIVO, NMERO_REG, VARIABLE Donde NMERO_ARCHIVO es el nmero bajo el cual se abri el archivo, NMERO_REG es el nmero correspondiente al registro que se va ha leer y VARIABLE almacena los datos del registro ledo. Por ejemplo: Dim N1 As Integer, I As Integer, REG As DISTRITO N1 = FreeFile() Open C:\DATA\RAND1.DAT For Random As # N1 Len = Len(REG) I = 1 While Not EOF(# N1) Get # N1, I, REG MsgBox REG.ID_DISTRITO & & REG.NOMBRE I = I + 1 Wend Close # N1 Cuando EOF() se utiliza con un archivo aleatorio, retorna un valor True si una sentencia Get intenta leer y no puede porque ha alcanzado el final del archivo. Funcin LOF Retorna determinado sintaxis es: el nmero de bytes (caracteres) la que ocupa Open. un Su
archivo
abierto
mediante
sentencia
Pg. 173
Donde NMERO_ARCHIVO es el nmero con el que se abri el archivo. Esta funcin es de utilidad, porque aplicada a un archivo de acceso aleatorio, permite conocer el nmero de registros almacenados en el archivo. Para ello debe dividir el valor retornado entre la longitud del registro. Como ejemplo,
considere lo siguiente: Dim N1 As Integer, REG As DISTRITO Dim NUM_REGS As Integer, I As Integer N1 = FreeFile() Open C:\DATA\RAND1.DAT For Random As # N1 Len = Len(REG) NUM_REGS = LOF(N1) / Len(REG) For I = 1 To NUM_REGS Get # N1, I, REG MsgBox REG.ID_DISTRITO & & REG.NOMBRE Next Close # N1 Funcin Loc Esta funcin retorna la posicin actual dentro de un
La funcin Loc() aplicada a un archivo de acceso aleatorio retorna el nmero del ltimo registro ledo o grabado en el archivo especificado. Por ejemplo: Dim N1 As Integer, REG As DISTRITO Dim NUM_REGS As Integer, I As Integer N1 = FreeFile() Open C:\DATA\RAND1.DAT For Random As # N1 Len = Len(REG) NUM_REGS = LOF(N1) / Len(REG) I = 1 Do While True Get # N1, I, REG MsgBox REG.ID_DISTRITO & & REG.NOMBRE I = I + 1 If Loc(N1) = NUM_REGS Then Exit Do Loop Close # N1 La sentencia If finaliza el bucle si se ha alcanzado el ltimo registro. Como ejemplo final vamos a desarrollar una aplicacin que permita realizar el mantenimiento de los datos almacenados en el archivo C:\DATA\CURSO.DAT.
Pg. 175
Los
botones
ubicados
en
el
marco
Navegador
(Primero,
Anterior, Siguiente y Ultimo, de izquierda a derecha) permiten desplazarse a travs de los registros del archivo. Los botones ubicados en el marco Mantenimiento (Nuevo, Editar, Guardar y Eliminar, de izquierda a derecha) permiten realizar las
operaciones bsicas de mantenimiento de los registros. Para el desarrollo de la presente aplicacin ubicar los siguientes controles al formulario: 3 marcos 4 etiquetas 4 cuadros de texto 9 botones de comando Seguidamente proceda a establecer las propiedades que se indican: Form1 Pg. 176
Nombre Caption BorderStyle StarUpPosition Frame1 Nombre Caption Frame2 Nombre Caption Frame3 Nombre Caption Label1 Nombre Caption Label2 Nombre Caption Label3 Nombre Caption Label4 Nombre Caption
FraIngreso
FraNavegador Navegador
FraMantenimiento Mantenimiento
LblCodigo Cdigo:
LblNombre Nombre:
LblVacantes Vacantes:
LblProfesor Profesor:
Pg. 177
Style
1-Graphical
Style Command8 Nombre Caption Picture Style Command9 Nombre Caption Picture Style
1-Graphical
CmdEliminar
C:\FundVB\Bitmaps\Delete.bmp 1-Graphical
Pg. 180
TxtVacantes.Locked = Not Ok TxtProfesor.Locked = Not Ok CmdNuevo.Enabled = Not Ok CmdEditar.Enabled = Not Ok CmdGuardar.Enabled = Ok CmdEliminar.Enabled = Not Ok CmdPrimero.SetFocus If Ok Then TxtCodigo.SetFocus End Sub Private Sub ABRIR_ARCHIVO() On Error GoTo ERROR_ABRIR: N1 = FreeFile() Open C:\DATA\CURSO.DAT For Random As # N1 Len = Len(REG) SALIR_ABRIR: Exit Sub ERROR_ABRIR: MsgBox Err.Description Resume SALIR_ABRIR: End Sub Private Sub Form_Load() Call ABRIR_ARCHIVO End Sub Private Sub Form_Activate() MODO_EDITAR False Call CmdPrimero_Click
Pg. 181
End Sub Private Sub CmdPrimero_Click() POSICION = 1 Get # N1, POSICION, REG TxtCodigo = REG.ID_CURSO TxtNombre = REG.NOMBRE TxtVacantes = Str(REG.VACANTES) TxtProfesor = REG.PROFESOR End Sub Private Sub CmdAnterior_Click() POSICION = Loc(N1) - 1 If POSICION = 0 Then Get # N1, 1, REG MsgBox Estamos en el primer registro Else Get # N1, POSICION, REG End If TxtCodigo = REG.ID_CURSO TxtNombre = REG.NOMBRE TxtVacantes = Str(REG.VACANTES) TxtProfesor = REG.PROFESOR End Sub Private Sub CmdSiguiente_Click() Dim ULTIMO As Integer ULTIMO = LOF(N1) / Len(REG)
Pg. 182
POSICION = Loc(N1) + 1 If POSICION = ULTIMO + 1 Then Get # N1, ULTIMO, REG MsgBox Estamos en el ltimo registro Else Get # N1, POSICION, REG End If TxtCodigo = REG.ID_CURSO TxtNombre = REG.NOMBRE TxtVacantes = Str(REG.VACANTES) TxtProfesor = REG.PROFESOR End Sub Private Sub CmdUltimo_Click() POSICION = LOF(N1) / Len(REG) If POSICION <> 0 Then Get #N1, POSICION, REG TxtCodigo = REG.ID_CURSO TxtNombre = REG.NOMBRE TxtVacantes = Str(REG.VACANTES) TxtProfesor = REG.PROFESOR End If End Sub Private Sub CmdNuevo_Click() POSICION = LOF(N1) / Len(REG) + 1 MODO_EDITAR True
Pg. 183
TxtCodigo = TxtNombre = TxtVacantes = TxtProfesor = TxtCodigo.SetFocus End Sub Private Sub CmdEditar_Click() MODO_EDITAR True End Sub Private Sub CmdGuardar_Click() REG.ID_CURSO = Trim(TxtCodigo) REG.NOMBRE = Trim(TxtNombre) REG.VACANTES = TxtVacantes REG.PROFESOR = Trim(TxtProfesor) REG.ESTADO = True Put # N1, POSICION, REG MODO_EDITAR False End Sub Private Sub CmdEliminar_Click() Dim N2 As Integer Dim I As Integer, J As Integer REG.ESTADO = False Put # N1, POSICION, REG N2 = FreeFile()
Pg. 184
Open C:\DATA\TEMPO.DAT For Random As # N2 Len = Len(REG) I = 1 J = 1 While Not EOF(N1) Get # N1, I, REG If REG.ESTADO Then Put # N2, J, REG J = J + 1 End If I = I + 1 Wend Close # N1, # N2 Kill C:\DATA\CURSO.DAT Name C:\DATA\TEMPO.DAT As C:\DATA\CURSO.DAT Call ABRIR_ARCHIVO Call CmdPrimero_Click End Sub Private Sub CmdSalir_Click() Close # N1 End End Sub
Pg. 185
Un archivo binario contiene ms que simplemente texto. Puede contener imgenes, sonido, hojas de clculo, o documentos concebidos para el procesamiento de texto. El cualquier acceso binario como permite una la posibilidad numerada de de tratar bytes,
archivo
secuencia
independientemente de la estructura del mismo. Los bytes ocupan las posiciones 1, 2, 3, etc. Por ejemplo, si se requiere
recuperar un dato de tipo entero (Integer, 2 bytes) de la posicin 3 del archivo, seran recuperados los bytes 3 y 4 para poder formar el valor del entero. Por tanto, antes de trabajar con archivos binarios es necesario conocer cmo fueron escritos los datos que contiene para poder recuperarlos correctamente. Sentencia Open Permite abrir un archivo para acceso binario. Su sintaxis es de la forma: Open NOMBRE_ARCHIVO For Binary As # NMERO_ARCHIVO Donde NOMBRE_ARCHIVO es una cadena que especifica el
nombre del archivo que se debe ser abierto en modo Binary. El parmetro NMERO_ARCHIVO es un entero cuyo valor est comprendido entre 1 y 511. Este nmero ser asociado con el nombre del archivo mientras permanezca abierto.
Permite grabar en un archivo binario tantos bytes como haya en una variable. Su sintaxis es:
Put # NMERO_ARCHIVO, POSICIN, VARIABLE Donde NMERO_ARCHIVO es el nmero bajo el cual se abri el archivo. POSICIN es el nmero de byte a partir del cual se han de grabar los datos contenidos en VARIABLE. Sentencia Get Permite leer de un archivo binario tantos bytes como
Get # NMERO_ARCHIVO, POSICIN, VARIABLE Donde NMERO_ARCHIVO es el nmero bajo el cual se abri el archivo. POSICIN es el nmero de byte a partir del cual se han de leer los datos almacenados en VARIABLE. Sentencia Seek Permite situar la posicin de lectura o de escritura en una posicin determinada dentro del archivo. Su sintaxis es:
Get # NMERO_ARCHIVO, POSICIN, VARIABLE Donde POSICIN es el nmero de byte a partir del cual queremos leer o escribir dentro del archivo.
Pg. 187
Como
ejemplo
vamos
desarrollar
una
aplicacin
que
permite guardar cifrados los textos ingresados en un cuadro de texto. Para ello crear un nuevo proyecto y ubicar en el formulario un cuadro de texto (TxtMensaje) y un botn de
En el cdigo la funcin Mid() obtiene el carcter I de la caja de texto, la funcin Asc() obtiene su cdigo ANSI, al que sumamos el valor de CLAVE, para despus obtener el resto de la divisin entre 256, con el fin de mantenernos en el rango de 0 a 255 (rango de valores de la tabla de caracteres ANSI). Por ltimo, la funcin Chr() retorna el carcter correspondiente al valor obtenido, el cual es almacenado en el archivo binario. Pg. 188
Por ejemplo si ingresa el mensaje HOLA se almacena en el archivo como KROD (lo puede comprobar mediante el Bloc de notas), ya que el valor ANSI de la H es 72, este carcter al sumarle el valor de CLAVE sera el 75 (72 + 3), que es la K, y as sucesivamente (ver la tabla de caracteres ANSI). El descifrado sera el proceso inverso, para ello crear un nuevo formulario y ubicar un botn de comando (CmdDescifrar), luego ingresar el cdigo siguiente:
Const CLAVE As Integer = 3 Private Sub CmdDescifrar_Click() Dim N1 As Integer, I As Integer Dim CAR As String * 1, CADENA As String N1 = FreeFile() Open C:\DATA\DEMO.BIN For Binary As # N1 Get # N1, , CAR While Not EOF(N1) CAR = Chr((Asc(CAR) + (256 - Val(CLAVE))) Mod 256) CADENA = CADENA & CAR Get # N1, , CAR Wend MsgBox CADENA End Sub
Pg. 189
CAPTULO 8
GRFICOS
Un grfico tiene por finalidad facilitar la legibilidad de la informacin que se presenta: un grfico vale ms que mil palabras.
LOS COLORES En Visual Basic se pueden manipular los colores mediante tres formas diferentes: cdigo hexadecimal, la funcin RGB() y la funcin QBColor(). Cdigo Hexadecimal Un cdigo de color se compone de seis dgitos
hexadecimales, cuyos valores van desde &H000000& (cero) hasta &HFFFFFF& mediante: (16 777 215). De forma prctica podemos guiarnos
&HAAVVRR& Donde AA representa al color azul, VV al color verde y RR al color rojo. Todos los dems colores se obtienen mezclando estos tres colores.
Pg. 190
Como ejemplo considere los siguientes cdigos de colores que se presentan a continuacin:
AZUL
= &HFF0000&
NEGRO = &H000000&
La funcin RGB() La funcin RGB() retorna un nmero de tipo entero largo (Long) que representa el valor de un color. Su sintaxis es: COLOR = RGB(nROJO, nVERDE, nAZUL) Donde nROJO, nVERDE, nAZUL son enteros comprendidos entre 0 y 255. La siguiente tabla muestra algunos colores estndar y sus valores de nROJO, nVERDE y nAZUL:
Pg. 191
El
ejemplo
anterior
(cdigo
hexadecimal)
utilizando
la
NEGRO = RGB(0, 0, 0) La funcin QBColor() La funcin QBColor() retorna un nmero de tipo entero largo (Long) que representa el cdigo de color RGB correspondiente al nmero de color especificado. Su sintaxis es: COLOR = QBColor(nCOLOR) Donde el argumento nCOLOR es un entero entre 0 y 15; los valores que puede tomar se presentan en la siguiente tabla:
Color
Nmero 8 9 10 11 12 13 14 15 Gris
Color
Azul claro Verde claro Cin claro Rojo claro Magenta claro Amarillo claro Blanco brillante
Pg. 192
El
ejemplo
inicial
(cdigo
hexadecimal)
utilizando
la
NEGRO = QBColor(0)
EL SISTEMA DE COORDENADAS Todas las operaciones grficas descritas en este captulo utilizan el sistema de coordenadas del rea de dibujo (que puede ser la pantalla, un formulario, un cuadro de imagen, o cualquier otro contenedor). El sistema de coordenadas es una cuadrcula bidimensional que define ubicaciones del rea de dibujo. Las ubicaciones de esta cuadrcula se definen mediante las coordenadas del rea de dibujo:
( X ,Y ) Donde el valor de
eje X, con la ubicacin predeterminada (cero) en el extremo izquierdo. El valor de Y es la ubicacin del punto sobre el
eje Y , con la ubicacin predeterminada (cero) en el extremo superior. Este sistema de coordenadas se ilustra en la
El
sistema
de
coordenadas
de
Visual
Basic
tiene
las
siguientes reglas:
El
sistema
de
coordenadas
predeterminado
de
cualquier
contenedor empieza por la coordenada (0, 0) en la esquina superior izquierda del contenedor.
Las
unidades a
de lo
medida largo En
utilizadas de los
para ejes
definir se cada
las
ubicaciones
colectivamente
escala.
Visual
Basic,
coordenadas de dicho control. Establecer las coordenadas de dibujo Para establecer las coordenadas de dibujo del contenedor se utilizan las propiedades CurrentX y CurrentY de dicho
Por ejemplo, las instrucciones siguientes establecen las coordenadas de dibujo a la esquina superior izquierda de un cuadro de imagen: Picture1.CurrentX = 0 Picture1.CurrentY = 0 De forma predeterminada, los formularios y los cuadros de imagen utilizan un sistema de coordenadas en el que cada unidad corresponde a un twip (1 440 twips equivalen a una pulgada y 567 twips son aproximadamente un centmetro). Cambiar la unidad de medida del sistema de coordenadas Para cambiar la unidad de medida del sistema de
coordenadas su establece la propiedad ScaleMode a uno de los valores enumerados en la tabla siguiente:
Valor de ScaleMode 1 2 3 4 5 6 7
Descripcin
Pg. 195
Por
ejemplo
la
siguiente
orden
establece
la
escala
pulgadas de un cuadro de imagen: Picture1.ScaleMode = 5 Crear una escala personalizada Para crear una escala personalizada se pueden utilizar las propiedades ScaleLeft, ScaleTop, ScaleWidth y ScaleHeight de un determinado objeto. Las propiedades ScaleLeft y ScaleTop asignan valores
numricos a la esquina superior izquierda de un objeto. Por ejemplo, las instrucciones siguientes establecen el valor de la esquina superior izquierda de un cuadro de imagen: Picture1.ScaleLeft = 100 Picture1.ScaleTop = 100 Las propiedades ScaleWidth y ScaleHeight definen las
unidades segn el ancho y el alto real del rea de dibujo (si el objeto cambia de tamao posteriormente, las unidades siguen siendo las mismas). Por ejemplo las instrucciones siguientes definen la unidad horizontal como 1/1 000 del ancho interno actual del cuadro de imagen y la unidad vertical como 1/500 del alto interno actual del cuadro de imagen: Picture1.ScaleWidth = 1000 Picture1.ScaleHeight = 500 Pg. 196
A manera de ejemplo considere la escala mostrada en la siguiente figura, la cual tiene ScaleLeft, ScaleTop, ScaleWidth y ScaleHeight establecidas todas a 100.
Una forma ms eficiente de personalizar la escala de un sistema de coordenadas es utilizando el mtodo Scale. Su
sintaxis es: OBJETO.Scale (X1, Y1) (X2, Y2) Donde los valores de (X1, Y1) determinan las coordenadas de la esquina superior izquierda, los valores de (X2, Y2)
determinan los valores de la esquina inferior derecha. Para obtener el mismo sistema de coordenadas de ejemplo anterior (donde se utiliz las propiedades ScaleLeft, ScaleTop,
Pg. 197
Donde coordenadas
es
evidente y las
que dos
las
diferencias Y
entre
las
dos los
coordenadas
determinan
MTODOS GRFICOS Visual Basic proporciona varios mtodos para la creacin de grficos. Los mtodos grficos, resumidos en la tabla
Mtodo Cls
Dibuja un punto individual. Devuelve el color de un punto especificado. Dibuja una lnea, un rectngulo o un cuadro relleno.
Dibuja una crculo, una elipse o un arco. Dibuja grficos en ubicaciones arbitrarias. Imprime imagen. texto en formularios y cuadros de
Para
que
la
mayora
de
los
mtodos
grficos
funcionen
correctamente la propiedad AutoRedraw del formulario debe est activada, caso contrario el dibujo no se visualizar. Puntos Pg. 198
Para el dibujo de puntos se usar el mtodo Pset, cuya sintaxis es: OBJETO.Pset (X, Y), COLOR Donde X, Y son valores de tipo Single que indican las coordenadas horizontal (eje X) y vertical (eje Y) del punto que se va a dibujar. COLOR es un entero largo (Long) que indica el color RGB especificado para el punto, si se omite se usar el valor actual de la propiedad ForeColor de OBJETO. Como ejemplo vamos a crear una sencilla aplicacin que permita dibujar puntos en la posicin especificada mediante el ratn, con la posibilidad de poder seleccionar colores (tipo Paint).
Pg. 199
Para el desarrollo de la presente aplicacin proceda a crear un nuevo proyecto y agregar al formulario 34 cuadros de imagen. Luego ingresar el cdigo mostrado.
Dim COLOR As Single Private Sub Form_Load() PicLienzo.ScaleMode = 3 PicLienzo.DrawWidth = 5 COLOR = RGB(0, 0, 0) End Sub Private Sub PicColor_Click(Index As Integer) COLOR = PicColor(Index).BackColor PicMuestra.BackColor = COLOR End Sub Private Sub PicLienzo_MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Single) If Button = vbLeftButton Then PicLienzo.PSet (X, Y), COLOR End If End Sub Pg. 200
En el ejemplo anterior se utiliza la propiedad DrawWidth, la cual sirve para fijar el tamao del punto dibujado. Para que el mtodo Pset funcione correctamente la
propiedad ScaleMode debe estar establecida a pixeles. Lneas, rectngulos y cuadros rellenos Para dibujar lneas, rectngulos o cuadros rellenos
utilice el mtodo Line, cuya sintaxis es: OBJETO.Line (X1, Y1) - (X2, Y2), COLOR, B/BF Donde X1, Y1 son valores de tipo Single que indican las coordenadas del punto inicial para la lnea o el rectngulo. X2, Y2 son valores de tipo Single que indican las coordenadas del punto final para la lnea o el rectngulo que se est dibujando. COLOR es un entero largo (Long) que indica el color RGB especificado para dibujar la lnea, si se omite se usar el valor actual de la propiedad ForeColor de OBJETO. Los
parmetros B y BF son opcionales: B hace que se dibuje un rectngulo usando las coordenadas para especificar las esquinas opuestas del mismo. BF especifica que el cuadro se rellena con el mismo color especificado mediante el parmetro COLOR. A manera de ejemplo vamos a mejorar nuestro sencillo
Editor grfico, de tal forma que adems de dibujar puntos permita tambin dibujar lneas cuando se mantenga pulsado el botn izquierdo del ratn. Pg. 201
Para lograr nuestro cometido aadir el siguiente cdigo a la aplicacin anterior: Private Sub PicLienzo_MouseMove(Button As Integer, _ Shift As Integer, X As Single, Y As Single) If Button = vbLeftButton Then PicLienzo.Line -(X, Y), COLOR End If End Sub Otro ejemplo sencillo para ilustrar como se usa el mtodo Line para dibujar rectngulos y cuadros rellenos se presenta a continuacin, consiste en dibujar una bandera directamente
Pg. 202
Para este ejemplo crear una nueva aplicacin e ingresar el cdigo mostrado: Private Sub Form_Click() Height = 3 * 1440 Width = 5 * 1440 BackColor = QBColor(12) ForeColor = QBColor(15) Line (Width / 3, 0) - ((Width / 3) * 2, Height), , BF End Sub Crculos, elipses y arcos Para dibujar crculos, elipses o arcos se utiliza el
mtodo Circle, cuya sintaxis es: OBJETO.Circle (X, Y), RADIO, COLOR, INICIO, FIN, ASPECTO
Pg. 203
Donde X, Y son valores de tipo Single que indican las coordenadas para el punto central del crculo, elipse o arco. RADIO es un valor de tipo Single que indica el radio del
crculo, elipse o arco. COLOR es un valor entero de tipo Long que indica el color RGB del contorno del crculo, elipse o arco (es opcional). INICIO y FIN son valores de tipo Single, que especifican (en radianes) las posiciones de inicio y de fin del arco (son opcionales). ASPECTO es un valor de tipo Single que indica la relacin de aspecto del crculo, el valor
predeterminado es 1.0, lo que produce un crculo perfecto (no elptico) en cualquier pantalla (opcional). A manera de ejemplo vamos a mejor an ms nuestro Editor grfico de tal manera que se podr dibujar puntos, lneas, rectngulos, crculos y elipses.
Pg. 204
Para
el
desarrollo
de
la
presente
aplicacin
se
debe
aadir al ejemplo anterior 5 botones de comandos y formar una matriz de controles (CmdForma). Luego ingresar el siguiente cdigo:
Dim COLOR As Single Dim FORMA As Integer Dim X1 As Single, Y1 As Single, X2 As Single, Y2 As Single Private Sub CmdForma_Click(Index As Integer) FORMA = Index + 1 End Sub Private Sub Form_Load() COLOR = RGB(0, 0, 0) FORMA = 1 PicLienzo.ScaleMode = 3 PicLienzo.DrawWidth = 3 End Sub Private Sub PicColor_Click(Index As Integer) COLOR = PicColor(Index).BackColor PicMuestra.BackColor = COLOR End Sub Private Sub PicLienzo_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) If Button = vbLeftButton Then X1 = X Y1 = Y End If End Sub
Pg. 205
Private Sub PicLienzo_MouseUp(Button As Integer, Shift As Integer, _ X As Single, Y As Single) If Button = vbLeftButton Then X2 = X Y2 = Y RADIO = Sqr((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2)) / 2 Select Case FORMA Case 1 PicLienzo.PSet (X, Y), COLOR Case 2 PicLienzo.Line -(X, Y), COLOR Case 3 PicLienzo.Line (X1, Y1)-(X2, Y2), COLOR, B Case 4 PicLienzo.Circle (X, Y), RADIO, COLOR Case 5 PicLienzo.Circle (X, Y), RADIO, COLOR, , , 0.5 End Select End If End Sub
CONTROLES GRFICOS Visual Basic proporciona tres controles grficos diseados para crear efectos grficos en las aplicaciones:
Pg. 206
Control Line Line es un control grfico que se muestra como una lnea horizontal, vertical o diagonal. El control Line tiene una funcionalidad limitada y est pensado para usos sencillos. Para usos ms avanzados debe usar el mtodo Line.
Descripcin Devuelve o establece el color de la lnea. Devuelve o establece el estilo de la lnea. Devuelve o establece el ancho de la lnea. Devuelven o establecen las coordenadas del punto inicial (X1, Y1) y del punto final
rectngulo, un cuadrado, una elipse, un crculo, un rectngulo redondeado o un cuadrado redondeado. El control Shape presenta propiedades similares al control Line (BorderColor, BorderStyle, BorderWidth). Adicionalmente, la propiedad Shape del control Shape proporciona seis formas predefinidas. En la tabla siguiente se enumeran todas las
formas predefinidas, sus valores y las constantes de Visual Basic equivalentes: Pg. 207
Estilo 0 1 2 3 4 5
Las seis formas predefinidas que presenta el control Shape se muestran en el siguiente formulario:
GRAFICACIN MATEMTICA Como la mayor parte de las ecuaciones matemticas expresa relaciones complicadas en una, dos tres o ms dimensiones,
tratar de entenderlas sin grficas es casi lo mismo que tratar de caminar con los ojos vendados. Funciones algebraicas Pg. 208
Como ejemplo de este tipo de grficas vamos a dibujar una parbola, cuya ecuacin matemtica (ecuacin general de segundo grado) es de la forma:
f ( x) = Ax 2 + Bx + C
Para
realizar
la
presente
aplicacin
crear
un
nuevo
proyecto y aadir al formulario un cuadro de imagen (PicPlano), tres cuadros de texto (TxtA, TxtB, TxtC) y un botn de comandos (CmdVisualizar). Los aspectos decorativos (etiquetas, marcos, etc.) quedan a criterio del lector. Luego ingresar el siguiente cdigo: Dim A As Double, B As Double, C As Double Pg. 209
Function F(ByVal X As Single) As Single F = A * (X * X) + B * X + C End Function Private Sub CmdVisualizar_Click() Dim X As Single A = TxtA B = TxtB C = TxtC PicPlano.Cls PicPlano.Scale (-100, 100)-(100, -100) PicPlano.Line (-100, 0)-(100, 0) PicPlano.Line (0, -100)-(0, 100) PicPlano.CurrentX = -10 PicPlano.CurrentY = F(-10) For X = -10 To 10 PicPlano.Line -(X, F(X)) Next End Sub Funciones trigonomtricas Graficar tangente, funciones trigonomtricas secante, cosecante) (seno, no coseno, es nada
cotangente,
Pg. 210
Para realizar nuestra aplicacin de ejemplo crear un nuevo proyecto y aadir al formulario un cuadro de imagen (PicPlano) y 6 botones de comandos (CmdFuncion, es decir se trata de una matriz de controles). Luego ingresar el cdigo siguiente: Private Sub CmdFuncion_Click(Index As Integer) PicPlano.Cls Dibuja (Index) End Sub Private Sub Dibuja(OP As Integer) PicPlano.Scale (-5, 5)-(5, -5) PicPlano.Line (-5, 0)-(5, 0) PicPlano.Line (0, -5)-(0, 5) DosPi = 8 * Atn(1) Pg. 211
Dim X As Single For X = -DosPi To DosPi Step 0.025 Select Case OP Case 0 Y = Sin(X) Case 1 Y = Cos(X) Case 2 Y = Sin(X) / Cos(X) Case 3 If X < -0.001 Or X > 0.001 Then Y = Cos(X) / Sin(X) End If Case 4 Y = 1 / Cos(X) Case 5 If X < -0.001 Or X > 0.001 Then Y = 1 / Sin(X) End If End Select PicPlano.PSet (X, Y) Next End Sub
Para el caso de las grficas de ecuaciones polares tampoco es complicado, slo hay que tener presente las siguientes
consideraciones. Dado un punto P( x, y ) del plano, tal punto se encuentra a una distancia
respecto del
( x, y )
coordenadas
polares
(r , )
entonces
se
y = r sen
De donde: r 2 = x 2 + y 2 ; tan =
y x
Pg. 213
continuacin
presentamos
algunas
ecuaciones
polares
caractersticas:
Nombre Circunferencia de radio n Trbol de cuatro hojas Cardioide Limazn Lemniscata Ptalo de rosa Espiral
Ecuacin
r= n r = 2 cos 2 r = 1 + cos r = 1 + 2 cos
r 2 = cos 2
r = sen 4
r=
2n
r = en
r = (cos 2 )3
r = 3 cos 2 cos 6
r= r=
1 + 1 cos 2
Estrofoide
1 cos 2 + tan 2
Para ecuaciones
realizar polares
una crear
aplicacin un nuevo
que
permita y
dibujar al
proyecto
aadir
formulario 1 cuadro de imagen (PicPlano), un cuadro de lista (LstEcuacion) y un botn de comandos (CmdVisualizar). La
Pg. 214
Luego
proceda
ingresar
el
cdigo
que
se
presenta
continuacin:
Dim OP As Integer
Function F(ByVal THETA As Single) As Single Select Case OP Case 0 : F = 2 Case 1 : F = 2 * Cos(2 * THETA) Case 2 : F = 1 + Cos(THETA) Case 3 : F = 1 + 2 * Cos(THETA) Case 4 : If Cos(2 * THETA) >= 0 Then F = Sqr(Cos(2 * THETA)) Case 5 : F = Sin(4 * THETA) Case 6 : F = THETA / 2 Case 7 : F = Exp(THETA / 8) Case 8 : F = Cos(2 * THETA) * Cos(2 * THETA) * Cos(2 * THETA)
Pg. 215
Case 9 : F = 3 * Cos(2 * THETA) - Cos(6 * THETA) Case 10: F = 1 / Cos(2 * THETA) + 1 Case 11: If Int(THETA / 45) <> THETA / 45 Or THETA <> 0 _ Then F = 1 / (Cos(2 * THETA) + Tan(2 * THETA)) End Select End Function Private Sub LstEcuacion_Click() OP = LstEcuacion.ListIndex End Sub Private Sub CmdVisualizar_Click() Dim X As Single, Y As Single Dim I As Single, R As Single DosPi = 8 * Atn(1) PicPlano.Cls PicPlano.ScaleMode = 3 PicPlano.Scale (-3.25, 3.25)-(3.25, -3.25) PicPlano.Line (-3.25, 0)-(3.25, 0) PicPlano.Line (0, -3.25)-(0, 3.25) For I = 0 To DosPi Step 0.01 R = F(I) X = R * Cos(I) Y = R * Sin(I) PicPlano.PSet (X, Y), QBColor(1) Next End Sub
La matemtica fractal es producto de la interaccin de un matemtico genial (Benoit B. Mandelbrot) y la computadora. El ahora ubicuo trmino fractal se debe al hecho de que la matemtica generadas fractal no tienen trabaja una con relacin fracciones, de enteros las figuras sus
entre
componentes, de modo que ninguna dimensin es producto de otra multiplicada por un entero. Es decir, al dividir una dimensin entre otra nunca se obtiene un resultado exacto. Los fractales generan figuras y estas figuras resultan tener una extraa
similitud con algunas formas que genera la naturaleza. Entre las ecuaciones para generar fractales Mandelbrot ha producido una en particular que ha recibido el nombre de
Conjunto de Mandelbrot. Esta ecuacin se resuelve en el campo de los nmeros comprendidos entre las longitudes -2.0 a +0.5 y las latitudes -1.25 a +1.25, est dominado por un gran mar fractal con bahas y entrantes. La expresin matemtica del Conjunto de Mandelbrot es:
2 Z n +1 = Z n + C
Donde C es un nmero complejo constante y Z es un nmero complejo variable que permite obtener las respectivas
iteraciones (los valores de cada punto del paisaje fractal, latitud y longitud).
Pg. 217
Como
ejemplo Para
vamos ello
obtener
las a
tres
C
primeras cualquier
iteraciones.
asignamos
valores
de
posicin arbitraria dentro del conjunto, digamos C = 1 + i y para arrancar las iteraciones podemos comenzar con Z 0 = 0 , luego:
Z1 = (0) 2 + (1 + i ) = 1 + i Z 2 = (1 + i ) 2 + (1 + i ) = 1 + 3i Z 3 = (1 + 3i )2 + (1 + i ) = 7 + 7i
Cuando se continua desarrollando el Conjunto de Mandelbrot se obtiene una figura similar a la mostrada:
Pg. 218
Para
el
desarrollo
de
la
presente
aplicacin
crear
un
nuevo proyecto y aadir sobre el formulario un cuadro de imagen (PicPlano) y un botn de comandos (CmdVisualizar), luego
Pg. 219
PasoY = (DimY - OrigY) / MaxY For I = 0 To MaxX For J = 0 To MaxY PosX = OrigX + I * PasoX PosY = OrigY + J * PasoY IterX = 0 : IterY = 0
Terminar = False Pasos = 0 While (Not Terminar) TempX = (IterX * IterX) - (IterY * IterY) + PosX IterY = 2 * (IterX * IterY) + PosY IterX = TempX Pasos = Pasos + 1 If Hipotenusa(Abs(IterX), Abs(IterY)) >= 2 Then Terminar = True End If If (Pasos >= Limite) Then Terminar = True End If Wend If (Pasos < Limite) Then PicPlano.PSet (I, J), QBColor(Pasos) End If Next Next End Sub
Pg. 220
En este captulo, debido a las limitaciones de espacio y materia, tan slo se ofrece el camino de acceso a unos pocos de los diversos temas que abarca el fascinante mundo de la
programacin de grficos por computadora. Muchos de estos temas siguen siendo materia de
investigacin (como el caso de los fractales), por lo que si Ud. desea profundizar en este laberinto de fascinacin, no hay la garanta de un retorno sano y salvo a nuestro universo mundano.
Pg. 221
ELABORADO POR
La presente Gua de Laboratorio de Microsoft Visual Basic, se elabor con la finalidad de complementar la parte terica con la parte prctica del curso. Los problemas presentan un grado de dificultad gradual, es decir, en cada prctica primero se comienzan con problemas muy sencillos con la finalidad de que el estudiante esclarezca dudas y quede claro en los
conceptos asimilados en la teora, y luego en los problemas posteriores se va incrementando el nivel de dificultad. Esta gua explora una gran variedad de materias y contiene muchos problemas recopilados que a lo largo las de varios aos de de los
experiencia.
Espero
satisfaga
necesidades
estudiantes y colegas, ya que ha sido elaborada teniendo en cuenta los objetivos de aprendizaje del curso. Si desean compartirla con otros colegas, me agradara
mucho que lo hicieran, con la nica condicin de que siempre se respete el derecho del autor. Desde ya les deseo la mejor de las suertes en el
Microsoft
Visual Basic
Pg. 223
GUA DE LABORATORIO N 1 Objetivos Luego de completar este laboratorio, el estudiante ser capaz de:
Identificar
los
elementos
del
entorno
integrado
de
Aadir controles a un formulario. Establecer las propiedades de los controles. Trabajar con procedimientos de eventos. Crear una aplicacin simple con Microsoft Visual Basic.
Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab1, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 Elaborar una aplicacin que permita calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, pago por hora de trabajo y un descuento fijo al sueldo bruto del 20 por 100. Los clculos a efectuar para obtener el salario neto de un trabajador se muestran a continuacin: SalarioBruto = HorasTrabajadas * PagoPorHora Descuento = 0.2 * SalarioBruto SalarioNeto = SalarioBruto - Descuento El diseo de la interfaz debe ser similar a la figura mostrada: Pg. 224
Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 2 marcos 6 etiquetas 6 cajas de texto 3 botones de comando Una vez ubicados los controles, establezca las propiedades segn se indica: Form1 Nombre BorderStyle Caption Moveable StartUpPosition Frame1 Nombre FraIngreso Pg. 225 FrmSalarioNeto 3-Fixed Dialog Clculo del salario neto False 2-CenterScreen
Caption Frame2 Nombre Caption Label1 Nombre AutoSize Caption Label2 Nombre AutoSize Caption Label3 Nombre AutoSize Caption Label4 Nombre AutoSize Caption Label5 Nombre AutoSize Caption
Ingreso de datos:
AutoSize Caption Text1 Nombre Text Text2 Nombre Text Text3 Nombre Text Text4 Nombre Text Text5 Nombre Text Text6 Nombre Text Command1 Nombre Caption
TxtApellidosNombres
TxtHorasTrabajadas
TxtPagoPorHora
TxtSalarioBruto
TxtDescuento
TxtSalarioNeto
CmdAceptar
&Aceptar
&Limpiar
CmdSalir
&Salir
Luego de establecer las propiedades para los controles, debe aadir cdigo a la aplicacin. Para ello haga doble click sobre el botn Aceptar e ingrese el siguiente cdigo: Private Sub CmdAceptar_Click() Dim HorasTrabajadas As Integer, PagoPorHora As Double Dim SalarioBruto As Double Dim Descuento As Double Dim SalarioNeto As Double HorasTrabajadas = Val(TxtHorasTrabajadas) PagoPorHora = Val(TxtPagoPorHora) SalarioBruto = HorasTrabajadas * PagoPorHora Descuento = 0.2 * SalarioBruto SalarioNeto = SalarioBruto - Descuento TxtSalarioBruto = Str(SalarioBruto) TxtDescuento = Str(Descuento) TxtSalarioNeto = Str(SalarioNeto) End Sub A continuacin haga doble click sobre el botn Salir y aada el siguiente cdigo: Private Sub CmdSalir_Click() End End Sub Guarde y luego ejecute la aplicacin que acaba de crear. Pruebe ingresando diferentes valores.
Pg. 228
Luego, haga doble click sobre el botn Limpiar y aada el siguiente cdigo: Private Sub CmdLimpiar_Click() TxtApellidosNombres = TxtHorasTrabajadas = TxtPagoPorHora = TxtSalarioBruto = TxtDescuento = TxtSalarioNeto = TxtApellidosNombres.SetFocus End Sub Guarde y ejecute su aplicacin. Cmo afecta el cdigo aadido en el botn Limpiar a la aplicacin?. Anote sus observaciones. Aplicacin N 2 El men de un restaurante rpido se muestra a continuacin: MEN Hamburguesa Cerveza Gaseosa Ensalada Salchichas Refresco Sopa Postre PRECIO (S/.) 2.50 4.00 3.00 1.50 2.00 1.00 1.50 1.50 Se desea construir una aplicacin que calcule las ventas totales al final del da, as como los impuestos a pagar (18 por 100). La interfaz de entrada y salida deber ser similar a la figura mostrada a continuacin:
Pg. 229
Para el diseo del cuadro de men utilizaremos el control Microsoft Hierarchical FlexGrid. Para tal fin, seleccione el Men Proyecto y elija la opcin Componentes:
Pg. 230
A continuacin active la casilla de verificacin Microsoft Hierarchical FlexGrid Control 6.0 OLEDB y haga click sobre el botn Aceptar. En seguida este control se aadir al Cuadro de Herramientas. Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 10 etiquetas 10 cajas de texto 1 control MSHFlexGrid 3 botones de comando En seguida, elabore el diseo de entrada y salida. Para ello proceda a establecer las propiedades segn se indica a continuacin: Form1 Nombre BorderStyle Caption Moveable StartUpPosition Label1 Nombre AutoSize Caption Label2 Nombre AutoSize Caption LblCerveza True Cerveza: LblHamburguesa True Hamburguesa: FrmRestaurante 3-Fixed Dialog Restaurante False 2-CenterScreen
Pg. 231
Label3 Nombre AutoSize Caption Label4 Nombre AutoSize Caption Label5 Nombre AutoSize Caption Label6 Nombre AutoSize Caption Label7 Nombre AutoSize Caption Label8 Nombre AutoSize Caption Label9 Nombre Caption LblVentaTotal Venta total S/. Pg. 232 LblPostre True Postre: LblSopa True Sopa: LblRefresco True Refresco: LblSalchichas True Salchichas: LblEnsalada True Ensalada: LblGaseosa True Gaseosa:
Label10 Nombre Caption MSHFlexGrid1 Nombre Font FontFixed Text1 Nombre Text Text2 Nombre Text Text3 Nombre Text Text4 Nombre Text Text5 Nombre Text Text6 Nombre Text TxtRefresco TxtSalchichas TxtEnsalada TxtGaseosa TxtCerveza TxtHamburguesa GrdMenu Arial (Negrita 10) Arial (Negrita 10) LblImpuesto Impuesto S/.
Pg. 233
Text7 Nombre Text Text8 Nombre Text Text9 Nombre Locked Text Text10 Nombre Locked Text Command1 Nombre Caption Command2 Nombre Caption Command3 Nombre Caption Picture CmdSalir CmdLimpiar CmdAceptar TxtImpuesto True TxtVentaTotal True TxtPostre TxtSopa
&Aceptar
&Limpiar
&Salir
C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Icons\Arrows\Point04.ico
Style
1-Graphical
Pg. 234
En primer lugar debemos cargar los datos a la cuadrcula. Esto lo vamos a realizar en tiempo de ejecucin al momento de cargarse en memoria el formulario. Para ello, haga doble click sobre el formulario y aada el siguiente cdigo: Private Sub Form_Load() GrdMenu.Cols = 2 GrdMenu.Rows = 9 GrdMenu.FixedCols = 0 GrdMenu.FixedRows = 1 GrdMenu.TextArray(0) = Men GrdMenu.TextArray(1) = Precio GrdMenu.TextArray(2) = Hamburguesa GrdMenu.TextArray(3) = 2.50 GrdMenu.TextArray(4) = Cerveza GrdMenu.TextArray(5) = 4.00 GrdMenu.TextArray(6) = Gaseosa GrdMenu.TextArray(7) = 3.00 GrdMenu.TextArray(8) = Ensalada GrdMenu.TextArray(9) = 1.50 GrdMenu.TextArray(10) = Salchichas GrdMenu.TextArray(11) = 2.00 GrdMenu.TextArray(12) = Refresco GrdMenu.TextArray(13) = 1.00 GrdMenu.TextArray(14) = Sopa GrdMenu.TextArray(15) = 1.50 GrdMenu.TextArray(16) = Postre GrdMenu.TextArray(17) = 1.50 End Sub Luego debemos aadir el cdigo que se encargar de
realizar los clculos. Para tal fin haga doble click sobre el botn Aceptar y proceda a ingresar lo siguiente: Pg. 235
Private Sub CmdAceptar_Click() Dim Hamburguesa As Integer, Cerveza As Integer Dim Gaseosa As Integer, Ensalada As Integer Dim Salchichas As Integer, Refresco As Integer Dim Sopa As Integer, Postre As Integer Dim VentaTotal As Double, Impuesto As Double Hamburguesa = Val(TxtHamburguesa) Cerveza = Val(TxtCerveza) Gaseosa = Val(TxtGaseosa) Ensalada = Val(TxtEnsalada) Salchichas = Val(TxtSalchichas) Refresco = Val(TxtRefresco) Sopa = Val(TxtSopa) Postre = Val(TxtPostre) VentaTotal = Hamburguesa * 2.5 + Cerveza * 4.0 _ + Gaseosa * 3.0 + Ensalada * 1.5 + Salchichas * 2.0 _ + Refresco * 1.0 + Sopa * 1.5 + Postre * 1.5 Impuesto = 0.18 * VentaTotal TxtVentaTotal = Str(VentaTotal) TxtImpuesto = Str(Impuesto) End Sub Luego, haga doble click sobre el botn Limpiar y aada el siguiente cdigo: Private Sub CmdLimpiar_Click() TxtHamburguesa = : TxtCerveza = TxtGaseosa = : TxtEnsalada = TxtSalchichas = : TxtRefresco = TxtSopa = : TxtPostre = TxtVentaTotal = : TxtImpuesto = TxtHamburguesa.SetFocus End Sub Pg. 236
A continuacin haga doble click sobre el botn Salir y aada el siguiente cdigo: Private Sub CmdSalir_Click() End End Sub Aplicacin N 3 Elaborar una aplicacin que permita calcular la edad de una persona a partir de su fecha de nacimiento. El diseo de la interfaz debe ser similar a la figura mostrada:
Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 2 etiquetas 2 cajas de texto 3 botones de comando Luego, proceda a establecer las propiedades segn se
indica a continuacin: Form1 Nombre BorderStyle Caption FrmEdad 3-Fixed Dialog Calcula la edad de una persona Pg. 237
Label1 Nombre AutoSize Caption Label2 Nombre AutoSize Caption Text1 Nombre Text Text2 Nombre Locked Text TxtEdad True TxtFecNac LblEdad True Su edad es: LblFecNac True Fecha de nacimiento:
Command1 Nombre Caption Default Command2 Nombre Caption Command3 Nombre Cancel Caption CmdSalir True CmdLimpiar CmdAceptar
&Aceptar
True
&Limpiar
&Salir
Private Sub CmdAceptar_Click() Dim FecNac As Date, Edad As Integer FecNac = CDate(TxtFecNac) Edad = CInt((Date - FecNac) / 365) TxtEdad = Str(Edad) & aos End Sub Se deja como ejercicio para el estudiante el cdigo
asociado con los botones Limpiar y Salir, respectivamente. Aplicacin N 4 Se tiene un cajero automtico el cual permite manipular cierta cantidad de dinero S/. para 10.00, lo cual dispone S/. de los siguientes billetes: S/. 20.00, 50.00,
S/. 100.00 y S/. 200.00. Elaborar una aplicacin que permita la lectura de la cantidad a retirar e indique el menor nmero de billetes a utilizar.
Creo que a estas alturas Ud. ya entendi como funciona esto. Por ello, esta aplicacin se deja como ejercicio para el estudiante.
Pg. 239
Microsoft
GUA DE LABORATORIO N 2 Objetivos
Visual Basic
Implementar
selectivas.
aplicaciones
utilizando
estructuras
de
control
Usar
casillas
de
verificacin
botones
de
opcin
para
Utilizar
mensajes.
cajas
de
dilogo
predefinidas
para
visualizar
Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab2, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 Se desea elaborar la boleta de pago de los trabajadores de una fbrica. Para ello se cuenta con los siguientes datos de entrada: Apellidos y nombres del trabajador Sueldo bsico Horas extras trabajadas Adems, se sabe que los trabajadores laboran en dos
turnos: diurno y nocturno. Y que la tarifa por las horas extras diurnas es de 10 soles y por las horas extras nocturnas es de 15 soles.
Pg. 240
Los descuentos a aplicar son sobre el sueldo bsico y se obtienen de la siguiente manera: Renta = SueldoBasico * 0.1 Fonavi = SueldoBasico * 0.07 AFP = SueldoBasico * 0.03 Finalmente el sueldo neto del trabajador se calcula
mediante las siguientes expresiones: Ingresos = SueldoBasico + HorasExtras * PagoHoraExtra Egresos = Renta + Fonavi + AFP SueldoNeto = Ingresos - Egresos El diseo de la interfaz deber ser similar a la figura mostrada:
Pg. 241
Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 2 marcos 5 etiquetas 8 cajas de texto 2 botones de opcin 3 casillas de verificacin 3 botones de comando Luego, proceda a establecer las propiedades segn se
indica a continuacin: Form1 Nombre BorderStyle Caption Moveable Label1 Nombre AutoSize Caption Label2 Nombre AutoSize Caption Label3 Nombre AutoSize Caption LblHorasExtras True Horas extras: LblSueldoBasico True Sueldo Bruto S/. LblTrabajador True Trabajador: FrmBoletaDePago 3-Fixed Dialog Boleta de pago False
Pg. 242
Label4 Nombre AutoSize Caption Label5 Nombre AutoSize Caption Text1 Nombre Text Text2 Nombre Text Text3 Nombre Text Text4 Nombre BackColor Text Text5 Nombre BackColor Locked Text TxtRenta TxtPagoHoraExtra TxtHorasExtras TxtSueldoBasico TxtTrabajador LblSueldoNeto True Sueldo neto S/. LblPagoHoraExtra True Pago hora extra S/.
&H80000004&
&H80000004&
True
Pg. 243
Text6 Nombre BackColor Locked Text Text7 Nombre BackColor Locked Text Text8 Nombre BackColor Locked Text Option1 Nombre Caption Value Option2 Nombre Caption Value Check1 Nombre Caption Check2 Pg. 244 ChkRenta Renta OptNocturno Nocturno False OptDiurno Diurno True TxtSueldoNeto TxtAFP TxtFonavi
&H80000004&
True
&H80000004&
True
&H80000004&
True
Nombre Caption Check3 Nombre Caption Command1 Nombre Caption Default Command2 Nombre Caption Command3 Nombre Cancel Caption
ChkFonavi Fonavi
ChkAFP AFP
CmdAceptar
&Aceptar
True
CmdLimpiar
&Limpiar
CmdSalir True
&Salir
Una vez establecidas las propiedades, proceda a ingresar el cdigo que se indica a continuacin: Private Sub CmdAceptar_Click() Dim SueldoBasico As Double Dim HorasExtras As Integer, PagoHoraExtra As Double Dim Renta As Double, Fonavi As Double, AFP As Double Dim Ingresos As Double, Egresos As Double Dim SueldoNeto As Double SueldoBasico = Val(TxtSueldoBasico) HorasExtras = Val(TxtHorasExtras) If OptDiurno Then Pg. 245
PagoHoraExtra = 10 End If If OptNocturno Then PagoHoraExtra = 15 End If If ChkRenta.Value Then Renta = SueldoBasico * 0.1 Else Renta = 0 End If If ChkFonavi.Value Then Fonavi = SueldoBasico * 0.07 Else Fonavi = 0 End If If ChkAFP.Value Then AFP = SueldoBasico * 0.03 Else AFP = 0 End If Ingresos = SueldoBasico + HorasExtras * PagoHoraExtra Egresos = Renta + Fonavi + AFP SueldoNeto = Ingresos - Egresos TxtPagoHoraExtra = Str(PagoHoraExtra) TxtRenta = Str(Renta) TxtFonavi = Str(Fonavi) : TxtAFP = Str(AFP) TxtSueldoNeto = Str(SueldoNeto) End Sub Private Sub CmdSalir_Click() End End Sub Aplicacin N 2 Pg. 246
Cuatro notas entre 0 y 20 representan las calificaciones de un estudiante de un curso de programacin. Elaborar una aplicacin para obtener el promedio de esas calificaciones y visualizar su puntuacin de acuerdo al siguiente cuadro: Promedio 19-20 16-18 11-15 6-10 0-5 Puntuacin A B C D E
Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 7 etiquetas 7 cajas de texto 3 botones de comando
Pg. 247
Luego,
proceda
establecer
las
propiedades
segn
se
indica a continuacin: Form1 Nombre BorderStyle Caption Label1 Nombre AutoSize Caption Label2 Nombre AutoSize Caption Label3 Nombre AutoSize Caption Label4 Nombre AutoSize Caption Label5 Nombre AutoSize Caption LblN4 True Nota 4: LblN3 True Nota 3: LblN2 True Nota 2: LblN1 True Nota 1: LblAlumno True Alumno: FrmNotas 3-Fixed Dialog Puntuacin de un estudiante
Pg. 248
Pg. 249
Text6 Nombre BackColor Locked Text Text7 Nombre BackColor Locked Text Command1 Nombre Caption Default Command2 Nombre Caption Command3 Nombre Cancel Caption CmdSalir True CmdLimpiar CmdAceptar TxtPuntuacion TxtPromedio
&H80000004&
True
&H80000004&
True
&Aceptar
True
&Limpiar
&Salir
Una vez establecidas las propiedades, proceda a ingresar el cdigo que se indica: Private Sub CmdAceptar_Click() Dim N1 As Double, N2 As Double, N3 As Double, N4 As Double Dim Promedio As Integer N1 = Val(TxtN1) : N2 = Val(TxtN2) Pg. 250
N3 = Val(TxtN3) : N4 = Val(TxtN4) Promedio = CInt((N1 + N2 + N3 + N4) / 4) TxtPromedio = Str(Promedio) If Promedio >= 19 And Promedio <= 20 Then TxtPuntuacion = A ElseIf Promedio >= 16 And Promedio <= 18 Then TxtPuntuacion = B ElseIf Promedio >= 11 And Promedio <= 15 Then TxtPuntuacion = C ElseIf Promedio >= 6 And Promedio <= 10 Then TxtPuntuacion = D ElseIf Promedio >= 0 And Promedio <= 5 Then TxtPuntuacion = B Else: MsgBox Error de datos, vbCritical, Mensaje End If End Sub Aplicacin N 3 Escribir un aplicacin que acepte fechas como tres nmeros (dd, mm, aaaa) y las visualice del modo usual. A manera de ejemplo considere lo siguiente:
Pg. 251
En caso de que el usuario ingrese algn dato incorrecto (por ejemplo 13 como un nmero de mes), se debe visualizar el siguiente mensaje:
Cuando el usuario haga click en el botn Salir, se debe observar el siguiente mensaje:
En usuario
caso elige
de la
que
el
usuario No, se
elija debe
la
opcin
Si, con
la la
aplicacin debe terminar. En caso contrario, es decir si el opcin proseguir aplicacin. Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 4 etiquetas 3 cajas de texto 1 marco 3 botones de comando En seguida proceda a establecer las propiedades segn se indica:
Pg. 252
Form1 Nombre BorderStyle Caption Label1 Nombre AutoSize Caption Label2 Nombre AutoSize Caption Label3 Nombre AutoSize Caption Label4 Nombre AutoSize Caption Text1 Nombre Text Text2 Nombre Text TxtMes TxtDia LblFecha True LblAnno True Ao: LblMes True Mes: LblDia True Da: FrmFecha 3-Fixed Dialog Fecha en letras
Pg. 253
Text3 Nombre Text Command1 Nombre Caption Default Command2 Nombre Caption Command3 Nombre Caption CmdSalir CmdLimpiar CmdAceptar TxtAnno
&Aceptar
True
&Limpiar
&Salir
establecidas las propiedades de la interfaz
Una
vez
proceda a ingresar el siguiente cdigo: Private Sub CmdAceptar_Click() Dim CadMes As String, Mes As Integer Mes = Val(TxtMes) Select Case Mes Case 1: Case 2: Case 3: Case 4: Case 5: Case 6: Case 7: Case 8: Case 9: CadMes = Enero CadMes = Febrero CadMes = Marzo CadMes = Abril CadMes = Mayo CadMes = Junio CadMes = Julio CadMes = Agosto CadMes = Setiembre Pg. 254
Case 10: CadMes = Octubre Case 11: CadMes = Noviembre Case 12: CadMes = Diciembre Case Else MsgBox Error de datos..., vbCritical, Mensaje Call CmdLimpiar_Click Exit Sub End Select LblFecha = TxtDia & de & CadMes & de & TxtAnno End Sub Private Sub CmdLimpiar_Click() TxtDia = : TxtMes = : TxtAnno = TxtDia.SetFocus End Sub Private Sub CmdSalir_Click() If MsgBox(Desea terminar la aplicacin?, _ vbQuestion + vbYesNo, Pregunta) = vbYes Then End Else: Call CmdLimpiar_Click End If End Sub Aplicacin N 4 Un restaurante ofrece un descuento del 10% para consumos entre casos S/. no 30.00 se y S/. 50.00; tipo un de descuento descuento. del 20% para una
consumos mayores a S/. 50.00 nuevos soles; para todos los dems aplica ningn Elaborar aplicacin que permita determinar el importe a pagar por el consumidor. El diseo de la interfaz y otras consideraciones se dejan a su criterio.
Pg. 255
Microsoft
GUA DE LABORATORIO N 3 Objetivos
Visual Basic
Implementar
repetitivas.
aplicaciones
utilizando
estructuras
de
control
Cambiar
las
propiedades
de
los
controles
en
tiempo
de
ejecucin. Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab3, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 Escribir una aplicacin que lea un nmero entero y muestre la tabla de multiplicar de dicho nmero. El diseo de entrada y salida debe ser similar al siguiente:
Pg. 256
Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 1 etiqueta 2 cajas de texto 1 botn de comando En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre BorderStyle Caption Label1 Nombre Caption Text1 Nombre Text Text2 Nombre MultiLine Locked ScrollBars Text Command1 Nombre Caption CmdLimpiar TxtTabla True True 2-Vertical TxtNumero LblNumero Ingrese un nmero: FrmTabla 3-Fixed Dialog Tabla de multiplicar
&Limpiar
Pg. 257
Una vez diseada la interfaz, proceda a ingresar el cdigo que se indica a continuacin: Private Sub TxtNumero_Change() If IsNumeric(TxtNumero) Then Dim N As Integer, P As Integer, I As Integer Dim S As String N = Val(TxtNumero) S = For I = 0 To 12 P = N * I S = S & N & * & I & = & P & vbCrLf Next I TxtTabla = S ElseIf TxtNumero = Then Exit Sub Else: MsgBox Ingrese un nmero, vbCritical, Mensaje TxtTabla = End If End Sub Private Sub CmdLimpiar_Click() TxtNumero = : TxtTabla = TxtNumero.SetFocus End Sub Aplicacin N 2 Un nmero perfecto es un entero positivo, que es igual a la suma de todos los enteros positivos (excluido el mismo) que son divisores del nmero. El primer nmero perfecto es 6, ya que los divisores de 6 son 1, 2, 3 y 1 + 2 + 3 = 6. Escribir una aplicacin que encuentre los tres primeros nmeros perfectos.
Pg. 258
Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 1 marco 1 caja de texto En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre BorderStyle Caption Frame1 Nombre Caption Text1 Nombre MultiLine Text TxtPerfecto True FraPerfecto Nmero perfecto FrmNumeroPerfecto 3-Fixed Dialog Los 3 primeros nmeros perfectos
Pg. 259
Una vez establecidas las propiedades proceda a ingresar el cdigo que se indica a continuacin: Private Sub Form_Load() Dim N As Long, I As Long, S As Long Dim K As Integer, Cad As String N = 1 : K = 0 : Cad = While True S = 0 For I = 1 To (N - 1) If N Mod I = 0 Then S = S + I Next I If N = S Then Cad = Cad & N & vbCrLf K = K + 1 End If If K = 3 Then TxtPerfecto = Cad Exit Sub End If N = N + 1 Wend End Sub Aplicacin N 3 Construya una aplicacin que permita el ingreso de un nmero entero y muestre en pantalla la siguiente informacin: 1) Cantidad de cifras, 2) Suma de cifras impares, 3) Suma de cifras pares, 4) Suma total de cifras, 5) Cifra mayor, 6) Cifra menor y 7) Divisores de dicho nmero. El diseo de la interfaz debe ser similar a la figura siguiente:
Pg. 260
Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 4 marcos 7 etiquetas 8 cajas de texto 1 botn de comando En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre BorderStyle Caption Moveable StartUpPosition FrmNumeroPerfecto 3-Fixed Dialog Los 3 primeros nmeros perfectos False 2-CenterScreen
Pg. 261
Label3 Nombre AutoSize Caption Label4 Pg. 262 LblSumImpares True Suma de cifras impares:
Nombre AutoSize Caption Label5 Nombre AutoSize Caption Label6 Nombre AutoSize Caption Label7 Nombre AutoSize Caption Text1 Nombre Text Text2 Nombre Locked Text Text3 Nombre Locked Text Text4
TxtNumero
TxtCantCifras True
TxtSumImpares True
Pg. 263
Nombre Locked Text Text5 Nombre Locked Text Text6 Nombre Locked Text Text7 Nombre Locked Text Text8 Nombre MultiLine Locked ScrollBars Text Command3 Nombre Caption Picture Style
TxtSumPares True
TxtSumTotal True
TxtCifraMayor True
TxtCifraMenor True
CmdSalir
&Salir
C:\FundVB\Bitmaps\Exit.bmp 1-Graphical
Pg. 264
Una vez establecidas las propiedades proceda ha ingresar el cdigo que se indica a continuacin: Private Sub CmdAceptar_Click() If IsNumeric(TxtNumero) Then Dim S As Integer, SI As Integer, SP As Integer Dim May As Integer, Min As Integer Dim Cad As String Dim I As Integer, J As Integer N = CLng(TxtNumero) M = CLng(TxtNumero) Cad = I = 0 J = 1 S = SP = SI = 0 For J = 1 To N If (N Mod J = 0) Then Cad = Cad & J & vbCrLf End If Next J While (N > 0) If ((N Mod 10) Mod 2) = 0 Then SP = SP + (N Mod 10) Else SI = SI + (N Mod 10) End If S = S + (N Mod 10) N = N \ 10 I = I + 1 Wend May = Mid(TxtNumero, 1, 1) Men = May While (M > 0) Pg. 265
If May < (M Mod 10) Then May = M Mod 10 End If If Men > (M Mod 10) Then Men = M Mod 10 End If M = M \ 10 Wend TxtCantCifras = Str(I) TxtSumImpares = Str(SI) TxtSumPares = Str(SP) TxtSumTotal = Str(S) TxtCifraMayor = Str(May) TxtCifraMenor = Str(Men) TxtDivisores = Cad Else MsgBox Debe ingresar un nmero, vbCritical, Mensaje TxtNumero.SetFocus End If End Sub Private Sub CmdSalir_Click() If MsgBox(Desea terminar la aplicacin?, _ vbQuestion + vbYesNo, "Pregunta") = vbYes Then End Else Cancel = True TxtNumero.SetFocus End If End Sub Aplicacin N 4
Pg. 266
Un centro numrico es un nmero que separa una lista de nmeros enteros (comenzando en 1) en dos grupos de nmeros, cuyas sumas son iguales. El primer centro numrico es el 6, el cual separa la lista (1 a 8) en los grupos: (1; 2; 3; 4; 5) y (7; 8) cuyas sumas son ambas iguales a 15. El segundo centro numrico es el 35, el cual separa la lista (1 a 49) en los grupos: (1 a 34) y (36 a 49) cuyas sumas son ambas iguales a 595. Se pide elaborar una aplicacin que calcule los centros numricos entre 1 y N. El diseo de la interfaz y otras consideraciones se dejan a su criterio.
Pg. 267
Microsoft
GUA DE LABORATORIO N 4 Objetivos
Visual Basic
Manipular y realizar operaciones con arreglos. Crear una estructura y realizar operaciones con los campos de
la misma.
correspondientes a este laboratorio. Aplicacin N 1 Elabore una aplicacin que permita leer N nmeros de tipo entero, y a continuacin los visualice ordenados en forma ascendente o descendente.
Pg. 268
Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 3 marcos 1 caja de texto 1 control lista 2 botones de opcin 3 botones de comando En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre BorderStyle Caption Moveable Frame1 Nombre Caption Frame2 Nombre Caption Frame3 Nombre Caption Text1 Nombre Text TxtNumero FraOrden Orden: FraLista Lista de nmeros: FraNumero Ingrese un nuevo nmero: FrmBurbuja 3-Fixed Dialog Ordenacin por burbuja False
Pg. 269
List1 Nombre List Option1 Nombre Caption Value Option2 Nombre Caption Value Command1 Nombre Caption Default Command2 Nombre Caption Command3 Nombre Caption Picture CmdSalir CmdOrdenar CmdAnnadir OptDescendente Descendente False OptAscendente Ascendente True LstNumero
&Aadir
True
&Ordenar
&Salir
C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Icons\Arrows\ Point04.ico
Style
1-Graphical
Una vez establecidas las propiedades proceda a ingresar el cdigo que se indica a continuacin: Pg. 270
Private Sub CmdAceptar_Click() If IsNumeric(TxtNumero.Text) Then LstNumero.AddItem TxtNumero.Text TxtNumero.Text = TxtNumero.SetFocus Else MsgBox Ingrese un nmero, vbCritical, Mensaje TxtNumero.SelStart = 0 TxtNumero.SelLength = Len(TxtNumero.Text) TxtNumero.SetFocus End If End Sub Private Sub CmdOrdenar_Click() Dim I As Integer, J As Integer, T As Integer, N As Integer Dim A() As Integer N = LstNumero.ListCount ReDim A(N) For I = 0 To N - 1 A(I) = LstNumero.List(I) Next I If OptAscendente.Value Then For I = 0 To N - 2 For J = I + 1 To N - 1 If A(I) > A(J) Then T = A(I) A(I) = A(J) A(J) = T End If Next J Next I End If
Pg. 271
If OptDescendente.Value Then For I = 0 To N - 2 For J = I + 1 To N - 1 If A(I) < A(J) Then T = A(I) A(I) = A(J) A(J) = T End If Next J Next I End If LstNumero.Clear For I = 0 To N - 1 LstNumero.List(I) = A(I) Next I End Sub Private Sub Form_Unload(Cancel As Integer) If MsgBox(Desea terminar la aplicacin?, _ vbQuestion + vbYesNo, Pregunta) = vbYes Then End Else: Cancel = True : TxtNumero.SetFocus End If End Sub Private Sub CmdSalir_Click() Unload Me End Sub Aplicacin N 2 Elaborar artculo de una un aplicacin que permita seleccionar el un cuadro combinado (Combo). Apenas usuario
seleccione un artculo se debe mostrar el precio del mismo, el inters es fijo para esta ocasin. Pg. 272
La venta ha realizarse es a plazos, ello condiciona la cuota mensual a pagarse. Cuando se haga click sobre el botn Cuota mensual debe mostrarse un cuadro de dilogo con los datos propuestos:
De manera similar al hacer click sobre el botn Total nos debe mostrar la cantidad total a pagar.
Pg. 273
Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 1 marco 3 etiquetas 1 cuadro combinado 2 cajas de texto 3 botones de opcin 2 botones de comando En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre BorderStyle Caption Frame1 Nombre Caption Label1 Nombre Caption Label2 Nombre Caption Label3 Nombre Caption LblInteres Inters: LblPrecio Precio US$ LblArticulo Artculo: FraPlazo Plazo: FrmCotizacion 3-Fixed Dialog Pedido de cotizaciones
Pg. 274
Combo1 Nombre Text Text1 Nombre Locked Text Text2 Nombre Locked Text Option1 Nombre Caption Value Option2 Nombre Caption Value Option3 Nombre Caption Value Command1 Nombre Caption CmdCuotaMensual OptPlazo 24 meses False OptPlazo 12 meses False OptPlazo 6 meses True TxtInteres True TxtPrecio True CboArticulo
&Cuota mensual
Pg. 275
&Total
Una vez establecidas las propiedades de la interfaz, haga doble click sobre el formulario e ingrese las siguientes declaraciones en la seccin General del mdulo de formulario: Private Type Articulo Nombre As String * 30 Precio As Double End Type Dim A(4) As Articulo, Plazo As Integer Const Interes = 0.12 Recuerde que un dato declarado en la seccin General de un mdulo puede ser accedido por todos los procedimientos de dicho mdulo. Luego, contine ingresando el cdigo que se muestra a continuacin: Private Sub Form_Load() A(0).Nombre = Monitor SAMSUNG SyncMaster 3 A(1).Nombre = Impresora Hewlett Packard DeskJet 930C A(2).Nombre = Impresora Epson Stylus Color 740 A(3).Nombre = Microprocesador Pentium I 233 MHZ A(0).Precio = 150 : A(1).Precio = 275 A(2).Precio = 145 : A(3).Precio = 80 Dim I As Integer For I = 1 To 4 CboArticulo.AddItem A(I - 1).Nombre Next I TxtInteres = Interes : Plazo = 6 End Sub Pg. 276
Private Sub CboArticulo_Click() Dim I As Integer I = CboArticulo.ListIndex TxtPrecio = A(I).Precio End Sub Private Sub OptPlazo_Click(Index As Integer) Select Case Index Case 0: Plazo = 6 Case 1: Plazo = 12 Case 2: Plazo = 24 End Select End Sub Private Sub CmdCuotaMensual_Click() Dim Total As Double, CuotaMensual As Double, I As Integer I = CboArticulo.ListIndex Total = A(I).Precio * (1 + Interes) CuotaMensual = Total / Plazo MsgBox Cuota Mensual US$ & Str(CuotaMensual) End Sub Private Sub CmdTotal_Click() Dim Total As Double, I As Integer I = CboArticulo.ListIndex Total = A(I).Precio * (1 + Interes) MsgBox Total US$ & Str(Total) End Sub Aplicacin N 3 Se desea elaborar una aplicacin que permita controlar el proceso de matrcula en un curso de computacin. Para ello se deben recabar los siguientes datos: 1) Curso en que se
Pg. 277
matricula el alumno, 2) Fecha de matrcula, 3) Apellidos y nombres, 4) Sexo, 5) Direccin, y 6) Distrito de residencia.
Para el desarrollo de esta aplicacin proceda a ubicar los siguientes controles en el formulario: 4 marcos 6 etiquetas 5 cajas de texto 1 cuadro combinado 2 controles de lista 4 botones de comando En seguida proceda a establecer las propiedades segn se indica: Pg. 278
Form1 Nombre BorderStyle Caption Frame1 Nombre Caption Frame2 Nombre Caption Frame3 Nombre Caption Frame4 Nombre Caption Label1 Nombre Caption Label2 Nombre Caption Label3 Nombre Caption LblAlumno Alumno: LblFechaMat Fecha de matrcula: LblCurso Curso: FraDistritos Distritos: FraCursos Cursos: FraOpciones Opciones: FraIngreso Ingreso de datos: FrmFichaMatricula 3-Fixed Dialog Ficha de matrcula
Pg. 279
Pg. 280
Text3 Nombre Text Text4 Nombre Text Text5 Nombre Text Command1 Nombre Caption Command2 Nombre Caption Command3 Nombre Caption Command4 Nombre Caption Picture Style CmdSalir CmdLimpiar CmdCancelar CmdGuardar TxtDistrito TxtDireccion TxtAlumno
&Guardar
&Cancelar
&Limpiar
&Salir
C:\FundVB\Bitmaps\Exit.bmp 1-Graphical
Una
vez
establecidas
las
propiedades
de
la
interfaz,
Pg. 281
Private Sub Form_Load() LstCursos.AddItem Borland C++ Nivel I LstCursos.AddItem Borland C++ Nivel II LstCursos.AddItem Microsoft Visual Basic Nivel I LstCursos.AddItem Microsoft Visual Basic Nivel II LstCursos.AddItem Microsoft Visual FoxPro Nivel I LstCursos.AddItem Microsoft Visual FoxPro Nivel II LstCursos.AddItem Microsoft Visual C++ Nivel I LstCursos.AddItem Microsoft Visual C++ Nivel II LstCursos.AddItem Microsoft Visual J++ Nivel I LstCursos.AddItem Microsoft Visual J++ Nivel II LstCursos.AddItem Microsoft SQL Server Nivel I LstCursos.AddItem Microsoft SQL Server Nivel II LstCursos.AddItem Microsoft Power Builder Nivel I LstCursos.AddItem Microsoft Power Builder Nivel II LstDistrito.AddItem Callao LstDistrito.AddItem Bellavista LstDistrito.AddItem Carmen de la Legua LstDistrito.AddItem La Perla LstDistrito.AddItem La Punta LstDistrito.AddItem Ventanilla LstDistrito.AddItem Cercado de Lima LstDistrito.AddItem Ancn LstDistrito.AddItem Ate LstDistrito.AddItem Barranco LstDistrito.AddItem Brea LstDistrito.AddItem Carabayllo LstDistrito.AddItem Comas LstDistrito.AddItem Chaclacayo LstDistrito.AddItem Chorrillos LstDistrito.AddItem El Agustino LstDistrito.AddItem Jess Mara LstDistrito.AddItem La Molina Pg. 282
LstDistrito.AddItem La Victoria LstDistrito.AddItem Lince LstDistrito.AddItem Lurigancho LstDistrito.AddItem Lurn LstDistrito.AddItem Magdalena del Mar LstDistrito.AddItem Miraflores LstDistrito.AddItem Pachacamac LstDistrito.AddItem Pucusana LstDistrito.AddItem Pueblo Libre LstDistrito.AddItem Puente Piedra LstDistrito.AddItem Punta Negra LstDistrito.AddItem Rimac LstDistrito.AddItem San Bartolo LstDistrito.AddItem San Isidro LstDistrito.AddItem Independencia LstDistrito.AddItem San Juan de Miraflores LstDistrito.AddItem San Luis LstDistrito.AddItem San Martn de Porres LstDistrito.AddItem San Miguel LstDistrito.AddItem Santiago de Surco LstDistrito.AddItem Villa Mara del Triunfo LstDistrito.AddItem San Juan de Lurigancho LstDistrito.AddItem Santa Mara del Mar LstDistrito.AddItem Santa Rosa LstDistrito.AddItem Los Olivos LstDistrito.AddItem Cieneguilla LstDistrito.AddItem San Borja LstDistrito.AddItem Villa el Salvador LstDistrito.AddItem Santa Anita CboSexo.AddItem Masculino : CboSexo.AddItem Femenino End Sub Private Sub Form_Unload(Cancel As Integer) If MsgBox(Desea terminar la aplicacin?, _ Pg. 283
vbQuestion + vbYesNo, Pregunta) = vbYes Then End Else Cancel = True Call CmdLimpiar_Click End If End Sub Private Sub LstCursos_Click() TxtCursos = LstCursos End Sub Private Sub LstDistrito_Click() TxtDistrito = LstDistrito End Sub Private Sub CmdGuardar_Click() LstCursos.Enabled = False LstDistrito.Enabled = False TxtCursos.Locked = True TxtFechaMat.Locked = True TxtAlumno.Locked = True CboSexo.Locked = True TxtDireccion.Locked = True TxtDistrito.Locked = True MsgBox Alumno matriculado, vbInformation, Mensaje End Sub Private Sub CmdLimpiar_Click() LstCursos.Enabled = True LstDistrito.Enabled = True TxtCursos.Locked = False TxtFechaMat.Locked = False TxtAlumno.Locked = False Pg. 284
CboSexo.Locked = False TxtDireccion.Locked = False TxtDistrito.Locked = False TxtCursos = TxtFechaMat = TxtAlumno = CboSexo = TxtDireccion = TxtDistrito = TxtCursos.SetFocus End Sub Private Sub CmdCancelar_Click() If MsgBox(Desea modificar algn dato?, _ vbQuestion + vbYesNo, Mensaje) = vbYes Then LstCursos.Enabled = True LstDistrito.Enabled = True TxtCursos.Locked = False TxtFechaMat.Locked = False TxtAlumno.Locked = False CboSexo.Locked = False TxtDireccion.Locked = False TxtDistrito.Locked = False End If End Sub Private Sub CmdSalir_Click() Unload Me End Sub
Aplicacin N 4
Pg. 285
Desarrollar una aplicacin que permita realizar consultas acerca de un determinado curso, los cuales se mostraran en una lista. El usuario debe seleccionar un curso y en seguida se debe presentar el nombre del profesor encargado del curso (teora), el nombre del jefe de prctica (laboratorio), as como los horarios de teora y de laboratorio. El diseo de la interfaz deber ser similar al siguiente:
Pg. 286
Microsoft
GUA DE LABORATORIO N 5 Objetivos
Visual Basic
Crear procedimientos y funciones definidos por el usuario. Aadir formularios creados anteriormente a un proyecto. Cambiar el formulario de arranque de un proyecto. Utilizar formularios MDI. Manejar diferentes mtodos y propiedades de los formularios. Crear y utilizar mens en una aplicacin.
Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab5, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 Escriba una funcin que reciba como argumento una cadena de caracteres y la devuelva en forma inversa, por ejemplo si se ingresa la cadena CORAZON deber retornar NOZAROC.
Pg. 287
Para el desarrollo de esta aplicacin, proceda a ubicar los siguientes controles en el formulario: 2 etiquetas 2 cajas de texto 3 botones de comando En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre Caption BorderStyle Label1 Nombre Autosize Caption Label2 Nombre Autosize Caption Text1 Nombre Text Text2 Nombre Locked Text TxtInvertida True TxtCadena LblInvertida True Cadena invertida: LblCadena True Ingresa una cadena: FrmCadInvertida Cadena invertida 3-Fixed Dialog
Pg. 288
Command1 Nombre Caption Command2 Nombre Caption Command3 Nombre Caption CmdSalir CmdLimpiar CmdAceptar
&Aceptar
&Limpiar
&Salir
establecidas las propiedades de la interfaz,
Una
vez
proceda a ingresar el siguiente cdigo: Function CadInvertida(Cadena As String) As String Dim Invertida() As String * 1 Dim I As Integer Dim J As Integer N = Len(Cadena) ReDim Invertida(N) For I = 1 To N Invertida(I - 1) = Mid(Cadena, I, 1) Next I For J = (N - 1) To 0 Step -1 CadInvertida = CadInvertida & Invertida(J) Next J End Function Private Sub CmdInvertir_Click() TxtInvertida = CadInvertida(TxtCadena) End Sub
Pg. 289
Private Sub CmdLimpiar_Click() TxtCadena = TxtInvertida = TxtCadena.SetFocus End Sub Private Sub CmdSalir_Click() End End Sub Aplicacin N 2 Se desea elaborar una aplicacin que permita controlar el proceso de matrcula en un curso de computacin. Para ello se deben recabar los siguientes datos: 1) Curso en que se matricula el alumno, 2) Fecha de matrcula, 3) Apellidos y nombres, 4) Sexo, 5) Direccin, y 6) Distrito de residencia. El diseo de la interfaz debe ser similar a la figura mostrada:
Para seleccionar un curso el usuario deber hacer click en el botn punteado que se encuentra al lado de la caja de texto. En seguida se presentar un men de seleccin por realce en el cual se presenta la relacin de todos los cursos disponibles. Pg. 290
El
curso
quedar
seleccionado
al
hacer
click
en
el
botn
Aceptar.
El mismo tipo de seleccin deber realizarse al momento de ingresar el nombre del distrito.
Para el desarrollo de esta aplicacin necesitamos tres formularios y un mdulo. En primer lugar proceda a aadir un mdulo de cdigo al proyecto. Seleccione el Men Proyecto y
Pg. 291
elija la opcin Agregar mdulo, se debe presentar un cuadro de dilogo similar a la siguiente figura:
Del cuadro de dilogo Agregar mdulo, en la ficha Nuevo, haga click en el botn Abrir. Luego ingrese el siguiente cdigo en la seccin de Declaraciones del mdulo que acabamos de aadir: Public Curso As String Public Distrito As String En seguida proceda a cambiar el nombre formulario
principal por FrmFichaMatricula. Luego debe aadir los dems formularios necesarios para construir la aplicacin. Para tal fin, seleccione el men Proyecto y elija la opcin Agregar formulario. Del cuadro de dilogo Agregar formulario, en la ficha Nuevo, elija la opcin Formulario y haga click en el botn Abrir. Se debe presentar un cuadro de dilogo similar a la siguiente figura:
Pg. 292
En Repita
ese el
instante
se
aadir
un para
nuevo aadir
formulario el
al
proyecto. Cambie el nombre del nuevo formulario por FrmCurso. procedimiento anterior formulario FrmDistrito. A continuacin copie los pasos de la pg. 55 a la pg. 62 de la Gua de Laboratorio N 4 (Aplicacin N 3) con los siguientes cambios: En la pg. 55, aadir slo 2 marcos. No aadir ningn control de lista. En vez de 4 botones de comando, aadir 6 botones de comando. Luego, establecer las siguientes propiedades para los dos nuevos botones: Command5 Nombre Caption Command6 Pg. 293 CmdCurso . . .
Nombre Caption
CmdDistrito . . .
En la pg. 59, reemplazar el cdigo del evento Load del formulario por el siguiente: Private Sub Form_Load() CboSexo.AddItem "Masculino" CboSexo.AddItem "Femenino" End Sub En la pg. 61, suprimir el cdigo asociado al evento Click de los controles de lista LstCursos y LstDistrito. En su lugar aadir lo siguiente: Private Sub CmdCurso_Click() Load FrmCurso FrmCurso.Show vbModal TxtCurso = Curso End Sub Private Sub CmdDistrito_Click() Load FrmDistrito FrmDistrito.Show vbModal TxtDistrito = Distrito End Sub A continuacin active el formulario FrmCurso, para ello haga click sobre el mismo. En seguida proceda a ubicar los siguientes controles en el formulario: 1 control de lista 1 botones de comando
Pg. 294
proceda
establecer
las
propiedades
segn
se
LstCursos
CmdAceptar
&Aceptar
Una vez establecidas las propiedades proceda a ingresar el cdigo que se indica a continuacin: Private Sub Form_Load() LstCursos.AddItem Borland C++ Nivel I LstCursos.AddItem Borland C++ Nivel II LstCursos.AddItem Microsoft Visual Basic Nivel I LstCursos.AddItem Microsoft Visual Basic Nivel II LstCursos.AddItem Microsoft Visual FoxPro Nivel I LstCursos.AddItem Microsoft Visual FoxPro Nivel II LstCursos.AddItem Microsoft Visual C++ Nivel I LstCursos.AddItem Microsoft Visual C++ Nivel II LstCursos.AddItem Microsoft SQL Server Nivel I LstCursos.AddItem Microsoft SQL Server Nivel II LstCursos.AddItem Microsoft Power Builder Nivel I LstCursos.AddItem Microsoft Power Builder Nivel II End Sub Pg. 295
Private Sub CmdAceptar_Click() Curso = LstCursos.Text FrmCurso.Hide End Sub Por ltimo, proceda Ud. a desarrollar el cdigo respectivo para el formulario FrmDistrito. Aplicacin N 3 Elaborar una aplicacin que permita presentar los diferentes tipos de formularios de Visual Basic. Utilice como contenedor principal un formulario MDI, tal como se muestra en la figura:
Para el desarrollo de esta aplicacin necesitamos utilizar un formulario MDI (interfaz de mltiples documentos). Para ello seleccione el Men Proyecto y elija la opcin Agregar formulario MDI, se debe presentar un cuadro de dilogo similar a la siguiente figura:
Pg. 296
Del cuadro de dilogo Agregar formulario MDI, en la ficha Nuevo, haga click en el botn Abrir. En seguida cambie el nombre del formulario MDI por MDIPrincipal. A continuacin proceda a aadir los formularios para las diferentes opciones del men. Cambie los nombres de los formularios segn se indica:
Nombre
Pg. 297
Luego proceda a disear el men de opciones. Para ello haga click derecho sobre el formulario MDI y elija la opcin Editor de mens. Establezca las propiedades segn: Caption Name MnuPrincipal MnuNone MnuFixedSingle MnuSizable MnuFixedDialog MnuFixedToolWindow MnuSizableToolWindow MnuLinea MnuAcercaDe MnuSalir ShortCut Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ctrl + X
&Men Principal &0-None &1-Fixed Single &2-Sizable &3-Fixed Dialog &4-Fixed ToolWindow &5-Sizable ToolWindow
-
A continuacin haga click en el botn Aceptar del Editor de mens. Luego proceda a ingresar el siguiente cdigo para el formulario MDI: Private Sub MDIForm_Unload(Cancel As Integer) If MsgBox(Desea terminar la aplicacin?, _ vbQuestion + vbYesNo, Mensaje) = vbYes Then End Else: Cancel = True End If End Sub Private Sub MnuNone_Click() Load FrmNone FrmNone.Show End Sub Pg. 298
Private Sub MnuFixedSingle_Click() Load FrmFixedSingle FrmFixedSingle.Show End Sub Private Sub MnuSizable_Click() Load FrmSizable FrmSizable.Show End Sub Private Sub MnuFixedDialog_Click() Load FrmFixedDialog FrmFixedDialog.Show End Sub Private Sub MnuFixedToolWindow_Click() Load FrmFixedToolWindow FrmFixedToolWindow.Show End Sub Private Sub MnuSizableToolWindow_Click() Load FrmSizableToolWindow FrmSizableToolWindow.Show End Sub Private Sub MnuAcercaDe_Click() Load FrmAcercaDe FrmAcercaDe.Show End Sub Private Sub MnuSalir_Click() Unload Me End Sub
Pg. 299
A continuacin proceda a activar el formulario FrmNone y ubique un botn de comandos sobre el mismo. En seguida establezca las propiedades segn se indica a continuacin: Form1 Nombre BorderStyle Caption MDIChild Command1 Nombre Caption CmdVolver FrmNone 0-None None True
&Volver
Una vez establecidas las propiedades, proceda a ingresar el cdigo que se muestra a continuacin: Private Sub CmdVolver_Click() Unload Me End Sub Repita el procedimiento anterior para los dems tipos de formularios. Aplicacin N 4 Elaborar una aplicacin que acepte como entrada la reserva de agua de un depsito y los litros que se consumen a la semana. Utilizando una funcin definida por el usuario determinar como resultado las cantidades de agua que quedan al final de cada semana. El proceso finalizar cuando no quede agua suficiente para una semana. Utilizar otro formulario para mostrar la salida. FIN PARTE I
Pg. 300
ELABORADO POR
INTRODUCCIN
Pg. 301
La presente Gua de Laboratorio de Microsoft Visual Basic, se elabor con la finalidad de complementar la parte terica con la parte prctica del curso. Los problemas presentan un grado de dificultad gradual, es decir, en cada prctica primero se comienzan con problemas muy sencillos con la finalidad de que el estudiante esclarezca dudas y quede claro en los
conceptos asimilados en la teora, y luego en los problemas posteriores se va incrementando el nivel de dificultad. Esta gua explora una gran variedad de materias y contiene muchos problemas recopilados que a lo largo las de varios aos de de los
experiencia.
Espero
satisfaga
necesidades
estudiantes y colegas, ya que ha sido elaborada teniendo en cuenta los objetivos de aprendizaje del curso. Si desean compartirla con otros colegas, me agradara
mucho que lo hicieran, con la nica condicin de que siempre se respete el derecho del autor. Desde ya les deseo la mejor de las suertes en el
Microsoft
Visual Basic
Pg. 302
GUA DE LABORATORIO N 6 Objetivos Luego de completar este laboratorio, el estudiante ser capaz de:
Crear y manipular bases de datos utilizando Microsoft Access. Adicionar un entorno de datos a un proyecto. Conectar un origen de datos a un objeto Connection. Utilizar un objeto Command para recuperar registros de un
origen de datos.
Crear formularios con datos enlazados. Realizar consultas utilizando sentencias SQL.
Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab6, para guardar sus trabajos correspondientes a este laboratorio. Creacin de la base de datos con Microsoft Access 2000 Para desarrollar nuestras prcticas de laboratorio debemos crear una base de datos cuyo nombre es CursosLibres.MDB, la cual contendr las tablas Curso y Laboratorio. La tarea de crear una base de datos con Microsoft Access 2000 es muy sencilla. Para tal fin debe realizar lo siguiente:
Arrancar Microsoft Access 2000. Seleccionar la orden Nueva. . . del Men Archivo. Dentro del cuadro de dilogo Nueva, en la ficha General,
seleccionar Base de datos y hacer click en el botn Aceptar.
Tipo
Ancho
Descripcin
Luego,
asignar
nombre
la
tabla
al
momento
de
CurCodigo BC1 BC2 BC3 VB1 VB2 VB3 VC1 VC2 VJ1 VJ2 VF1 VF2 VF3 PB1 PB2 SQ1 SQ2 WIN
CurNombre Borland C++ Nivel I Borland C++ Nivel II Borland C++ Nivel III MS Visual Basic Nivel I MS Visual Basic Nivel II MS Visual Basic Nivel III MS Visual C++ Nivel I MS Visual C++ Nivel II MS Visual J++ Nivel I MS Visual J++ Nivel II MS Visual FoxPro Nivel I MS Visual FoxPro Nivel II MS Visual FoxPro Nivel III Power Builder Nivel I Power Builder Nivel II MS SQL Server Nivel I MS SQL Server Nivel II MS Windows 98
CurProfe Linares Alarcon, Adams Crdoba Saavedra, Javier Castillo Peralta, Carlos Linares Alarcon, Adams Linares Alarcon, Adams Castillo Peralta, Carlos Crdoba Saavedra, Javier Castillo Peralta, Carlos Castillo Peralta, Carlos Castillo Peralta, Carlos Linares Alarcon, Adams Castillo Peralta, Carlos Castillo Peralta, Carlos Crdoba Saavedra, Javier Crdoba Saavedra, Javier Crdoba Saavedra, Javier Crdoba Saavedra, Javier Montes Tejada, Estela
A menudo, el proceso de diseo de la base de datos es bastante complejo. Para nosotros ha sido fcil, pues se nos brinda la estructura de las tablas. De manera anloga, proceda a crear la siguiente tabla
Tipo
Ancho
Descripcin
Pg. 305
LabHora LabProfe
T T
08 50
Al momento de cerrar la tabla que acaba de crear, asgnele el nombre de Laboratorio. Luego, proceda a ingresar la siguiente informacin: LabCodigo BC1 BC2 BC3 VB1 VB2 VB3 VC1 VC2 VJ1 VJ2 VF1 VF2 VF3 PB1 PB2 SQ1 SQ2 WIN LabHora SA 08-10 SA 10-12 DO 10-12 SA 08-10 DO 10-12 DO 08-10 DO 08-10 DO 10-12 SA 16-18 SA 18-20 SA 08-10 DO 08-10 DO 14-16 VI 16-18 VI 14-16 SA 16-18 SA 18-20 SA 10-12 LabProfe Castillo Peralta, Carlos Linares Alarcon, Adams Castillo Peralta, Carlos Montes Tejada, Estela Linares Alarcon, Adams Castillo Peralta, Carlos Linares Alarcon, Adams Crdoba Saavedra, Javier Castillo Peralta, Carlos Castillo Peralta, Carlos Linares Alarcon, Adams Crdoba Saavedra, Javier Linares Alarcon, Adams Crdoba Saavedra, Javier Crdoba Saavedra, Javier Crdoba Saavedra, Javier Crdoba Saavedra, Javier Montes Tejada, Estela
Aplicacin N 1 Elaborar una aplicacin que permita realizar el mantenimiento de la informacin almacenada en la tabla Curso de
Pg. 306
la base de datos CursosLibres.MDB. El diseo de la interfaz debe ser similar a la figura mostrada:
Los
botones
ubicados
en
el
marco
Navegador
(Primero,
Anterior, Siguiente y Ultimo, de izquierda a derecha) permiten desplazarse a travs de la tabla. Los botones ubicados en el marco Mantenimiento (Nuevo, Editar, Guardar y Eliminar, de izquierda a derecha) permiten realizar las operaciones bsicas de mantenimiento de la tabla. Para debemos habitual, desarrollar hacer a es nuestra aplicacin, a men la lo base primero de que datos la
conectarnos en el
CursosLibres.MDB. Para ello ingrese a Visual Basic de manera continuacin Proyecto seleccione opcin Agregar Data Environment y se crear una nueva conexin para la que debe establecer propiedades de vnculo de datos. En la ventana Data El Environment aspecto de cambie y la el el nombre de la Data del objeto por DataEnvironment CnCursosLibres. por DeCursosLibres conexin
ventana
Environment
Pg. 307
Luego
haga y
click
con
el la
botn
derecho
del
ratn
en
CnCursosLibres
seleccione
opcin
Propiedades.
Deber
En
la
ficha
Proveedor
del
cuadro
de
dilogo
anterior,
Pg. 308
botn
Siguiente.
En
seguida
aparecer
un
cuadro
de
dilogo
similar al mostrado:
En la ficha Conexin del cuadro de dilogo Propiedades de Data Link escriba y el nombre click en de el la botn base Probar de datos CursosLibres.MDB Aceptar. En seguida en la barra de herramientas de la ventana Data Environment haga click en el botn Agregar Comando y denomine al comando CmCurso. Luego haga click derecho sobre el comando y seleccione Propiedades: haga conexin.
Pg. 309
Compruebe CnCursosLibres,
que luego
este
comando el
utiliza nombre de
la la
conexin tabla a
establezca
utilizar, en este caso Curso y haga click en el botn Aceptar. A continuacin seleccione el comando CmCurso y arrstrelo hacia el formulario. Finalmente agregue los siguientes controles al formulario: 3 marcos 9 botones de comandos En seguida proceda a establecer las propiedades
requeridas: Form1 Nombre Caption BorderStyle Frame1 Pg. 310 FrmMantenCurso Mantenimiento de cursos 3-Fixed Dialog
Nombre Caption Frame2 Nombre Caption Frame3 Nombre Caption LblFieldLabel(0) Nombre Caption LblFieldLabel(1) Nombre Caption LblFieldLabel(2) Nombre Caption LblFieldLabel(3) Nombre Caption TxtCurCodigo Nombre Locked Text
FraIngreso
FraNavegador Navegador
FraMantenimiento Mantenimiento
LblFieldLabel Cdigo:
LblFieldLabel Nombre:
LblFieldLabel Vacantes:
LblFieldLabel Profesor:
TxtCurCodigo True
Nombre Locked Text TxtCurVacantes Nombre Locked Text TxtCurProfe Nombre Locked Text Command1 Nombre Caption Picture Style Command2 Nombre Caption Picture Style Command3 Nombre Caption Picture Style
TxtCurNombre True
TxtCurVacantes True
TxtCurProfe True
CmdPrimero
C:\FundVB\Bitmaps\First.bmp 1-Graphical
CmdAnterior
C:\FundVB\Bitmaps\Previous.bmp 1-Graphical
CmdSiguiente
C:\FundVB\Bitmaps\Next.bmp 1-Graphical
CmdUltimo
C:\FundVB\Bitmaps\Last.bmp 1-Graphical
&Salir
C:\FundVB\Bitmaps\Exit.bmp 1-Graphical
El
cdigo
asociado
la
aplicacin
se
muestra
continuacin: Private Sub CmdPrimero_Click() DeCursosLibres.rsCmCurso.MoveFirst End Sub Private Sub CmdUltimo_Click() DeCursosLibres.rsCmCurso.MoveLast End Sub Private Sub CmdAnterior_Click() DeCursosLibres.rsCmCurso.MovePrevious If DeCursosLibres.rsCmCurso.BOF Then DeCursosLibres.rsCmCurso.MoveFirst MsgBox Estamos en el primer registro End If End Sub Private Sub CmdSiguiente_Click() DeCursosLibres.rsCmCurso.MoveNext If DeCursosLibres.rsCmCurso.EOF Then DeCursosLibres.rsCmCurso.MoveLast MsgBox Estamos en el ltimo registro End If End Sub
ModoEditar True End Sub Private Sub CmdEditar_Click() ModoEditar True End Sub Private Sub CmdGuardar_Click() DeCursosLibres.rsCmCurso.Update ModoEditar False End Sub Private Sub CmdEliminar_Click() DeCursosLibres.rsCmCurso.Delete DeCursosLibres.rsCmCurso.MoveNext If DeCursosLibres.rsCmCurso.EOF Then DeCursosLibres.rsCmCurso.MoveLast End If End Sub Private Sub CmdSalir_Click() Unload Me End Private Sub Form_Unload(Cancel As Integer) If MsgBox(Desea terminar la aplicacin?, _ vbQuestion + vbYesNo, Pregunta) = vbYes Then End Else Cancel = True End If End Sub Private Sub Form_Activate() ModoEditar False Pg. 315
End Sub Private Sub ModoEditar(ByVal Ok As Boolean) TxtCurCodigo.Locked = Not Ok: TxtCurNombre.Locked = Not Ok TxtCurVacantes.Locked = Not Ok: TxtCurProfe.Locked = Not Ok CmdNuevo.Enabled = Not Ok: CmdEditar.Enabled = Not Ok CmdGuardar.Enabled = Ok: CmdEliminar.Enabled = Not Ok CmdPrimero.SetFocus: If Ok Then TxtCurCodigo.SetFocus End Sub Finalmente antes de ejecutar la aplicacin debemos
asegurarnos de elegir el tipo de bloqueo adecuado. Para ello haga click derecho sobre el comando CmCurso y elija la opcin Propiedades y en la ficha Avanzadas selecciones el tipo de bloqueo 3-Optimistic, tal como se muestra en la figura siguiente:
Aplicacin N 2
Pg. 316
Desarrollar
una
aplicacin
que
permita
mostrar
en
una
Para desarrollar la aplicacin, lo primero que debemos hacer Luego, es conectarnos un a la y base de datos CursosLibres.MDB. Haga aada Comando denomnelo CmConsultaCurso.
Compruebe CnCursosLibres.
que Luego
este
comando la
utiliza opcin
la
conexin SQL
seleccione
(Structured
Query
Language,
Lenguaje
de
Estructuras
de
Consultas) e ingrese el siguiente cdigo: Select CurCodigo As Cdigo, CurNombre As Nombre, CurVacantes As Vacantes, CurProfe As Profesor From Curso Luego, haga click en el botn Aceptar. La ventana
A Del
continuacin desplegable
seleccione que se
el
comando
CmConsultaCurso la
arrstrelo con el botn derecho del ratn hacia el formulario. men presenta, seleccione opcin Cuadrcula de datos.
Luego, cambie las dimensiones de la grilla de tal forma que ocupe la totalidad del formulario. Finalmente guarde y pruebe su aplicacin. Aplicacin N 3
Pg. 318
Desarrollar una aplicacin que permita seleccionar de un control DataCombo el nombre de un profesor y visualizar los cursos que dicta dicho profesor.
Lo primero que debe hacer es conectarse a la base de datos CursosLibres.MDB. En seguida aada un comando y denomnelo CmConsultaProfe. Luego haga click derecho sobre el comando y seleccione Propiedades. Compruebe que este comando utiliza la conexin CnCursosLibres. Luego seleccione la opcin Instruccin SQL e ingrese el siguiente cdigo: Select CurCodigo As Cdigo, CurNombre As Nombre,
CurProfe As Profesor From Curso Where (CurProfe = ?) A continuacin proceda a aadir otro comando y denomnelo CmProfe. Compruebe que este comando utiliza la conexin CnCursosLibres. Seleccione la opcin Instruccin SQL e ingrese el siguiente cdigo: Select Distinct CurProfe From Curso Luego proceda ha ubicar los siguientes controles en el formulario: 1 control DataCombo 1 control DataGrid Pg. 319
1 botn de comandos En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre Caption BorderStyle DataCombo1 Nombre ListField RowMember RowSource DataGrid1 Nombre Font HeadFont Command1 Nombre Caption CmdBuscar DbgrdCursos Arial (Negrita 10) Arial (Negrita 10) DbcProfe CurProfe CmProfe DeCursosLibres FrmConsultaProfe Consulta de profesores 3-Fixed Dialog
&Buscar
A continuacin ingrese el siguiente cdigo: Private Sub CmdBuscar_Click() If DeCursosLibres.rsCmConsultaProfe.State = adStateOpen Then DeCursosLibres.rsCmConsultaProfe.Close End If DeCursosLibres.CmConsultaProfe (DbcProfe.Text) Set DbgrdCursos.DataSource = DeCursosLibres.rsCmConsultaProfe End Sub Pg. 320
Aplicacin N 4 Desarrollar una aplicacin que permita mostrar el contenido de la tabla Laboratorio, relacionada con la tabla Curso, tal como se muestra a continuacin:
Observar que la tabla Laboratorio slo cuenta con tres campos. El campo que contiene el nombre del curso pertenece a la tabla Curso. La sentencia SQL que permite obtener consultas a partir de mltiples tablas (para nuestro caso Curso y Laboratorio), se indica a continuacin: Select Laboratorio.LabCodigo As Cdigo, Curso.CurNombre As Nombre, Laboratorio.LabHora As Horario, Laboratorio.LabProfe As [Jefe de prctica] From Laboratorio, Curso Where Laboratorio.LabCodigo = Curso.CurCodigo
Microsoft
GUA DE LABORATORIO N 7
Visual Basic
Pg. 321
En esta aplicacin Ud. debe disear la interfaz y luego escribir cdigo para conectarse y recuperar informacin de la base de datos.
Pg. 322
Para
el
diseo
de
la
interfaz,
proceda
ubicar
los
siguientes controles en el formulario: 3 marcos 4 etiquetas 4 cajas de texto 8 botones de comando En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre Caption BorderStyle Moveable StartUpPosition Frame1 Nombre Caption Frame2 Nombre Caption Frame3 Nombre Caption FraMantenimiento Mantenimiento FraNavegador Navegador FraIngreso FrmMantenCursos Mantenimiento de cursos 3-Fixed Dialog False 2-CenterScreen
Text
Para establecer las propiedades de los botones de comando Command1, Command2, . . ., Command8, copiar los pasos de la pg. 87 a la pg. 88 de la Gua de Laboratorio N 6 (Aplicacin N 1). Antes de ingresar cdigo a la aplicacin, debemos tener en cuenta que para Visual poder Basic En utilizar es el los objetos cargar dilogo Data ADO la es una aplicacin la opcin necesario cuadro de librera
correspondiente. Para ello selecciones el men Proyecto y elija Referencias. la opcin Referencias Objects 2.1 seleccione Microsoft ActiveX
Luego
de
hacer
click
en
el
botn
Aceptar
estar
en
Pg. 325
El cdigo necesario para realizar la conexin y efectuar el mantenimiento de la tabla se muestra a continuacin. Observar la analoga cuando se utiliza Data Environment. Dim Cn As ADODB.Connection Dim Rs As ADODB.Recordset Private Sub ModoEditar(ByVal Ok As Boolean) TxtCurCodigo.Locked = Not Ok TxtCurNombre.Locked = Not Ok TxtCurVacantes.Locked = Not Ok TxtCurProfe.Locked = Not Ok CmdNuevo.Enabled = Not Ok CmdEditar.Enabled = Not Ok CmdGuardar.Enabled = Ok CmdEliminar.Enabled = Not Ok If Ok Then TxtCurCodigo.SetFocus End Sub Private Sub Form_Load() ModoEditar False Set Cn = New ADODB.Connection Set Rs = New ADODB.Recordset Cn.Open Provider=Microsoft.Jet.OLEDB.4.0; & _ Data Source=C:\FundVB\Data\CursosLibres.MDB; & _ Persist Security Info=False Rs.ActiveConnection = Cn Rs.CursorType = adOpenKeyset Rs.LockType = adLockOptimistic Rs.Open Select * From Curso Set TxtCurCodigo.DataSource = Rs TxtCurCodigo.DataField = CurCodigo Set TxtCurNombre.DataSource = Rs Pg. 326
TxtCurNombre.DataField = CurNombre Set TxtCurVacantes.DataSource = Rs TxtCurVacantes.DataField = CurVacantes Set TxtCurProfe.DataSource = Rs TxtCurProfe.DataField = CurProfe End Sub Private Sub CmdPrimero_Click() Rs.MoveFirst End Sub Private Sub CmdAnterior_Click() Rs.MovePrevious If Rs.BOF Then Rs.MoveFirst MsgBox Estamos en el primer registro End If End Sub Private Sub CmdSiguiente_Click() Rs.MoveNext If Rs.EOF Then Rs.MoveLast MsgBox Estamos en el ltimo registro End If End Sub Private Sub CmdUltimo_Click() Rs.MoveLast End Sub Private Sub CmdNuevo_Click() Rs.AddNew ModoEditar True Pg. 327
End Sub Private Sub CmdEditar_Click() ModoEditar True End Sub Private Sub CmdGuardar_Click() Rs.Update ModoEditar False End Sub Private Sub CmdEliminar_Click() Rs.Delete Rs.MoveNext If Rs.EOF Then Rs.MoveLast End If End Sub Private Sub Form_Unload(Cancel As Integer) Cn.Close Set Cn = Nothing End Sub Aplicacin N 2 Desarrollar consulta a la una tabla aplicacin Curso. que permita ello el realizar usuario una debe Para
seleccionar de un cuadro combinado (combo) el nombre de un profesor y a continuacin se deben visualizar los cursos a su cargo. El diseo de la interfaz debe ser similar a la figura mostrada:
Pg. 328
Para el desarrollo de esta aplicacin, proceda ha ubicar los siguientes controles en el formulario: 1 control ComboBox 1 control DataGrid 1 botn de comandos En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre Caption BorderStyle Combo1 Nombre Text DataGrid1 Nombre Font HeadFont DbgrdCursos Arial (Negrita 10) Arial (Negrita 10) CboProfe FrmConsultaProfe Consulta de profesores 3-Fixed Dialog
Pg. 329
&Buscar
True
A continuacin debe ingresar el cdigo que se muestra en seguida: Dim Cn As ADODB.Connection Dim RsCurso As ADODB.Recordset Dim RsProfe As ADODB.Recordset Private Sub Form_Load() Set Cn = New ADODB.Connection Set RsProfe = New ADODB.Recordset Cn.Open Provider=Microsoft.Jet.OLEDB.4.0; & _ Data Source=C:\FundVB\Data\CursosLibres.MDB; & _ Persist Security Info=False RsProfe.ActiveConnection = Cn RsProfe.CursorType = adOpenStatic RsProfe.LockType = adLockOptimistic RsProfe.CursorLocation = adUseClient RsProfe.Open Select Distinct CurProfe From Curso Do While Not RsProfe.EOF() CboProfe.AddItem RsProfe(CurProfe) RsProfe.MoveNext Loop End Sub Private Sub CmdBuscar_Click() Set RsCurso = New ADODB.Recordset RsCurso.ActiveConnection = Cn RsCurso.CursorType = adOpenStatic Pg. 330
RsCurso.LockType = adLockReadOnly RsCurso.CursorLocation = adUseClient RsCurso.Open Select CurCodigo As Cdigo, & _ CurNombre As Nombre, CurProfe As Profesor & _
From Curso Where CurProfe = ' & CboProfe.Text & ' Set DbgrdCursos.DataSource = RsCurso End Sub Private Sub Form_Unload(Cancel As Integer) Cn.Close Set Cn = Nothing End Sub Aplicacin N 3 Desarrollar mantenimiento CursosLibres.MDB de una aplicacin tablas tablas le que de permita la base realizar de el con las datos
(estas
sern
proporcionadas
datos suficientes, por el Jefe de Prctica). El diseo de la interfaz debe ser similar a la siguiente figura:
Pg. 331
Por ejemplo para realizar el mantenimiento de la tabla Curso debemos preparar los siguientes formularios:
Pg. 332
Para desarrollar nuestra aplicacin debe agregar un mdulo de cdigo al proyecto. Luego ingrese lo siguiente: Public Cn As ADODB.Connection Tambin ser necesario agregar un formulario MDI. Luego, cambie el nombre del formulario por el de MDICursosLibres. En seguida, disee el men para la aplicacin segn se indica: Caption Name ShortCut Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ctrl + X
&Mantenimiento MnuManten &Alumnos &Nuevo &Editar &Eliminar &Cursos &Nuevo &Editar &Eliminar &Laboratorio &Nuevo &Editar &Eliminar &Distrito &Nuevo &Editar &Eliminar
MnuMantenAlumno MnuMantenAlumnoNuevo MnuMantenAlumnoEditar MnuMantenAlumnoEliminar MnuMantenCurso MnuMantenCursoNuevo MnuMantenCursoEditar MnuMantenCursoEliminar MnuMantenLaboratorio MnuMantenLaboratorioNuevo MnuMantenLaboratorioEditar MnuMantenLaboratorioEliminar MnuMantenDistrito MnuMantenDistritoNuevo MnuMantenDistritoEditar MnuMantenDistritoEliminar MnuMantLinea MnuMantSalir
&Salir
Pg. 333
Luego, haga doble click sobre el formulario e ingrese el siguiente cdigo: Private Sub MDIForm_Load() Set Cn = New ADODB.Connection Cn.Open Provider=Microsoft.Jet.OLEDB.4.0; & _ Data Source=C:\FundVB\Data\CursosLibres.MDB; & _ Persist Security Info=False End Sub Private Sub MnuMantenCursosNuevo_Click() Load FrmNuevoCurso FrmNuevoCurso.Show End Sub Private Sub MnuMantenCursosEditar_Click() Load FrmEditarCurso FrmEditarCurso.Show End Sub Private Sub MnuMantenCursosEliminar_Click() Load FrmEliminarCurso FrmEliminarCurso.Show End Sub Para desarrollar la opcin Nuevo de la tabla Curso, aada un nuevo formulario al proyecto. Luego, ubique los siguientes controles en el formulario: 4 etiquetas 4 cajas de texto 3 botones de comando Luego indica: Pg. 334 proceda a establecer las propiedades segn se
Form1 Nombre Caption BorderStyle MDIChild Label1 Nombre Caption Label2 Nombre Caption Label3 Nombre Caption Label4 Nombre Caption Text1 Nombre Text Text2 Nombre Text Text3 Nombre Text TxtCurVacantes TxtCurNombre TxtCurCodigo LblProfesor Profesor: LblVacantes Vacantes: LblNombre Nombre: LblCodigo Cdigo: FrmMantenCursos Nuevo curso 3-Fixed Dialog True
Pg. 335
Text4 Nombre Text Command1 Nombre Caption Command2 Nombre Caption Command3 Nombre Caption CmdCerrar CmdNuevo CmdGrabar TxtCurProfe
&Grabar
&Nuevo
&Cerrar
Una vez establecidas las propiedades, proceda a ingresar el siguiente cdigo: Private Sub Form_Load() CmdGrabar.Enabled = True CmdNuevo.Enabled = False End Sub Private Sub CmdGrabar_Click() Cn.Execute Insert Into Curso(CurCodigo, CurNombre, & _ CurVacantes, CurProfe) Values (' & TxtCurCodigo & _ ', & ' & TxtCurNombre & ', & _ Val(TxtCurVacantes) & , & ' & TxtCurProfe & ') CmdGrabar.Enabled = False CmdNuevo.Enabled = True End Sub
Pg. 336
Private Sub CmdNuevo_Click() TxtCurCodigo = TxtCurNombre = TxtCurVacantes = TxtCurProfe = CmdGrabar.Enabled = True: CmdNuevo.Enabled = False TxtCurCodigo.SetFocus End Sub Private Sub CmdCerrar_Click() Unload Me End Sub Para desarrollar la opcin Editar de la tabla Curso, aada un nuevo formulario al proyecto. Luego, ubique los siguientes controles en el formulario: 1 marco 4 etiquetas 4 cajas de texto 4 botones de comando En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre Caption BorderStyle MDIChild Frame1 Nombre Caption Pg. 337 FraCodigo FrmMantenCursos Editar curso 3-Fixed Dialog True
Label1 Nombre Caption Label2 Nombre Caption Label3 Nombre Caption Label4 Nombre Caption LblProfesor Profesor: LblVacantes Vacantes: LblNombre Nombre: LblCodigo Cdigo:
Pg. 338
Command1 Nombre Caption Command2 Nombre Caption Command3 Nombre Caption Command4 Nombre Caption CmdCerrar CmdNuevo CmdGrabar CmdAceptar
&Aceptar
&Grabar
&Nuevo
&Cerrar
Una vez establecidas las propiedades, proceda a ingresar el siguiente cdigo: Private Sub Form_Load() CmdAceptar.Enabled = True CmdGrabar.Enabled = False CmdNuevo.Enabled = False End Sub Private Sub CmdAceptar_Click() Dim Rs As New ADODB.Recordset Set Rs = Cn.Execute(Select CurNombre, & _ CurVacantes, CurProfe From Curso & _ Where CurCodigo = ' & TxtCurCodigo & ') If (Rs.EOF And Rs.BOF) Then MsgBox No existe ningn curso con este cdigo TxtCurCodigo.SetFocus Pg. 339
TxtCurCodigo.SelStart = 0 TxtCurCodigo.SelLength = Len(TxtCurCodigo) Exit Sub End If TxtCurNombre = Rs!CurNombre TxtCurVacantes = Rs!CurVacantes TxtCurProfe = Rs!CurProfe Rs.Close Set Rs = Nothing TxtCurCodigo.Enabled = False CmdAceptar.Enabled = False CmdGrabar.Enabled = True CmdNuevo.Enabled = True End Sub Private Sub CmdGrabar_Click() Cn.Execute Update Curso Set CurNombre = ' & _ TxtCurNombre & ', & CurVacantes = & _ Val(TxtCurVacantes) & , & CurProfe = ' & _ TxtCurProfe & ' & Where CurCodigo = ' & _ TxtCurCodigo & ' End Sub Private Sub CmdNuevo_Click() TxtCurCodigo = TxtCurNombre = TxtCurVacantes = TxtCurProfe = CmdAceptar.Enabled = True CmdGrabar.Enabled = False CmdNuevo.Enabled = False TxtCurCodigo.Enabled = True TxtCurCodigo.SetFocus Pg. 340
End Sub Private Sub CmdCerrar_Click() Unload Me End Sub Para desarrollar la opcin Eliminar de la tabla Cursos, aada un nuevo formulario al proyecto. Luego, ubique los siguientes controles en el formulario: 1 marco 4 etiquetas 4 cajas de texto 4 botones de comando En seguida proceda a establecer las propiedades segn se indica: Form1 Nombre Caption BorderStyle MDIChild FrmMantenCursos Eliminar curso 3-Fixed Dialog True
Frame1 Nombre Caption Label1 Nombre Caption Label2 Nombre LblNombre Pg. 341 LblCodigo Cdigo: FraCodigo
Nombre:
LblVacantes Vacantes:
LblProfesor Profesor:
&Aceptar
&Eliminar
CmdNuevo
&Nuevo
CmdCerrar
&Cerrar
Una vez establecidas las propiedades, proceda a ingresar el siguiente cdigo: Private Sub Form_Load() CmdAceptar.Enabled = True CmdEliminar.Enabled = False CmdNuevo.Enabled = False End Sub Private Sub CmdEliminar_Click() Cn.Execute Delete From Curso & _ Where CurCodigo = ' & TxtCurCodigo & ' Call CmdNuevo_Click End Sub Private Sub CmdNuevo_Click() TxtCurCodigo = TxtCurNombre = TxtCurVacantes = TxtCurProfe = CmdAceptar.Enabled = True CmdEliminar.Enabled = False CmdNuevo.Enabled = False Pg. 343
TxtCurCodigo.Enabled = True TxtCurCodigo.SetFocus End Sub Private Sub CmdAceptar_Click() Dim Rs As New ADODB.Recordset Set Rs = Cn.Execute(Select CurNombre, & _ CurVacantes, CurProfe From Curso & _ Where CurCodigo = ' & TxtCurCodigo & ') If (Rs.EOF And Rs.BOF) Then MsgBox No existe ningn curso con este cdigo TxtCurCodigo.SetFocus TxtCurCodigo.SelStart = 0 TxtCurCodigo.SelLength = Len(TxtCurCodigo) Exit Sub End If TxtCurNombre = Rs!CurNombre TxtCurVacantes = Rs!CurVacantes TxtCurProfe = Rs!CurProfe Rs.Close Set Rs = Nothing TxtCurCodigo.Enabled = False CmdAceptar.Enabled = False CmdEliminar.Enabled = True CmdNuevo.Enabled = True End Sub Private Sub CmdCerrar_Click() Unload Me End Sub De manera similar proceda a desarrollar el cdigo para los formularios de mantenimiento de las dems tablas. Pg. 344
Aplicacin N 4 Elaborar una aplicacin que permita recuperar y mantener la informacin de la base de datos CursosLibres.MDB. Para tal fin debe preparar un formulario que permita establecer la conexin con el origen de datos. Luego, si la conexin es satisfactoria el usuario tiene la posibilidad de elegir una de las tablas de la base de datos para realizar las operaciones habituales de mantenimiento o simplemente para ejecutar consultas. El diseo de la interfaz debe ser similar a la siguiente figura:
Las opciones Mantenimiento y Consulta deben ser anlogas a las realizadas en aplicaciones anteriores.
Microsoft
Visual Basic
Pg. 345
GUA DE LABORATORIO N 8 Objetivos Luego de completar este laboratorio, el estudiante ser capaz de:
Para disear nuestro reporte, lo primero que debemos hacer es conectarnos a la base de datos CursosLibres.MDB. La conexin la haremos efectiva mediante el Data Environment. Luego, aada Pg. 346
un Comando y denomnelo CmCurso. Establezca el nombre de la tabla a utilizar, para nuestro caso Curso. El aspecto de la ventana Data Environment deber ser similar a la figura:
Luego, del men Proyecto seleccionar la opcin Agregar Data Report, lo cual permite agregar el diseador de reportes:
En seguida del Data Environment seleccionar cada campo que desee incluir en el reporte y luego arrastre el campo hacia la seccin Detalles del Data Report.
Pg. 347
El diseador de reportes presenta un conjunto de controles que permiten mejorar la presentacin de nuestro reporte. En seguida ubicar los siguientes controles: 2 etiquetas en la seccin Encabezado de informe 4 etiquetas en la seccin Encabezado de pgina A continuacin proceda a establecer las propiedades segn se indica: Etiqueta1 Nombre Caption RptLblVAB Instituto de Educacin Superior Vctor Andrs Belande Font Etiqueta2 Nombre Caption Font Etiqueta3 Nombre Caption Font Etiqueta4 Nombre Caption Font Etiqueta5 Nombre Caption RptLblVacantes Vacantes: Pg. 348 RptLblNombre Nombre: Arial (Negrita 10) RptLblCodigo Cdigo: Arial (Negrita 10) RptLblNombre Reporte de Cursos Arial (Negrita Cursiva 16) Arial (Negrita 09)
Para insertar la fecha actual dar un click con el botn derecho del ratn sobre el diseador de reportes en la seccin de Encabezado de informe, del men contextual que se presenta seleccionar (formato propiedades: DataReport1 DataMember DataSource CmCurso DeCursosLibres la opcin En Insertar control, luego las Fecha actual corto). seguida, cambiar siguientes
Luego, seleccione del men Proyecto la opcin Propiedades de Proyecto, y en la ficha General del cuadro de dilogo Propiedades del proyecto, establecer DataReport1 como objeto inicial. Haga click en Aceptar y ejecute su aplicacin. Aplicacin N 2 Disear un reporte que permita mostrar un listado de profesores y los cursos que tienen a su cargo. Tener en cuenta que la informacin relacionada con cada profesor debe empezar en una pgina nueva. El formato del reporte pedido se muestra a continuacin:
Pg. 349
En datos.
esta Para
aplicacin ello
explicaremos un nuevo
como
crear En
grupos
de
iniciar
proyecto.
seguida,
conectarse a la base de datos CursosLibres.MDB mediante el Data Environment. Luego, aada un Comando y denomnelo CmProfesor. Establezca el nombre de la tabla a utilizar, para nuestro caso Curso. Para realizar el agrupamiento por profesor seleccionar la ficha Agrupar del cuadro de dilogo Propiedades de CmProfesor. A continuacin activar la casilla de verificacin Agrupar comando, luego seleccionar de la lista de campos, el campo por el cual se desea agrupar la informacin, para nuestro caso seleccionar CurProfe y dar un click en el botn > . El cuadro de dilogo Propiedades de CmProfesor debe presentar un aspecto similar a la figura siguiente:
Pg. 350
A continuacin sobre el diseador de reportes dar un click con el botn derecho del ratn y del men emergente que se presenta elegir la opcin Insertar encabezado o pie de grupo. Del objeto DeCursosLibres arrastrar el campo CurProfe de la seccin Campo de resumen en CmProfesor_Grouping al diseador de reportes campos pero a la seccin de la Encabezado seccin de grupo. de Los dems en arrastrarlos Campos Detalle
CmProfesor a la seccin Detalle del generador de reportes. Por ltimo proceda a cambiar las siguientes propiedades del objeto DataReport: DataReport1 DataMember DataSource CmProfesor_Grouping DeCursosLibres
Aplicacin N 3 Desarrollar una aplicacin que permita crear un reporte para mostrar la informacin de la base de datos CursosLibres.MDB. Para tal fin debe preparar un formulario que Pg. 351
permita al usuario elegir una tabla, y en seguida se debe generar el reporte correspondiente. Adems el usuario puede obtener una vista preliminar del reporte o una copia impresa. El diseo de la interfaz debe ser similar a la figura que se muestra a continuacin:
Para desarrollar nuestra aplicacin, proceda a disear los reportes correspondientes segn: Tabla Alumno Curso Laboratorio Reporte DataReport1 DataReport2 DataReport3
ubique
los
siguientes
controles
sobre
el
3 botones de opcin 3 botones de comando En seguida proceda a establecer las propiedades segn se indica: Pg. 352
Command1 Nombre Caption Picture CmdVistaPrevia VistaPrevia C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Bitmaps\Win95\ Explorer.bmp Style 1-Graphical Pg. 353
Command2 Nombre Caption Picture CmdImprimir Imprimir C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Bitmaps\Win95\ Printfld.bmp Style Command3 Nombre Caption CmdSalir Salir 1-Graphical
Una vez establecidas las propiedades, proceda a ingresar el siguiente cdigo: Private Sub CmdImprimir_Click() If OptTablaAlumno.Value Then DataReport1.PrintReport True ElseIf OptTablaCurso.Value Then DataReport2.PrintReport True ElseIf OptTablaLaboratorio.Value Then DataReport2.PrintReport True End If End Sub Private Sub CmdVistaPrevia_Click() If OptTablaAlumno.Value Then DataReport1.Show ElseIf OptTablaCurso.Value Then DataReport2.Show ElseIf OptTablaLaboratorio.Value Then DataReport2.Show End If End Sub Pg. 354
Private Sub CmdSalir_Click() Unload Me End Sub Cuando ejecute la aplicacin, al dar un click en el botn Imprimir se visualizar el siguiente cuadro de dilogo, el cual nos permitir confirmar o cancelar la impresin:
Aplicacin N 4 Disear un reporte combinando datos de la tabla Curso y Laboratorio. El reporte debe mostrar el cdigo del curso, el nombre del curso, el nombre del profesor de teora, el nombre del jefe de prctica y el horario de laboratorio. Dar formato al reporte segn su criterio.
FIN PARTE II
Pg. 355
ELABORADO POR
La presente Gua de Laboratorio de Microsoft Visual Basic, se elabor con la finalidad de complementar la parte terica con la parte prctica del curso. Los problemas presentan un grado de dificultad gradual, es decir, en cada prctica primero se comienzan con problemas muy sencillos con la finalidad de que el estudiante esclarezca dudas y quede claro en los
conceptos asimilados en la teora, y luego en los problemas posteriores se va incrementando el nivel de dificultad. Esta gua explora una gran variedad de materias y contiene muchos problemas recopilados que a lo largo las de varios aos de de los
experiencia.
Espero
satisfaga
necesidades
estudiantes y colegas, ya que ha sido elaborada teniendo en cuenta los objetivos de aprendizaje del curso. Si desean compartirla con otros colegas, me agradara
mucho que lo hicieran, con la nica condicin de que siempre se respete el derecho del autor. Desde ya les deseo la mejor de las suertes en el
Microsoft
Visual Basic
Pg. 357
GUA DE LABORATORIO N 9 Objetivos Luego de completar este laboratorio, el estudiante ser capaz de:
Crear
Basic.
utilizar
clases
dentro
de
una
aplicacin
Visual
En la ficha Nuevo seleccione la opcin Mdulo de clase y haga click en Abrir. En seguida active la ventana de propiedades y cambie el nombre de la nueva clase por Circulo. Pg. 358
A continuacin proceda a ingresar el siguiente cdigo para la clase: Private R As Double Public Property Get Radio() As Variant Radio = R End Property Public Property Let Radio(ByVal vNewValue As Variant) If IsNumeric(vNewValue) Then R = CDbl(vNewValue) Else R = 0 End If End Property Public Property Get Area() As Variant Area = 3.141592 * R * R End Property Private Sub Class_Initialize() R = 0 End Sub
Pg. 359
Luego formulario:
proceda
ubicar
los
siguientes
controles
en
el
2 etiquetas 2 cajas de texto 3 botones de comando A continuacin proceda a establecer las propiedades segn se indica: Form1 Nombre Caption Label1 Nombre Caption LblRadio Radio: FrmEjemClaseCirculo Ejemplo con la clase Circulo
Label2 Nombre Caption Text1 Nombre Text Text2 Nombre Text Una prueba: Pg. 360 vez que ha establecido las propiedades indicadas, TxtArea TxtRadio LblArea Area:
Dim A As Circulo Private Sub Form_Load() Set A = New Circulo End Sub Private Sub Form_Unload(Cancel As Integer) Set A = Nothing End Sub Private Sub TxtRadio_Change() A.Radio = TxtRadio TxtArea = A.Area End Sub Guarde y pruebe su aplicacin. El resultado debe ser
Aplicacin N 2 Disear Bienvenido un al control Mundo el de ActiveX la debe que muestre con al el mensaje ActiveX. usuario la Programacin permitir
Adicionalmente,
control
posibilidad de cambiar el color del texto. Para comenzar nuestra aplicacin, debe ingresar a Visual Basic y en la ventana de dilogo Nuevo Proyecto seleccione Control ActiveX, y luego haga click en el botn Aceptar.
Pg. 361
Con esta opcin, podr crear un Control Active X. Las diferencias entre una opcin y la usual (EXE estndar) las ver mejor conforme avance en el desarrollo de la presente Prctica de Laboratorio. En seguida aada un nuevo proyecto EXE estndar. Esto lo puede realizar desde el Men Archivo opcin Agregar Proyecto. Luego establezca las propiedades indicadas a continuacin: Proyecto1 Nombre UserControl1 Nombre ToolboxBitmap MiControl C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Bitmaps\Assorted\ Heart.bmp Proyecto2 Nombre Form1 Pg. 362 VbpMiControl ActiveXMiControl
En la ventana anterior haga click con el botn derecho del ratn sobre MiControl y elija la opcin Ver cdigo. En el ComboBox cdigo: Private Sub UserControl_Paint() Const Msg = Bienvenido al Mundo de la Programacin & _ con ActiveX UserControl.Cls UserControl.Print Msg End Sub Luego en el Explorador de proyectos, hacer click con el botn derecho del ratn sobre la carpeta Controles de usuario y seleccione la opcin Propiedades de ActiveXMiControl. En seguida se mostrar la ventana Propiedades del proyecto: General seleccione UserControl Ahora y en el el ComboBox siguiente Declaraciones seleccione Paint. ingrese
Pg. 363
En
la
ventana
anterior,
en
la
ficha
General,
apartado
Descripcin del proyecto, escribir Este es mi primer Control ActiveX, tal como se muestra. Luego pulsar el botn Aceptar. Cierre todas las ventanas abiertas y haga un slo click sobre la carpeta Controles de usuario. A continuacin ingrese al Men Archivo y seleccione el la con opcin su Generar por ActiveXMiControl.ocx, defecto. Luego, establezca como inicial el formulario guarde archivo nombre
FrmPruebaMiControl y aadir desde el Cuadro de herramientas nuestro control recientemente creado. Del Men Proyecto seleccione la opcin Componentes y veremos la descripcin de nuestro control con su casilla de verificacin activada, tal como se muestra a continuacin:
Pg. 364
En este momento, Ud. acaba de terminar el diseo de su primer control ActiveX. No se preocupe por las diferencias que puede haber encontrado con respecto a la forma tradicional de programar. Conforme avancemos en el desarrollo de la prctica veremos que esta forma de programar en base a componentes es bastante sencilla.
Pg. 365
presentacin. Para tal fin, vamos a hacer uso del Asistente para interfaz de control ActiveX y el Asistente para pginas de propiedades. Estos complementos deben ser instalados desde el men principal de Complementos complementos, y seleccionar tal como se la opcin a Administrador continuacin: indica
En
la
ventana
anterior
debe
activar
las
casillas
de
verificacin Cargado/Descargado y Cargar al iniciar. Luego haga click en el botn Aceptar. En seguida el men Complementos deber presentar la
siguiente apariencia:
Pg. 366
Luego, haga click sobre la opcin Asistente para interfaz de control ActiveX. En seguida, aparecer una ventana de presentacin, haga doble click en el botn Siguiente. Tendremos entonces una ventana similar a la que se muestra:
Haga click con el ratn sobre el botn << y a continuacin elija de la lista de la izquierda ForeColor y haga click sobre el botn >. La propiedad ForeColor es la propiedad encargada de cambiar el color de texto, la cual no est disponible en nuestro control, por ello debemos asociarla. El aspecto del Asistente para interfaz de control ActiveX debe ser similar a:
Pg. 367
Pulse, luego el botn Siguiente. En seguida aparecer otra ventana, haga nuevamente click en el botn Siguiente.
Pg. 368
hemos
llegado
la
ventana y
en del
la
cual
vamos
asociar a nuestro control la propiedad ForeColor. Seleccione ComboBox Control y en UserControl la luego siguiente una y luego ComboBox pulse en Miembro el el botn lea botn ForeColor, tal como se indica en la ventana anterior. Pulse el Siguiente su ventana de haga Finalizar. Aparecer ventana informacin,
contenido
click
el aada Common un el
el 6.0.
FrmPruebaMiControl
Cuadro
herramientas
MiControl,
CommandButton.
CmdAceptar e ingrese el siguiente cdigo: Private Sub CmdAceptar_Click() CommonDialog1.ShowColor MiControl1.ForeColor = CommonDialog1.Color MiControl1.Visible = False MiControl1.Visible = True End Sub Guarde y luego ejecute su aplicacin, el resultado ser similar al siguiente:
Pg. 369
Al hacer click sobre el botn Aceptar, se presenta la siguiente caja de dilogo en la cual podemos elegir el nuevo color para el texto de bienvenida:
Preste atencin en que la propiedad Visible se utiliza para actualizar el contenido del control y se pueda ver el cambio de color. No es la mejor forma de hacerlo, deberamos hacerlo mediante cdigo dentro del mismo control, pero por el momento y para probar como asociar una propiedad a un control es ms que suficiente. Aplicacin N 3 Disear un control ActiveX que presente la forma de un cuadro de texto, pero que slo admita nmeros. Es decir, el usuario slo podr escribir en el control nmeros, cualquier otro carcter que no sea un nmero, ser rechazado por el control y no se imprimir en el cuadro de texto. Al igual que en la aplicacin anterior crear el grupo de proyectos y establezca las propiedades segn: Pg. 370
Proyecto1 Nombre UserControl1 Nombre ToolboxBitmap NumBox C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Bitmaps\Assorted\ Diamond.bmp Proyecto2 Nombre Form1 Nombre Caption BorderStyle FrmPruebaNumBox Prueba de Control ActiveX 3-Fixed Dialog VbpNumBox ActiveXNumBox
Para TextBox
disear el cual
nuestro debe
control
utilizaremos en el
un
control NumBox
insertar
formulario
(UserControl). Luego elimine el contenido de la propiedad Text. Tener cuidado en que el control ha de ser del mismo tamao del cuadro de texto. Luego, el cuadro de texto debe redimensionarse de acuerdo al control en tiempo de diseo, esto es a la hora de insertar nuestro control en un formulario. Para ello es necesario ingresar el siguiente cdigo: Private Sub UserControl_Resize() Text1.Top = 0 Text1.Left = 0 Text1.Width = UserControl.Width Text1.Height = UserControl.Height End Sub
Pg. 371
Private Sub UserControl_InitProperties() Text1 = Extender.Name End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If Not (KeyAscii = 8 Or _ (KeyAscii >= 48 And KeyAscii <= 57)) Then KeyAscii = 0: Beep: Beep: Beep: Beep End If End Sub A continuacin genere el control NumBox y cierre el
formulario de diseo del control. Establezca como inicial el proyecto VbpNumBox y aada un control NumBox y un CommandButton al formulario FrmPruebaNumBox. Cambie el nombre del botn de comando por CmdSalir. A continuacin guarde y ejecute su aplicacin, el resultado debe ser similar al mostrado:
El
control
que
acabamos
de
disear
permite
escribir
nicamente nmeros, es decir es un cuadro de nmeros. Trate de ingresar otros caracteres y vea lo que sucede. Aplicacin N 4 Crear un control ActiveX que permita el ingreso del da, mes y el ao correspondiente a cualquier fecha desde el ao 1 hasta el ao 9999. Deber validar la fecha ingresada y no deber permitir la edicin de fechas no existentes como por Pg. 372
ejemplo 5 de Setiembre de 1752. El control deber mostrar el da de la semana correspondiente a la fecha ingresada, tal como se muestra en la figura siguiente:
El calendario Gregoriano actual obedece a la reforma del calendario Juliano que orden el papa Gregorio XIII en 1752, para ponerlo de acuerdo con los movimientos de los cuerpos celestes. Lo cual trajo como consecuencia adelantar las fechas del 2 de Setiembre al 14 de Setiembre de 1752, es decir las fechas comprendidas en este intervalo de tiempo nunca existieron.
Pg. 373
Microsoft
GUA DE LABORATORIO N 10 Objetivos
Visual Basic
Utilizar documentos ActiveX que incorporan hipervnculos. Desarrollar documentos ActiveX para interactuar con bases de
datos relacionales. Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab10, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 Como primer ejercicio vamos a desarrollar un documento ActiveX que permite recuperar informacin de la base de datos CursosLibres.MDB. Un documento ActiveX, es simplemente un formulario que se puede ejecutar directamente en los exploradores de Internet. Los documentos ActiveX se disean de la misma manera que los formularios estndar de Visual Basic. Para comenzar a desarrollar nuestro documento ActiveX, debe ingresar a Visual Basic y en la ventana de dilogo Nuevo Proyecto seleccione EXE de documento ActiveX y luego haga click en el botn Aceptar, tal como se indica en la figura:
Pg. 374
Para tal efecto, proceda a ubicar los siguientes controles en el formulario: 3 etiquetas Pg. 375
1 cuadro combinado 1 control DataGrid 1 botn de comandos En seguida proceda a establecer las propiedades segn se indica: Label1 Nombre AutoSize Caption Font ForeColor Label2 Nombre AutoSize Caption Font ForeColor Label3 Nombre AutoSize Caption Font Combo1 Nombre Font Text CboTabla Arial (Negrita 10) LblTablas True Vacantes: Arial (Negrita 10) LblTitulo2 True Vctor Andrs Belande Times New Roman (Negrita 24) LblTitulo1 True Instituto de Educacin Superior Arial (Negrita 12)
&H00C00000&
&H000000FF&
CmdAceptar
&Mostrar
Una vez establecidas las propiedades, proceda a ingresar el siguiente cdigo: Dim Cn As ADODB.Connection Dim RsAlumno As ADODB.Recordset Dim RsCurso As ADODB.Recordset Dim RsLaboratorio As ADODB.Recordset Private Sub UserDocument_Initialize() Set Cn = New ADODB.Connection Cn.Open Provider=Microsoft.Jet.OLEDB.4.0; & _ Data Source=C:\FundVB\Data\CursosLibres.MDB; & _ Persist Security Info=False CboTabla.AddItem Alumno CboTabla.AddItem Curso CboTabla.AddItem Laboratorio End Sub Private Sub MostrarAlumno() Set RsAlumno = New ADODB.Recordset RsAlumno.ActiveConnection = Cn RsAlumno.CursorType = adOpenStatic RsAlumno.LockType = adLockReadOnly RsAlumno.CursorLocation = adUseClient RsAlumno.Open Select AluCodigo As Cdigo, & _ Pg. 377
(AluPaterno + ' ' + AluMaterno) As Apellidos, & _ AluNombres As Nombres From Alumno Set DbgrdTabla.DataSource = RsAlumno End Sub Private Sub MostrarCurso() Set RsCurso = New ADODB.Recordset RsCurso.ActiveConnection = Cn RsCurso.CursorType = adOpenStatic RsCurso.LockType = adLockReadOnly RsCurso.CursorLocation = adUseClient RsCurso.Open Select CurCodigo As Cdigo, & _ CurNombre As Nombre, & _ CurVacantes As Vacantes, & _ CurProfe As Profesor From Curso Set DbgrdTabla.DataSource = RsCurso End Sub Private Sub MostrarLaboratorio() Set RsLaboratorio = New ADODB.Recordset RsLaboratorio.ActiveConnection = Cn RsLaboratorio.CursorType = adOpenStatic RsLaboratorio.LockType = adLockReadOnly RsLaboratorio.CursorLocation = adUseClient RsLaboratorio.Open Select LabCodigo As Cdigo, & _ LabHora As Horario, & _ LabProfe As [Jefe de prctica] From Laboratorio Set DbgrdTabla.DataSource = RsLaboratorio End Sub Private Sub CmdMostrar_Click() Select Case CboTabla.ListIndex Pg. 378
Case 0 Call MostrarAlumno Case 1 Call MostrarCurso Case 2 Call MostrarLaboratorio End Select End Sub Finalmente resultado debe continuacin: guarde ser y pruebe a la su documento que ActiveX. se muestra El a
similar
figura
Aplicacin N 2 Al anterior, documento aadirle ActiveX un botn desarrollado Acerca de, en que el ejercicio la presente Pg. 379
informacin referente al autor (o autores) de la aplicacin. El diseo del formulario debe ser tal como se muestra a continuacin:
En primer lugar proceda a aadir un formulario estndar al proyecto. Cambie el nombre del formulario por el de FrmAcercaDe y disee la interfaz pedida. En seguida aada un botn de comandos al documento ActiveX y cambie su nombre por CmdAcerca. Luego haga doble click sobre dicho botn e ingrese el siguiente cdigo: Private Sub CmdAcerca_Click() Load FrmAcercaDe FrmAcercaDe.Show vbModal End Sub Finalmente Aplicacin N 3 Al documento ActiveX desarrollado anteriormente aadirle un botn Ir a, que permita enlazarnos con la direccin que se guarde y pruebe su aplicacin. Como puede
Pg. 380
Para lograr lo que se pide, aada un botn de comandos y un cuadro de texto y cambie sus nombres por CmdURL y TxtURL respectivamente. Luego ingrese el siguiente cdigo: Private Sub CmdURL_Click() UserDocument.Hyperlink.NavigateTo TxtURL End Sub Aplicacin N 4 Elaborar contenido de un la documento tabla ActiveX Curso que de permita la base mostrar de el datos
Pg. 381
CursosLibres.MDB. A continuacin el usuario selecciona un curso y tiene la posibilidad de separar la matrcula o en su defecto matricularse en el curso de su eleccin. El diseo de la aplicacin debe ser similar a la siguiente figura:
Sugerencia: Aadir una nueva tabla a la base de datos para registrar matrcula. a los alumnos matriculados o con separacin de
Microsoft
GUA DE LABORATORIO N 11
Visual Basic
Pg. 382
Disear pginas Web dinmicas mediante aplicaciones DHTML. Desarrollar aplicaciones DHTML para interactuar con los datos
de un sistema distribuido de bases de datos relacionales.
Implementar
cdigo HTML.
aplicaciones
mediante
cdigo
Visual
Basic
multiplicar. En su forma ms sencilla, una aplicacin DHTML (Dynamic HyperText Markup Language) puede consistir de una o ms pginas HTML enlazadas con cdigo Visual Basic y el modelo de objetos HTML dinmico. Para comenzar a desarrollar nuestra aplicacin, ingresar a Visual Basic y en la ventana de dilogo Nuevo Proyecto seleccione Aplicacin DHTML, y haga click en el botn Aceptar.
Pg. 383
Basic
agrega a
un
Diseador que
de se
pginas DHTML al proyecto. En seguida, haga doble click sobre proceda propiedades
DHTMLTablaMultiplicar DHTMLTablaMultiplicar
Pg. 384
Para crear la interfaz de la aplicacin DHTML, simplemente tenemos que ir agregando elementos HTML de la caja de herramientas. De esa manera, realice el diseo de la pgina mostrada en la siguiente figura:
Una el
vez
terminado de la
el
proceso de
de
diseo
de
la
pgina,
seleccione el encabezado Tabla de Multiplicar y haga click en cuarto de botn barra herramientas active del la Diseador de (Ajustar la seleccin en <SPAN> . . . </SPAN>). En seguida, sin dejar seleccionar el encabezado, Ventana propiedades y establezca lo siguiente: Tabla de Multiplicar Id Titulo
A continuacin proceda a establecer las propiedades para los dems controles segn se indica:
Pg. 385
TextField1 Nombre Id Value TextArea1 Nombre Id Value TxtTabla TxtTabla TxtN TxtN
En seguida haga doble click sobre el cuadro de texto TxtN e ingrese lo siguiente: Private Sub DHTMLPage_Load() Document.bgColor = Yellow Titulo.Style.Color = Red End Sub Private Sub Titulo_onmouseout() Titulo.Style.Color = Red End Sub Private Sub Titulo_onmouseover() Titulo.Style.Color = Blue End Sub Private Sub TxtN_onpropertychange() If IsNumeric(TxtN.Value) Then Dim N As Integer, I As Integer, S As String N = Val(TxtN.Value) For I = 0 To 12 S = S & N & * & I & = & N * I & vbCrLf Next I Pg. 386
TxtTabla.Value = S Else TxtTabla.Value = End If End Sub Finalmente, guarde y pruebe su aplicacin DHTML. El
Aplicacin N 2 Desarrollar una aplicacin DHTML que permita visualizar el contenido mostrado: de la tabla Curso de la base de datos CursosLibres.MDB. El diseo de la pgina debe ser similar al
Pg. 387
Para desarrollar nuestra aplicacin, lo primero que debe de hacer es abrir una nuevo proyecto DHTML. Luego debe crear la conexin a la base de datos CursosLibres.MDB. Para ello ingrese al men Proyecto seleccione la opcin Agregar Data Environment. En la ventana Data Environment cambie el nombre del objeto DataEnvironment por DeCursosLibres y el de la conexin por CnCursosLibres. Luego, aada un Comando y denomnelo CmCurso. Haga click derecho sobre el comando y seleccione Propiedades. A continuacin seleccione la opcin Instruccin SQL e ingrese el siguiente cdigo: Select CurCodigo, CurNombre, CurVacantes, CurProfe From Curso
Pg. 388
Luego haga click en el botn Aceptar. El aspecto de la ventana Data Environment debe ser similar al siguiente:
En seguida proceda a disear la pgina. Para ello digite los encabezados y etiquetas necesarios. Luego aada los siguientes controles HTML al diseador de pginas DHTML: 4 cajas de texto 4 botones de comandos
Pg. 389
A continuacin, proceda a establecer las propiedades segn se indica: Vctor Andrs Belande Id Titulo
Pg. 390
Mediante
el
Data
Environment,
ADO
el
objeto
BindingCollection, es posible enlazar elementos de una pgina DHTML con un origen de datos cuando se carga la pgina. Esto le permite modificar los datos y escribir cdigo para actualizar un conjunto de registros subyacente o simplemente desplazarse a travs de los mismos. Por ejemplo, puede usar un objeto BindingCollection con un objeto Recordset de ADO para enlazar los elementos TextField de la pgina de cdigo HTML con campos de la tabla Curso. Para Binding poder utilizar es los objetos de la Microsoft la Data
Collection
necesario
cargar
librera
correspondiente. Selecciones el men Proyecto y elija la opcin Referencias. En el cuadro de dilogo Referencias seleccione la opcin Microsoft Data Binding Collection, tal como se indica en la figura:
Pg. 391
continuacin
declare
una
variable
de
tipo pgina
BindingCollection en la seccin de Declaraciones de la DHTML y proceda a ingresar el cdigo que se muestra: Dim ColBind As BindingCollection Private Sub DHTMLPage_Load() Document.bgColor = Yellow Titulo.Style.Color = Blue Set ColBind = New BindingCollection Set ColBind.DataSource = DeCursosLibres ColBind.DataMember = CmCurso ColBind.Add TxtCurCodigo, Value, CurCodigo ColBind.Add TxtCurNombre, Value, CurNombre ColBind.Add TxtCurVacantes, Value, CurVacantes ColBind.Add TxtCurProfe, Value, CurProfe End Sub Private Function CmdPrimero_onclick() As Boolean Pg. 392
DeCursosLibres.rsCmCurso.MoveFirst End Function Private Function CmdAnterior_onclick() As Boolean DeCursosLibres.rsCmCurso.MovePrevious If DeCursosLibres.rsCmCurso.BOF Then DeCursosLibres.rsCmCurso.MoveFirst End If End Function Private Function CmdSiguiente_onclick() As Boolean DeCursosLibres.rsCmCurso.MoveNext If DeCursosLibres.rsCmCurso.EOF Then DeCursosLibres.rsCmCurso.MoveLast End If End Function Private Function CmdUltimo_onclick() As Boolean DeCursosLibres.rsCmCurso.MoveLast End Function Finalmente, guarde y pruebe su aplicacin. Aplicacin N 3 Disear una aplicacin que permita cargar en una tabla HTML el contenido de la tabla Curso. La tabla HTML se debe crear dinmicamente de acuerdo al nmero de registros existentes. Para Proyecto y desarrollar elija la nuestra opcin aplicacin, DHTML aada Page. una En nueva seguida
pgina DHTML al proyecto anterior. Para ello seleccione el men Agregar proceda a ingresar el siguiente cdigo: Dim ColBind As BindingCollection
Pg. 393
Private Sub DHTMLPage_Load() Dim RsResults As ADODB.Recordset Set ColBind = New BindingCollection Set ColBind.DataSource = DeCursosLibres ColBind.DataMember = CmCurso Set RsResults = DeCursosLibres.rsCmCurso Do While Not RsResults.EOF Document.body.insertAdjacentHTML BeforeEnd, _ <Table Border Cellspacing=1 Cellpadding=7> & _ <Td Width=50> & RsResults!CurCodigo & </Td> & _ <Td Width=200> & RsResults!CurNombre & </Td> & _ <Td Width=50> & RsResults!CurVacantes & </Td> & _ <Td Width=200> & RsResults!CurProfe & </Td> & _ </Table> RsResults.MoveNext Loop RsResults.MoveFirst RsResults.Close End Sub Finalmente, no olvide cambiar el componente de inicio
antes de ejecutar su aplicacin. Aplicacin N 4 Disear una aplicacin DHTML que permita seleccionar de un control Select (similar a un cuadro combinado), el nombre de un profesor y a continuacin se muestren en una tabla HTML dinmica los cursos que dicta dicho profesor. Un elemento Select, es similar a un cuadro combinado. Por ejemplo, para agregar un elemento Select denominado SelProfe a una la pgina HTML, simplemente arrastrar el elemento a la pgina. A continuacin establecer las siguientes propiedades: Pg. 394
Para
especificar
los
elementos
de
lista
que
se
deben
mostrar en el elemento Select agregar el siguiente cdigo al procedimiento de evento Load de la pgina HTML, veamos: Private Sub DHTMLPage_Load() Dim SelElement As HTMLSelectElement Dim Cn As ADODB.Connection Dim RsProfe As ADODB.Recordset Set Cn = New ADODB.Connection Set RsProfe = New ADODB.Recordset Cn.Open Provider=Microsoft.Jet.OLEDB.4.0; & _ Data Source=C:\FundVB\Data\CursosLibres.MDB; & _ Persist Security Info=False RsProfe.ActiveConnection = Cn RsProfe.CursorType = adOpenStatic RsProfe.LockType = adLockOptimistic RsProfe.CursorLocation = adUseClient RsProfe.Open Select Distinct CurProfe From Curso Do While Not RsProfe.EOF() Set SelElement = Document.createElement(OPTION) SelElement.Text = RsProfe!CurProfe SelProfe.Options.Add SelElement RsProfe.MoveNext Loop End Sub Al ejecutar su aplicacin debe ser similar a la figura mostrada: Pg. 395
Finalmente proceda a
manera el
de
ejercicio
para
el
estudiante, mostrar la
escribir
cdigo
necesario
para
Pg. 396
Microsoft
GUA DE LABORATORIO N 12 Objetivos
Visual Basic
Utilizar
Basic.
funciones
API
de
Windows
desde
Microsoft
Visual
Convertir declaraciones de C a Visual Basic. Aadir un sistema de ayuda a una aplicacin. Usar el asistente para empaquetado y distribucin. Generar programas de instalacin mediante disquetes, carpetas
en una unidad local de red o en una publicacin Web. Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab12, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 Un programador de aplicaciones Visual Basic, adems de conocer su entorno de trabajo, debe conocer como su entorno de de programacin, conocido generalmente Interfaz
Programacin de Aplicaciones para Windows (Windows Application Programming Interface, Windows API). La API de Windows viene a ser un conjunto de funciones desarrolladas en lenguaje C. Sin embargo, muchos programadores de Visual Basic recurren a estas funciones para conseguir hacer lo que es imposible (o muy complicado) desde Visual Basic.
Pg. 397
Las funciones API de Windows no son nada complicadas como pueden pensar algunos programadores de Visual Basic. Como primer ejercicio vamos a escribir una aplicacin que permita modificar el ttulo de un formulario. En la prctica, siempre se modifican los ttulos del formulario con la propiedad Caption de Visual Basic, pero este ejercicio ofrece una manera sencilla de declarar y llamar a una API de Windows. El primer paso consiste en aadir un mdulo de cdigo al proyecto. En seguida proceda a declarar la funcin en la seccin de declaraciones del mdulo: Public Declare Function SetWindowText Lib user32 _ Alias SetWindowTextA (ByVal hWnd As Long, _ ByVal lpString As String) As Long Luego, en el formulario ingrese el cdigo que se muestra a continuacin: Private Sub Form_Load() SetWindowText Form1.hWnd, Bienvenidos a la API de Windows End Sub Al ejecutar su aplicacin, su resultado debe ser similar a la siguiente figura:
Pg. 398
Aplicacin N 2 Desarrollar archivo Wav o una Midi. aplicacin Utilizar que la permita funcin reproducir API de un Windows
Como por
se
sabe, utiliza
el una
lenguaje letra la
diferencia en
las
maysculas de las minsculas. Por ello, si Ud. comete un error, ejemplo (o mayscula funcin lugar minscula viceversa), declarada no
reconocida y obtendr un mensaje de error. Para evitar este tipo de problemas, vamos a utilizar el Visor API de Windows. En seguida, del men Complementos elija la opcin Administrador de Complementos. Del cuadro de dilogo que se presenta cargar la opcin Visor de API de VB 6. Al dar un click en el botn Aceptar, se aadir en el men Complementos la opcin Visor de API.
En seguida ingrese al Visor de API. Se debe presentar una pantalla similar a la siguiente:
Pg. 399
En elija
la
pantalla
anterior,
seleccione de
el
men el
Archivo cuadro
y de
la
opcin
Cargar
archivo
texto.
En
dilogo que se presenta elegir el archivo Win32api.Txt y dar un click en el botn Abrir.
Pg. 400
De la siguiente pantalla Ud. podr seleccionar la funcin que desea, luego active la opcin pblico y dar un click en el botn Agregar para visualizar el cdigo de declaracin de dicha funcin.
En seguida haga click en el botn Copiar y pegue dicho cdigo a su aplicacin. Recordar que la declaracin de la funcin API se debe realizar en un mdulo, por lo tanto debe agregar un nuevo mdulo y pegar el siguiente cdigo: Public Declare Function mciExecute Lib winmm.dll _ (ByVal lpstrCommand As String) As Long Luego proceda a disear la interfaz de la aplicacin. Para ello ubique los siguientes controles: 1 control Image Pg. 401
2 botones de comando En seguida establezca las propiedades segn se indica a continuacin: Form1 Nombre Caption BorderStyle Image1 Picture C:\Archivos de programa\Microsoft Visual Studio\Common\Graphics\Icons\Misc\Mike.ico Stretch Command1 Nombre Caption Command2 Nombre Caption CmdSalir CmdEjecutar True FrmMultimedia Hacer sonar un fichero Wav o Midi 3-Fixed Dialog
&Ejecutar
&Salir
Una vez establecidas las propiedades, proceda a ingresar el siguiente cdigo: Private Sub CmdEjecutar_Click() iResult = mciExecute(Play c:\vbN2\bmp\34.wav) End Sub Private Sub CmdSalir_Click() Unload Me End Sub Aplicacin N 3 Pg. 402
Uno de los temas en los que Windows ha creado un estndar es el sistema de ayuda de las aplicaciones. Para ello incluye una aplicacin denominada WinHelp como motor de ayuda de Windows. Los pasos necesarios para crear un sistema de ayuda son los siguientes:
Crear un archivo de texto RTF. Compilar el archivo RTF mediante el compilador de ayudas Help
Workshop, para obtener el archivo HLP.
Contenido Microsoft Visual Basic Nivel I Microsoft Visual Basic Nivel II Microsoft Visual Basic Nivel III En seguida ubique el cursor en la ltima lnea de texto y presione la combinacin de teclas Ctrl + Enter, para comenzar en una nueva pgina. A continuacin digite lo siguiente:
Pg. 403
Nivel I
Volver
Conceptos bsicos Elementos del lenguaje Entrada y salida de datos Sentencias de control Arreglos Estructuras Archivos de datos
En seguida ubique el cursor en la ltima lnea de texto que acaba de ingresar y pulse Ctrl + Enter para comenzar a digitar el siguiente texto en una pgina diferente:
Nivel II Creacin de bases de datos Aplicaciones Cliente Servidor Sentencias SQL Entorno de datos Objetos de Datos ActiveX (ADO) Reportes Volver
Pg. 404
De manera anloga a los dems casos, ubique el cursor en la ltima lnea de texto y presione Ctrl + Enter. En seguida ingrese el siguiente texto:
Nivel III Creacin componentes Lenguaje HTML Visual Basic Script Aplicaciones DHTML API de Windows Creacin de archivos de ayuda Empaquetado y distribucin Volver Finalmente, debe obtener un archivo de cuatro pginas. Guarde su archivo como MiAyuda.RTF. El archivo de ayuda que vamos a construir va a utilizar ms de una pgina, y en ese caso se requiere especificar un identificador para cada pgina. Ahora procederemos a crear los identificadores de pginas. Para ello ubicar el cursor en la primera pgina antes del encabezado Microsoft Visual Basic 6.0 y seleccione del men Insertar la opcin Nota al pie. Luego, ingresar como marca personal el smbolo # tal como se muestra en la siguiente figura:
Pg. 405
Al dar click en el botn Aceptar, el cursor se ubicar automticamente en el pie de pgina donde debe digitar VBMain delante del smbolo #. En la misma pgina, ubicar el cursor delante de la palabra Microsoft Visual Basic Nivel I y darle el atributo de subrayado doble. Luego, escribir VB1 inmediatamente despus del texto subrayado y a este identificador darle el atributo de oculto. Realizar lneas, acciones del similares para las dos Basic siguientes Nivel II
despus
texto
Microsoft
Visual
escribir VB2 y para Microsoft Visual Basic Nivel III escribir VB3. No olvidar que estos identificadores deben tener atributo de oculto. En la segunda pgina ubicar el cursor antes del encabezado Microsoft Visual Basic 6.0 y seleccione del men Insertar la opcin Nota al pie. Luego, ingresar como marca personal el smbolo # y luego digitar en el pie de pgina VB1. Luego en la misma pgina, posicionar el cursor delante de la palabra Volver y darle el atributo despus de subrayado del texto doble. Escribir y a VBMain este inmediatamente subrayado
Continuar de manera similar con las siguientes pginas. Al concluir vuelva a guardar su archivo. La primera pgina debe presentar una apariencia similar a la siguiente figura:
Continuando con nuestro esquema, ahora debemos generar el archivo HLP a partir del archivo RTF que acabamos de crear. Para ello debemos ejecutar la aplicacin Microsoft Help Workshop. Desde el men Inicio, elija la carpeta Programas, luego elija la carpeta Microsoft Visual Studio 6.0, en seguida seleccione la carpeta Herramientas de Microsoft Visual Studio 6.0, y luego haga clic sobre la aplicacin Help Workshop. A continuacin se presentar una ventana similar a la mostrada en la siguiente figura:
Pg. 407
el
men
File un
elija de
la
opcin
New.
A al
mostrar
cuadro
dilogo
similar
Seleccione la opcin Help Project y dar un click en el botn OK. En seguida se presentar una ventana en la cual debe indicar el nombre y la ruta del archivo HLP que desea generar. Para nuestro caso digite MiAyuda y haga click sobre el botn Guardar, tal como se indica en la figura que se muestra a continuacin:
Pg. 408
Al
hacer
click
en
el
botn
Guardar,
en
seguida
se
Ahora que Ud. ha creado un proyecto de ayuda, necesita agregar la informacin sobre su archivo o archivos de ayuda.
Pg. 409
Ha creado su archivo de ayuda MiAyuda.RTF? Si Ud. ya lo ha creado haga click en el botn Files y en seguida aparecer la siguiente pantalla:
Luego
dar
un
click
en
el
botn
Add.
En
seguida
se
presentar la siguiente ventana en la cual debe especificar el nombre y la ruta de su archivo de ayuda RTF. Para nuestro seleccione MiAyuda y haga click en el botn Abrir.
Pg. 410
En seguida se mostrar la siguiente pantalla. Ud. haga click sobre el botn OK.
Pg. 411
A continuacin vamos a definir una ventana. Para ello haga click sobre el botn Windows. En seguida aparecer un cuadro de dilogo en el cual debe ingresar el nombre de la ventana. Para nuestro caso digite Main. Luego haga click en el botn OK.
En seguida se presentar el siguiente cuadro de dilogo. En la ficha General ingrese el texto que se indica para la barra de ttulo de la ventana.
Pg. 412
En
la
ficha
Position
defina
el
tamao
inicial
de
la
En seguida se presentar una ventana de prueba similar a la que se muestra en la figura siguiente. Cambie las dimensiones de esta ventana segn su parecer y haga click en el botn OK.
Pg. 413
A continuacin seleccione la ficha Buttons y active los botones que Ud. quiere agregar para su ventana.
Luego seleccione la ficha Color. En seguida se presentar una pantalla similar a la siguiente:
Pg. 414
Para cambiar el color de la zona de no desplazamiento o la zona de desplazamiento pulse el botn Change al lado de la ventana de muestra. Escoja el color que Ud. desee y entonces haga click en el botn Aceptar. El archivo de proyecto debe presentar una apariencia
Bueno, Ud. acaba de crear su primer proyecto de ayuda bsico. Ms adelante si as lo necesitar puede cambiar cualquiera de estas opciones. Para ello simplemente debe abrir su archivo de proyecto de ayuda y realizar los cambios que considere pertinente. Finalmente guarde y pruebe su proyecto. Para lo cual debe dar click en el botn Save and Compile. En seguida se presentar una pantalla similar a la siguiente:
Pg. 415
En seguida ingrese al men File y elija la opcin Run WinHelp. mostrada: Luego, se presentar una pantalla similar a la
Pg. 416
En seguida dar click en el botn View Help. A continuacin se presentar una pantalla similar a la figura siguiente. Pruebe ingresando a las otras pginas, para ello simplemente haga click en cualquiera de los tres tems que se muestran en la seccin Contenido.
Sabe Ud. como aadir una imagen de mapa de bits a nuestro archivo de ayuda? La respuesta es bastante sencilla. Para ello realice los siguientes pasos: Ingrese a Microsoft Word 2000 y proceda a abrir el archivo MiAyuda.RTF. Ubiquese en la primera pgina y aada el siguiente texto {BMC CCP.BMP} antes del nombre del profesor. Luego guarde su archivo. A continuacin cargue el Help Workshop. Luego dar click sobre el botn Bitmaps. Se presentar una pantalla similar a la figura siguiente:
Pg. 417
En seguida haga click en el botn Add. A continuacin se presentar una ventana similar a la siguiente figura:
En el cuadro de dilogo anterior seleccione la ruta que se indica. Luego haga click en el botn OK. Finalmente, grabe y compile su proyecto de ayuda. Para ello dar click en el botn View Help.
Pg. 418
continuacin
se
presentar
una
ventana
similar
la
siguiente figura:
Por ltimo, veremos como utilizar nuestros archivos de ayuda desde una aplicacin Visual Basic. Para tal fin abra un nuevo proyecto y aada un botn de comandos al formulario. Cambie el nombre del botn por CmdAyuda y proceda a ingresar el siguiente cdigo: Private Sub CmdAyuda_Click() Dim Ayuda Ayuda = Shell(C:\Windows\WinHelp.exe & _ C:\FundVB\Lab12\MiAyuda.HLP, 1) End Sub Aplicacin N 4 Pg. 419
Despus
de
crear
una
aplicacin
Visual
Basic,
por
lo
general debemos proporcionrsela al usuario final, ya sea en disquetes, CD, a travs de una red local, o bien a travs de una Intranet o Internet. Esto requiere primero empaquetar la aplicacin y despus distribuirla. Como ejemplo, vamos a generar el programa de instalacin para la aplicacin creada en el ejercicio anterior. Para ello es necesario que tenga abierta dicha aplicacin. Primero opcin Package figura: debemos iniciar de el Asistente y de aada de empaquetado la y
distribucin. Para tal fin, del Men Complementos seleccione la Administrador and complementos Wizard. Al utilidad el Deployment momento iniciar
En seguida haga click en el botn Empaquetar. Esto har que el Asistente le presente varios cuadros de dilogo que le Pg. 420
pedirn
informacin
referente
al
proyecto
que
vamos
empaquetar y le permitir elegir qu opciones quiere incorporar al programa de instalacin, el tipo de empaquetado, la carpeta donde se almacenar el paquete de instalacin, qu archivos desea equipo incluir del adicionalmente final medida en el paquete, la qu grupos de y la ms elementos de grupo del men Inicio se debern crear en el usuario etc. A durante que instalacin si aplicacin, avanza, necesita
informacin consulte al Jefe de Prctica. Una vez concluido el proceso de empaquetado cierre
Microsoft Visual Basic. Luego haga click en el men Inicio y seleccione la opcin Ejecutar. Seguidamente ingrese la ruta de nuestro programa de instalacin y dar click en Aceptar, tal como se indica en la figura:
En
esos
instantes
se
dar
inicio
la
instalacin
de
nuestra aplicacin. Concluido este proceso, seleccione el men Inicio, carpeta Programas y ubique la carpeta que contiene la aplicacin. Finalmente proceda a ejecutar su aplicacin. Fin de las prcticas de laboratorio. Suerte.
Pg. 421