You are on page 1of 421

CAPTULO 1

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.

EJECUTANDO VISUAL BASIC Si ya tiene instalado Visual Basic, para ejecutarlo

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

disear la interfaz grfica de usuario.

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

(controles) de la interfaz de usuario.

Explorador de proyectos Contiene el conjunto de archivos que constituyen la

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.

Mens contextuales Pg. 7

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

La apariencia de la interfaz debe ser similar a la figura mostrada:

Estableciendo las propiedades Para ver las propiedades de un objeto, simplemente debe seleccionarlo siguiente y pulsar las la tecla F4. Por ejemplo de la figura y

muestra

propiedades

del

botn

comando

podemos ver que la propiedad Caption tiene el valor Command1.

Pg. 10

Puede

cambiar de

el la

valor ventana

de

cualquier y

propiedad simplemente anterior

seleccionndolo modificando su

anterior para el

valor,

por

ejemplo

caso

establezca el valor de la propiedad Caption de Command1 a Haga click aqu.

De manera similar proceda cambiar la propiedad Caption del formulario a Mi primera aplicacin. La apariencia de la

interfaz debe ser similar a la figura mostrada:

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

ingresar el cdigo que se indica a continuacin:

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.

MECANISMOS BSICOS DE LA POO Los mecanismos bsicos de la programacin orientada a

objetos son: Objetos Propiedades Mtodos Eventos Mensajes Clases

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

explcitamente en el programa. Eventos Un evento es la capacidad de un objeto de reaccionar

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.

CARACTERSTICAS DE LA POO Las caractersticas fundamentales de la programacin

orientada a objetos son: Abstraccin Encapsulamiento Herencia Polimorfismo

Pg. 15

Abstraccin La abstraccin permite no detenernos en los detalles

concretos del funcionamiento de las cosas, sino centrarnos en los aspectos que realmente nos importan y nos son tiles en un determinado momento, en cierta medida, se 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.

Polimorfismo Polimorfismo, del griego cuyo significado es muchas

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:

etiquetas, cuadros de texto, botones de comando, casillas de Pg. 17

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

cuadrculas. El formulario ms los controles constituyen la interfaz de la aplicacin.

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

LOS EVENTOS Cada objeto responde a un conjunto de eventos. Como

respuesta a un evento se ejecuta un determinado procedimiento. Los procedimientos asociados a un evento presentan la forma: Private Sub OBJETO_EVENTO() SENTENCIAS End Sub

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.

CONVENCIN DE NOMBRES PARA LOS OBJETOS

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

Grfico Control (se utiliza en procedimientos cuando el tipo de control es desconocido)

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

precisin (4 bytes) Double Punto flotante de

precisin (8 bytes) Currency Monetario (8 bytes)

byte por carcter)

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

bytes + 1 byte por carcter

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

especial para Visual Basic.

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

presenta en la figura siguiente:

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

Para crear una

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 = 6 Then ElseIf N = 7 Then ElseIf N = 8 Then ElseIf N = 9 Then

: MsgBox Junio : MsgBox Julio : MsgBox Agosto : MsgBox Setiembre

ElseIf N = 10 Then : MsgBox Octubre ElseIf N = 11 Then : MsgBox Noviembre ElseIf N = 12 Then : MsgBox Diciembre Else : MsgBox Error de datos End If Estructura Select Case Este estructura es una alternativa a la estructura

If . . . Then . . . ElseIf, cuando lo que necesita es comparar la misma 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

MsgBox El factorial de & Str(N) & es= & Str(FACT)

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

FUNCIONES Las funciones son uno de los elementos bsicos en

programacin. A continuacin sern estudiadas detalladamente. Declaracin de una funcin

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:

Por referencia Por valor


Paso de argumentos por referencia En las funciones de Visual Basic, los argumentos se pasan por referencia (forma por defecto), de este modo cualquier

cambio de valor que sufra un 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

RAIZ = True Else RAIZ = False End If End Function

' Verdadero si hay races reales

' Falso si no hay races reales

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

PROCEDIMIENTOS La sintaxis para definir un procedimiento es la

siguiente: Private Sub NOMBRE_PROCEDIMIENTO([LISTA_PARMETROS]) Pg. 51

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

USO DE LOS CONTROLES


Los controles son aquellos objetos que se encuentran

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 bsicos Controles complementarios Controles externos


Los controles bsicos son las etiquetas, cuadros de texto y botones de comando, pues utilizando estos tres controles se puede construir cualquier interfaz. Los controles complementarios son el resto de los

controles, por ejemplo una casilla de 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.

Propiedad Alignment Especifica texto. AutoSize la

Descripcin forma como se alinear el

Especifica si se cambia automticamente el tamao del control para que quepan sus contenidos.

BackColor, ForeColor BackStyle

Especifica

el

color

de

fondo

de

primer

plano empleado para mostrar el texto. Especifica si el fondo del control es

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

Descripcin Habilita o deshabilita el control, es decir si se puede o no modificar el contenido.

Locked

Permite

bloquear

el

acceso

al

control

en

tiempo de 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

desplazamiento horizontales o verticales. SelLength Especifica el nmero de caracteres

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:

Evento Change Ocurre cuando

Descripcin se cambia el contenido del

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.

Propiedad Cancel Especifica aplicacin. Caption Default si

Descripcin el control responder a la

tecla ESC, por lo general para terminar la

Muestra un ttulo para el control. Especifica enfoque. si el control responder a la

tecla ENTRAR, sin importar la ubicacin del

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

Descripcin Ocurre cuando el usuario hace click sobre el control.

manera

de

ejemplo consiste cierta

vamos en un

desarrollar cajero de

la

siguiente el lo cual cual

aplicacin. permite dispone

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

LblB100 True Billetes de S/. 100

LblB200 True Billetes de S/. 200

TxtCantidad

TxtB10

TxtB20

TxtB50

TxtB100

TxtB200

Pg. 60

Nombre Caption Command2 Nombre Caption Command3 Nombre Caption

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

posicionar el cursor sobre ella.

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

Descripcin Muestra un ttulo para el control.

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

verificacin en grupos para mostrar mltiples opciones entre Pg. 63

las cuales el usuario puede seleccionar todas las que desee a la vez.

Propiedad Caption Value

Descripcin Muestra un ttulo para el control. Devuelve o establece el estado del control, puede ser: Desactivado (0), Activado (1).

Las casillas de verificacin suelen responder al evento Click.

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.

Propiedad Caption Value

Descripcin Muestra un ttulo para el control. Devuelve o establece el estado del control, puede (True). ser: Desactivado (Falso), Activado

Los botones de opcin tambin suelen responder al evento Click.

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.

Propiedad List Contiene los

Descripcin elementos de la lista. Puede

definirlos en tiempo de diseo. ListCount Especifica el nmero de elementos de la

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:

Mtodo AddItem Clear

Descripcin Agrega un nuevo elemento a la lista. Elimina todos los elementos contenidos en la lista.

RemoveItem

Elimina en elemento de la lista.

Cuadro combinado Un cuadro combinado es una mezcla de un cuadro de texto con una lista. En l no 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:

Evento Timer Ocurre cuando en

Descripcin el la nmero de milisegundos Interval ha

especificado transcurrido.

propiedad

manera

de

ejemplo

vamos

desarrollar

la

siguiente

aplicacin que simula el funcionamiento de un reloj digital.

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.

Propiedad AutoSize Especifica si

Descripcin el su tamao control para ajusta un

automticamente

mostrar

grfico completo. Picture Especifica control. Pg. 83 el archivo de imagen para el

El

evento

que

suele

manejarse

para

este

control

es

MouseMove, cuya descripcin es:

Evento MouseMove

Descripcin Ocurre cuando el usuario mueve el ratn sobre el control.

Imagen Un control imagen se utilizar para mostrar un archivo de imagen (BMP, GIF o JPG) de manera similar a un Cuadro de

imagen. Sin embargo, este control utiliza menos recursos del sistema y se actualiza con ms rapidez que un cuadro de imagen.

Propiedad Picture Especifica control. Stretch Especifica archivo como el

Descripcin archivo de imagen para el

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

Descripcin Especifica el valor mximo que puede tomar la propiedad Value.

Min

Especifica el valor mnimo que puede tomar la propiedad Value.

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

encuentra siempre entre los valores de las propiedades Min y Max.

Las barras de desplazamientos responden a los eventos:

Evento Change

Descripcin Ocurre inmediatamente despus que el cuadrado de desplazamiento ha sido movido.

Scroll

Ocurre mientras el cuadrado de desplazamiento est siendo movido (este evento slo ocurre cuando el cuadrado es arrastrado).

Barras de desplazamiento vertical Pg. 85

Una barra de desplazamiento vertical representa un valor entero, la cual tiene un cuadrado que se desplaza a lo largo de la misma para fijar un valor. La 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.

Cuadro de lista de unidades Un cuadro de lista de unidades permite al usuario

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

Descripcin Especifica la unidad seleccionada en tiempo de ejecucin.

Este control responde al evento Change, cuya descripcin es la siguiente:

Evento Change

Descripcin Ocurre cuando el usuario hace click sobre la unidad Change que desea seleccionar. si se El evento la tambin ocurre selecciona

unidad mediante el teclado.

Cuadro de lista de directorios Pg. 89

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

Descripcin Especifica la ruta de acceso actual.

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

lista de los archivos seleccionados por tipo.

Propiedad Path Pattern

Descripcin Especifica la ruta de acceso actual. Especifica el tipo de archivo que se desea visualizar en el control.

List

Devuelve los elementos contenidos en la parte de lista del control.

ListIndex

Especifica

el

ndice

del

elemento

seleccionado actualmente en el control.

Como

ejemplo

vamos

desarrollar

una

aplicacin

que

permita el manejo de unidades, carpetas y archivos. El usuario Pg. 90

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

presentar algn mensaje (por ejemplo una pregunta) y en funcin

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

Aceptar y Cancelar Anular, Reintentar, Ignorar S, No y Cancelar S y No Reintentar y Cancelar

vbOKCancel vbAbortRetryIgnore vbYesNoCancel vbYesNo vbRetryCancel

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

aplicacin de una manera fcil e intuitiva.

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

continuacin pasamos a describir.

Pg. 99

Propiedad AutoRedraw Especifica si

Descripcin se activa el redibujado

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

barra de ttulo del formulario. ControlBox Especifica si aparece un icono de men

desplegable en el ngulo superior izquierdo del formulario. ForeColor Especifica el color de primer plano utilizado para mostrar texto sobre el formulario. Height Especifica el alto del formulario. Se mide en twips. Icon Especifica el icono que se muestra para un formulario. MaxButton Especifica si el formulario tiene un 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

Nota Un twip es una unidad independiente de la pantalla

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

Descripcin Ocurre cuando el formulario se convierte en ventana activa.

Deactivate

Ocurre cuando el formulario deja de ser la ventana activa.

Load

Ocurre cuando el formulario se carga en la memoria.

MouseDown

Ocurre

cuando

el

usuario

pulsa

el

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:

Mtodo Hide PopupMenu

Descripcin Oculta un formulario. Presenta un men popup en la posicin actual del ratn.

Print Refresh

Imprime un valor sobre el formulario. Vuelve a pintar un formulario y actualiza

todos los valores contenidos en l. Show Muestra un formulario y determina si es modal o carece de modo. Si el formulario a mostrar no est cargado Visual Basic lo carga 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

propiedades: Form2 Nombre Caption ControlBox Form2 Segundo formulario False

Pg. 104

Command2 Nombre Caption CmdVolver &Volver

En seguida proceda a ingresar el cdigo que se indica a continuacin: Private Sub CmdVolver_Click() Form1.Show Form2.Hide End Sub

ESTILOS DE FORMULARIO Visual Basic cuenta con seis diferentes estilos de

formulario, cuya descripcin es la siguiente:

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

Estilo Fixed Dialog

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

permita representar los diferentes estilos de formulario de Visual Basic.

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:

Formulario Form2 Form3 Form4 Form5 Form6 Form7 FrmNone

Nombre

FrmFixedSingle FrmSizable FrmFixedDialog FrmFixedToolWindow FrmSizableToolWindow

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

Command1 Nombre Caption CmdVolver &Volver

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

Form2 TxtMensaje2 CmdRecibir CmdVolver

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

declara a nivel de mdulo y se le puede acceder desde cualquier otro mdulo.

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

opcin Editor de mens.

Pg. 117

En seguida se ha de presentar el Editor de mens de Visual Basic.

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 un nombre para el men en el cuadro de texto Name,


el cual ser utilizado en el cdigo para referirse al men.

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

Para diferenciar un elemento del men del propio men, hay


que sangrar el ttulo del elemento, para tal fin,

seleccinelo y haga click en el botn flecha hacia la derecha ( ).

Un elemento de men puede ser una orden (si el elemento


siguiente aparece sangrado al mismo nivel) o un submen (si el elemento siguiente aparece sangrado un nivel ms).

Utilizando separadores puede agrupar las rdenes en funcin


de lo que realizan. Para insertar un separador, escriba un nico guin (-) en el cuadro Caption del Editor de mens. Tiene que especificar tambin un nombre para el separador.

Para aadir un acelerador (una tecla o combinacin de teclas


que permiten activar un men), utilizar la propiedad

Shortcut.

La propiedad Checked es til para indicar si una orden est


activa o no lo est. Cuando se especifica esta propiedad aparece una marca (3) a la izquierda del elemento de men.

La propiedad Enabled es til para desactivar una orden en un


momento en el cual no tiene sentido que est activa.

La propiedad Visible es til cuando durante la ejecucin se


desea ocultar un elemento de men.

Cerrar

el

Editor

de

mens,

para

ello

una

vez

que

haya

finalizado su diseo pulse el botn Aceptar.

Pg. 119

Como ejercicio intente construir el men mostrado en la figura anterior.

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

MnuReporteLinea MnuReporteClienteMes MnuReporteVendMes MnuAyuda MnuAyudaContenido MnuAyudaIndice MnuAyudaBusqueda MnuAyudaLinea MnuAyudaAbout

Ninguno Ninguno Ninguno 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

Archivo, opcin Artculo, el resultado ser similar a la figura mostrada:

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

botones tal manera

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

Como ejemplo, vamos a crear la barra de herramientas de la figura mostrada:

Para

ello,

ubicar

un

control

ImageList

sobre

el

formulario, para establecer sus propiedades dar click derecho sobre el control y elija la opcin Propiedades.

Pg. 124

Se ha de presentar un cuadro de dilogo similar a la figura mostrada:

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

evento ButtonClick se dispara cuando el usuario hace

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

teclas, la hora y la fecha del sistema con un mnimo de cdigo.

Constante sbrText sbrCaps sbrNum sbrIns sbrScrl sbrTime

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

Muestra la fecha actual con el formato del sistema. Pg. 130

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:

Caption &Herramientas . . . Calculadora . . . Calendario . . . Solitario MnuTools

Name

Visible

MnuToolsCalc MnuToolsCalen MnuToolsSol

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

contrario devuelve cero.

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

CONTROL ANIMATION El control Animation permite reproducir archivos de

extensin .AVI que no tengan sonido para crear animaciones. Para agregar este control debe seleccionar el componente

Microsoft Windows Common Controls-2 6.0.

Propiedad AutoPlay

Descripcin Especifica si el archivo AVI se reproducir automticamente al cargarse el control.

Mtodo Close Open Play

Descripcin Cierra el archivo AVI abierto actualmente. Permite abrir el archivo AVI. Reproduce Animation. el archivo AVI en el control

Stop

Termina la reproduccin del archivo AVI.

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

Propiedad Color FileName

Descripcin Especifica el color seleccionado. Especifica la ruta y nombre del archivo

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.

Mtodo ShowColor ShowFont ShowHelp ShowOpen ShowPrinter ShowSave

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

seleccionado debe ser mostrado en el formulario:

Para

el

diseo

de

esta

aplicacin

crear

un

nuevo

formulario y ubicar un botn de comando (CmdAbrirArchivo), un control imagen y un control CommonDialog.

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

Descripcin Especifica la ruta y nombre del archivo GIF animado.

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

Descripcin Especifica el nmero de columna de la celda actual.

Cols

Especifica el nmero total de columnas, fijas y no fijas.

FixedCols

Especifica el nmero de columnas fijas. El valor por defecto es 1.

FixedRows

Especifica el nmero de filas fijas. El valor por defecto es 1.

Row

Especifica actual.

el

nmero

de

fila

de

la

celda

Rows

Especifica el nmero total de filas, fijas y no fijas.

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

Especifica si la cuadrcula presenta barras de desplazamiento horizontales, verticales o ambas a la vez.

Como

ejemplo

vamos

desarrollar

una

aplicacin

que

visualice un cuadrado mgico de orden impar

N . Un cuadrado

mgico se compone de nmeros enteros comprendidos entre 1 y

N 2 . La suma de los nmeros que figuran en cada fila, cada


columna y cada diagonal son idnticos. Pg. 142

Por ejemplo para nmeros:

N = 5 tenemos el siguiente arreglo de

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

denomina control Spinner. Para agregar un control UpDown debe seleccionar el

componente Microsoft Windows Common Controls-2 6.0.

Propiedad BuddyControl Especifica auxiliar. BuddyProperty Especifica sincronizar auxiliar. Increment la el el

Descripcin control utilizado como

propiedad control

utilizada UpDown con

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

Especifica el valor mximo del intervalo de desplazamiento del control UpDown.

Min

Especifica el valor mnimo del intervalo de desplazamiento del control UpDown.

SyncBuddy

Especifica si el control UpDown sincroniza la propiedad Value con una propiedad del control auxiliar.

Como

ejemplo

vamos

desarrollar

una

aplicacin

que

permita mostrar el cdigo ANSI de un carcter especificado. Pg. 145

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.

Propiedad Day Month Year Value DayOfWeek

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

respectivamente seleccionado. Permiten

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

Ocurre cada vez que el usuario hace click sobre el control.

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

atractiva de nuestra aplicacin.

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.

CONTROL CALENDAR Pg. 149

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.

Propiedad Day Month Year Value

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

relacionada dispositivo duro). Los

almacenada

unidad

almacenamiento almacenados que pueden

secundario en un

(disquete, son en de

disco manera

datos de modo

archivo

permanente

ser

manipulados

cualquier

momento. Cada archivo est referenciado por un identificador, su nombre.

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

correctamente consta de:

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

completa del nombre del archivo es:

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:

C:\DATA\LIB\CONSTANTES.DAT Desde el punto de vista de Visual Basic un archivo

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

formado por un carcter. OPERACIONES SOBRE EL SISTEMA DE ARCHIVOS Pg. 153

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

especifica el nombre actual del archivo y NOMBRE_NUEVO es otra Pg. 154

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

identifica la carpeta que se desea eliminar. Por ejemplo: Pg. 155

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:

ChDrive A OPERACIONES CON ARCHIVOS

Pg. 156

Para

realizar

alguna su

operacin nombre

sobre

un Las

archivo

hay

referenciarlo

mediante

completo.

operaciones

bsicas que se pueden realizar con los archivos son:

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.

Cerrar, evitar cualquier otra referencia al archivo en tanto


no se le abra otra vez.

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.

Modo Output Escritura de

Descripcin datos. Si el archivo existe, su

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

Sentencia Print Permite escribir datos secuencialmente en un archivo. Su sintaxis es:

Print # NMERO_ARCHIVO, LISTA_DE_EXPRESIONES Donde NMERO_ARCHIVO es el nmero utilizado cuando el

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:

Write # NMERO_ARCHIVO, LISTA_DE_EXPRESIONES Donde NMERO_ARCHIVO es el nmero utilizado cuando el

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

informacin en un archivo, se siguen distintas convenciones

Pg. 160

universales, de modo que los datos siempre se pueden leer e interpretar correctamente, independientemente de la

configuracin regional, estas convenciones son:

Los datos numricos siempre se escriben utilizando la coma


(,) como separador decimal.

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:

Visual Basic es fcil", # 2002-04-11 #

Sentencia Close

Pg. 161

Cierra uno archivo abierto mediante la sentencia Open. Su sintaxis es la siguiente:

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

correspondientes datos del archivo.

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

cadena. Su sintaxis es:

Line Input # NMERO_ARCHIVO, VARIABLE Donde NMERO_ARCHIVO es el nmero utilizado cuando el

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

Funcin Input Retorna los siguientes


N

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:

Funcin EOF Pg. 165

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.

El men que se muestra en la figura obedece a la siguiente descripcin:

Caption &Archivo . . . &Nuevo . . . &Abrir . . . &Guardar . . . . . . &Salir

Name MnuArchivo MnuArchivoNuevo MnuArchivoAbrir MnuArchivoGuardar MnuArchivoLinea MnuArchivoSalir

ShortCut Ninguno Ninguno Ninguno Ninguno Ninguno Ctrl + X

Luego proceda a ubicar los siguientes controles sobre el formulario:

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

ingresar el cdigo que se muestra:

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

ledo, escrito o actualizado. Las sentencias y funciones necesarias para manipular

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

acceso aleatorio. Su sintaxis es: Pg. 171

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

especfica. Su sintaxis es de la forma: Pg. 172

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

VARIABLE = LOF(# NMERO_ARCHIVO)

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

fichero. Su sintaxis es:

VARIABLE = Loc(# NMERO_ARCHIVO) Pg. 174

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

FrmCurso Mantenimiento de cursos 3-Fixed Dialog 2-CenterScreen

FraIngreso

FraNavegador Navegador

FraMantenimiento Mantenimiento

LblCodigo Cdigo:

LblNombre Nombre:

LblVacantes Vacantes:

LblProfesor Profesor:

Pg. 177

Text1 Nombre Locked Text TxtCodigo True

Text2 Nombre Locked Text TxtNombre True

Text3 Nombre Locked Text TxtVacantes True

Text4 Nombre Locked Text TxtProfesor True

Command1 Nombre Caption Picture Style C:\FundVB\Bitmaps\First.bmp 1-Graphical CmdPrimero

Command2 Nombre Caption Picture C:\FundVB\Bitmaps\Previous.bmp Pg. 178 CmdAnterior

Style

1-Graphical

Command3 Nombre Caption Picture Style C:\FundVB\Bitmaps\Next.bmp 1-Graphical CmdSiguiente

Command4 Nombre Caption Picture Style C:\FundVB\Bitmaps\Last.bmp 1-Graphical CmdUltimo

Command5 Nombre Caption Picture Style C:\FundVB\Bitmaps\New.bmp 1-Graphical CmdNuevo

Command6 Nombre Caption Picture Style C:\FundVB\Bitmaps\Edit.bmp 1-Graphical CmdEditar

Command7 Nombre Caption Picture C:\FundVB\Bitmaps\Save.bmp Pg. 179 CmdGuardar

Style Command8 Nombre Caption Picture Style Command9 Nombre Caption Picture Style

1-Graphical

CmdEliminar

C:\FundVB\Bitmaps\Delete.bmp 1-Graphical

CmdSalir &Salir C:\FundVB\Bitmaps\Exit.bmp 1-Graphical

Luego, proceda a transcribir el cdigo mostrado a continuacin:


Private Type CURSO ID_CURSO As String * 3 NOMBRE As String * 30 VACANTES As Integer PROFESOR As String * 25 ESTADO As Boolean End Type Dim N1 As Integer, POSICION As Integer Dim REG As CURSO Private Sub MODO_EDITAR(ByVal Ok As Boolean) TxtCodigo.Locked = Not Ok TxtNombre.Locked = Not Ok

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

ARCHIVOS DE ACCESO BINARIO

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.

Sentencia Put Pg. 186

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

quepan en una variable. Su sintaxis es de la forma:

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

comando (CmdCifrar). Luego, ingrese el siguiente cdigo:


Const CLAVE As Integer = 3 Private Sub CmdCifrar_Click() Dim N1 As Integer, I As Integer Dim CAR As String * 1 N1 = FreeFile() Open C:\DATA\DEMO.BIN For Binary As # N1 For I = 1 To Len(TxtMensaje) CAR = Chr((Asc(Mid(TxtMensaje, I, 1)) + CLAVE) Mod 256) Put # N1, , CAR Next Close # N1 End Sub

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&

VERDE = &H00FF00& ROJO = &H0000FF&

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:

Color Negro Azul Verde Cin Rojo Magenta Amarillo Blanco

nROJO 0 0 0 0 255 255 255 255

nVERDE 0 0 255 255 0 0 255 255

nAZUL 0 255 0 255 0 255 0 255

Pg. 191

El

ejemplo

anterior

(cdigo

hexadecimal)

utilizando

la

funcin RGB() ser similar a: AZUL = RGB(0, 0, 255)

VERDE = RGB(0, 255, 0) ROJO = RGB(255, 0, 0)

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:

Nmero 0 1 2 3 4 5 6 7 Negro Azul Verde Cin Rojo

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

Magenta Amarillo Blanco

Pg. 192

El

ejemplo

inicial

(cdigo

hexadecimal)

utilizando

la

funcin QBColor() se soluciona como se muestra a continuacin: AZUL = QBColor(1)

VERDE = QBColor(2) ROJO = QBColor(4)

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

es la ubicacin del punto sobre el

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

siguiente figura: Pg. 193

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

denominan eje del

colectivamente

escala.

Visual

Basic,

sistema de coordenadas puede tener su propia escala.

Todos los mtodos grficos utilizan el sistema de coordenadas


del contenedor. Por ejemplo, las instrucciones que dibujan dentro de un cuadro de imagen utilizan el sistema de

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

contenedor. Pg. 194

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

Twips Puntos Pixeles Caracteres Pulgadas Milmetros Centmetros

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,

ScaleWidth y ScaleHeight) la orden sera la siguiente: Scale (100, 100)-(200, 200)

Pg. 197

Donde coordenadas

es

evidente y las

que dos

las

diferencias Y

entre

las

dos los

coordenadas

determinan

valores de ScaleWidth y ScaleHeight, respectivamente.

MTODOS GRFICOS Visual Basic proporciona varios mtodos para la creacin de grficos. Los mtodos grficos, resumidos en la tabla

siguiente, son aplicables a los formularios y a los cuadros de imagen.

Mtodo Cls

Descripcin Borra todos los grficos y el resultado del mtodo Print.

Pset Point Line

Dibuja un punto individual. Devuelve el color de un punto especificado. Dibuja una lnea, un rectngulo o un cuadro relleno.

Circle PaintPicture Print

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.

Objeto Picture1 . . . Picture32 Picture33 Picture34

Nombre PicColor PicMuestra PicLienzo

Descripcin Opciones de color Color actual utilizado Area de dibujo

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

sobre el formulario, en este caso ser la bandera de mi pas: Per.

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:

Control Image (estudiado en el Captulo 4) Control Line Control Shape

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.

Propiedad BorderColor BorderStyle BorderWidth X1, Y1, X2, Y2

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

(X2, Y2) de la lnea.

Control Shape Shape es un control grfico que se muestra como un

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

Forma Rectngulo Cuadrado Elipse Crculo Rectngulo redondeado Cuadrado redondeado

Estilo 0 1 2 3 4 5

Constante vbShapeRectangle vbShapeSquare vbShapeOval vbShapeCircle vbShapeRoundedRectangle vbShapeRoundedSquare

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,

complicado, sino analice el siguiente ejemplo.

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

Grficas en coordenadas polares Pg. 212

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

del origen, y a un ngulo

respecto del

semieje horizontal positivo.

De la grfica se tiene que el punto P tiene coordenadas rectangulares

( x, y )

coordenadas

polares

(r , )

entonces

se

cumplen las siguientes relaciones de transformacin:


x = r cos

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

Espiral logartmica Astroide Nefroide Concoide

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

apariencia de la interfaz debe ser similar a la de la figura mostrada:

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

Fractales Pg. 216

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

ingresar el cdigo siguiente:


Function Hipotenusa(ByVal A As Double, ByVal B As Double) As Double Hipotenusa = Sqr(A * A + B * B) End Function Private Sub CmdVisualizar_Click() Dim MaxX As Integer, MaxY As Integer Dim Limite As Integer, Pasos As Integer Dim I As Integer, J As Integer Dim PasoX As Double, PasoY As Double Dim PosX As Double, PosY As Double Dim OrigX As Double, OrigY As Double Dim DimX As Double, DimY As Double Dim IterX As Double, IterY As Double, TempX As Double Dim Terminar As Boolean PicPlano.ScaleMode = 3 MaxX = PicPlano.ScaleWidth MaxY = PicPlano.ScaleHeight Limite = 16 OrigX = -2 OrigY = -1.25 DimX = 0.5 DimY = 1.25 PasoX = (DimX - OrigX) / MaxX

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

GUA DE LABORATORIO Parte I

ELABORADO POR

CARLOS CASTILLO PERALTA cc_peralta@hotmail.com

INTRODUCCIN Pg. 222

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

aprendizaje de Microsoft Visual Basic.

Lima, Diciembre del 2000

Carlos Castillo Peralta

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

desarrollo de Microsoft Visual Basic 6.0.

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:

FraSalida Salida de datos:

LblApellidosNombres True Apellidos y nombres:

LblHorasTrabajadas True Horas trabajadas:

LblPagoPorHora True Pago por hora S/.

LblSalarioBruto True Salario bruto S/.

LblDescuento True Descuento S/.

Label6 Nombre LblSalarioNeto Pg. 226

AutoSize Caption Text1 Nombre Text Text2 Nombre Text Text3 Nombre Text Text4 Nombre Text Text5 Nombre Text Text6 Nombre Text Command1 Nombre Caption

True Salario neto S/.

TxtApellidosNombres

TxtHorasTrabajadas

TxtPagoPorHora

TxtSalarioBruto

TxtDescuento

TxtSalarioNeto

CmdAceptar

&Aceptar

Command2 Nombre CmdLimpiar Pg. 227

Caption Command3 Nombre Caption

&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

En seguida proceda a ingresar el siguiente cdigo: Pg. 238

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

Luego de completar este laboratorio, el estudiante ser capaz de:

Implementar
selectivas.

aplicaciones

utilizando

estructuras

de

control

Usar

casillas

de

verificacin

botones

de

opcin

para

alternar entre uno o ms valores.

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

El diseo de la interfaz deber ser similar a la figura mostrada:

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

Label6 Nombre AutoSize Caption LblPromedio True Promedio:

Label7 Nombre AutoSize Caption LblPuntuacion True Puntuacin:

Text1 Nombre Text TxtAlumno

Text2 Nombre Text TxtN1

Text3 Nombre Text TxtN2

Text4 Nombre Text TxtN3

Text5 Nombre Text TxtN4

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

Luego de completar este laboratorio, el estudiante ser capaz de:

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

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: 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

Frame1 Nombre Caption FraEntrada

Frame2 Nombre Caption FraSalida

Frame3 Nombre Caption FraDivisores Divisores

Frame4 Nombre Caption FraSalir

Label1 Nombre AutoSize Caption LblNumero True Ingrese un nmero:

Label2 Nombre AutoSize Caption LblCantCifras True Cantidad de cifras:

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

LblSumPares True Suma de cifras pares:

LblSumTotal True Suma total de cifras:

LblCifraMayor True Cifra mayor:

LblCifraMenor True Cifra menor:

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

TxtDivisores True True 2-Vertical

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

Luego de completar este laboratorio, el estudiante ser capaz de:

Manipular y realizar operaciones con arreglos. Crear una estructura y realizar operaciones con los campos de
la misma.

Implementar arreglos de estructuras. Trabajar con listas desplegables y cuadros combinados.


Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab4 para guardar sus trabajos

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

El diseo de la interfaz debe ser similar a la siguiente figura:

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

Command2 Nombre Caption CmdTotal

&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

Label4 Nombre Caption LblSexo Sexo:

Label5 Nombre Caption LblDireccin Direccin:

Label6 Nombre Caption LblDistrito Distrito:

Combo1 Nombre Text CboSexo

List1 Nombre Text LstCursos

List2 Nombre Text LstDistrito

Text1 Nombre Text Text2 Nombre Text TxtFechaMat TxtCurso

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,

proceda a ingresar el cdigo que se indica a continuacin:

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

Luego de completar este laboratorio, el estudiante ser capaz de:

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

Luego indica: Form2 Nombre

proceda

establecer

las

propiedades

segn

se

FrmCurso 3-Fixed Dialog Cursos

BorderStyle Caption List1 Nombre Text Command1 Nombre Caption

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:

Formulario Form1 Form2 Form3 Form4 Form5 Form6 Form7 FrmNone

Nombre

FrmFixedSingle FrmSizable FrmFixedDialog FrmFixedToolWindow FrmSizableToolWindow FrmAcercaDe

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
-

&Acerca del autor &Salir

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

GUA DE LABORATORIO Parte II

ELABORADO POR

CARLOS CASTILLO PERALTA cc_peralta@hotmail.com

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

aprendizaje de Microsoft Visual Basic.

Lima, Diciembre del 2000

Carlos Castillo Peralta

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.

Ingresar un nombre para la base de datos, para nuestro caso


ingrese CursosLibres. En seguida se mostrar una ventana similar a la siguiente: Pg. 303

Proceda a crear una nueva tabla. Para ello seleccionar la


opcin Tablas y haga doble click en Crear una tabla en vista Diseo.

Introducir el nombre, el tipo y las propiedades para cada uno


de los campos. Para nuestro caso ingrese lo siguiente: Tabla Curso Nombre del Campo CurCodigo CurNombre CurVacantes CurProfe CurSilabo T T N T M debe 03 30 03 50 50 un
Cdigo del curso Nombre del curso Nmero de vacantes disponibles Nombre del profesor de teora Slabo de cada curso

Tipo

Ancho

Descripcin

Luego,

asignar

nombre

la

tabla

al

momento

de

cerrarla. Para nuestro caso asgnele el nombre de Curso.

Por ltimo, proceda a abrir la tabla e introducir datos. Para


nuestro caso, ingrese la siguiente informacin: Pg. 304

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

segn se indica a continuacin: Tabla Laboratorio Nombre del Campo LabCodigo T 03


Cdigo del curso

Tipo

Ancho

Descripcin

Pg. 305

LabHora LabProfe

T T

08 50

Horario de laboratorio Nombre del profesor de laboratorio

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

deber ser similar a la siguiente figura:

Pg. 307

Luego

haga y

click

con

el la

botn

derecho

del

ratn

en

CnCursosLibres

seleccione

opcin

Propiedades.

Deber

presentarse un cuadro de dilogo similar al siguiente:

En

la

ficha

Proveedor

del

cuadro

de

dilogo

anterior,

seleccione Microsoft Jet 4.0 OLE DB Provider y haga click en el

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.

Luego si la conexin es satisfactoria haga click en el botn

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

TxtCurNombre Pg. 311

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

Command4 Pg. 312

Nombre Caption Picture Style

CmdUltimo

C:\FundVB\Bitmaps\Last.bmp 1-Graphical

Command5 Nombre Caption Picture Style C:\FundVB\Bitmaps\New.bmp 1-Graphical CmdNuevo

Command6 Nombre Caption Picture Style C:\FundVB\Bitmaps\Edit.bmp 1-Graphical CmdEditar

Command7 Nombre Caption Picture Style C:\FundVB\Bitmaps\Save.bmp 1-Graphical CmdGuardar

Command8 Nombre Caption Picture Style C:\FundVB\Bitmaps\Delete.bmp 1-Graphical CmdEliminar

Command9 Nombre CmdSalir Pg. 313

Caption Picture Style

&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

Private Sub CmdNuevo_Click() DeCursosLibres.rsCmCurso.AddNew Pg. 314

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

grilla el contenido de la tabla Curso. El diseo de la interfaz se muestra a continuacin:

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.

click derecho sobre el comando y seleccione Propiedades:

Compruebe CnCursosLibres.

que Luego

este

comando la

utiliza opcin

la

conexin SQL

seleccione

Instruccin Pg. 317

(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

DataEnvironment debe presentar el siguiente aspecto:

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

Objetivos Luego de completar este laboratorio, el estudiante ser capaz de:

Utilizar el objeto ADO Connection para crear una conexin a


una base de datos.

Crear un objeto ADO Recordset para recuperar informacin de


una base de datos.

Utilizar el mtodo Execute de una conexin para actualizar la


informacin de una base de datos. Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab7, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 Elaborar una aplicacin que permita realizar el mantenimiento de la informacin contenida en la tabla Curso.

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

Label1 Nombre Caption LblCodigo Cdigo: Pg. 323

Label2 Nombre Caption LblNombre Nombre:

Label3 Nombre Caption LblVacantes Vacantes:

Label4 Nombre Caption LblProfesor Profesor:

Text1 Nombre Locked Text TxtCurCodigo True

Text2 Nombre Locked Text TxtCurNombre True

Text3 Nombre Locked Text TxtCurVacantes True

Text4 Nombre Locked TxtCurProfe True Pg. 324

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

Library, tal como se indica en la figura siguiente:

Luego

de

hacer

click

en

el

botn

Aceptar

estar

en

condiciones de utilizar los objetos ADO en su aplicacin.

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

Command1 Nombre Caption Default CmdBuscar

&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:

Text1 Nombre Text TxtCurCodigo

Text2 Nombre Text TxtCurNombre

Text3 Nombre Text TxtCurVacantes

Text4 Nombre Text TxtCurProfe

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

Caption Label3 Nombre Caption Label4 Nombre Caption

Nombre:

LblVacantes Vacantes:

LblProfesor Profesor:

Text1 Nombre Text TxtCurCodigo

Text2 Nombre Text TxtCurNombre

Text3 Nombre Text TxtCurVacantes

Text4 Nombre Text TxtCurProfe

Command1 Nombre Caption Command2 Nombre CmdEliminar Pg. 342 CmdAceptar

&Aceptar

Caption Command3 Nombre Caption Command4 Nombre Caption

&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:

Usar el diseador de reportes DataReport. Utilizar


impresos. Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab8, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 Disear un reporte que muestre la informacin almacenada en la tabla Cursos. El formato del reporte pedido se muestra a continuacin: y controlar la impresora para obtener reportes

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)

Font Etiqueta6 Nombre Caption Font

Arial (Negrita 10)

RptLblProfesor Profesor: Arial (Negrita 10)

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

Luego, formulario: 1 marco

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

Form1 Nombre Caption BorderStyle FrmReporteCursosLibres Cursos Libres 3-Fixed Dialog

Frame1 Nombre Caption FraTablas

Option1 Nombre Caption Value OptTablaAlumno Alumno True

Option2 Nombre Caption Value OptTablaCurso Curso False

Option3 Nombre Caption Value OptTablaLaboratorio Laboratorio False

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

GUA DE LABORATORIO Parte III

ELABORADO POR

CARLOS CASTILLO PERALTA cc_peralta@hotmail.com

INTRODUCCIN Pg. 356

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

aprendizaje de Microsoft Visual Basic.

Lima, Diciembre del 2000

Carlos Castillo Peralta

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

Disear y utilizar controles ActiveX personalizados.


Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab9, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 Implementar una clase denominada Circulo, la cual debe contar con las propiedades pblicas Radio y Area. Para tal fin seleccione la opcin Agregar mdulo de clase del Men Proyecto:

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

La ventana de cdigo de la clase debe presentar la siguiente apariencia:

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:

proceda a ingrese el siguiente cdigo para el formulario de

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

similar a la siguiente figura:

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

Nombre Caption BorderStyle

FrmPruebaMiControl Prueba de Control ActiveX 3-Fixed Dialog

La ventana del Explorador de proyectos debe presentar la siguiente apariencia:

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 seguida, guarde y ejecute su aplicacin. El resultado debe ser similar al siguiente:

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

Sin embargo, forma que nos

debemos modificar nuestro control, de tal permita cambiar el color de texto de

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

Ahora del botn

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,

detenidamente el control. Para componente aada al

contenido

click

Cerrar. A continuacin guarde su aplicacin y genere nuevamente

probar y Microsoft formulario Cambie

el aada Common un el

control al Dialog nombre

abra de Control un del

el 6.0.

formulario el un por En seguida y

FrmPruebaMiControl

Cuadro

herramientas

MiControl,

CommonDialog botn Command1

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

Luego de completar este laboratorio, el estudiante ser capaz de:

Crear documentos ActiveX que se ejecuten directamente en una


pgina Web.

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

A continuacin proceda a disear la siguiente interfaz de usuario:

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&

DataGrid1 Pg. 376

Nombre Font HeadFont Command1 Nombre Caption

BdgrdTabla Arial (Negrita 10) Arial (Negrita 10)

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

apreciar desarrollar documentos ActiveX no es nada complicado.

Pg. 380

ingrese en el cuadro de texto adjunto. El diseo del documento se muestra a continuacin:

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

Objetivos Luego de completar este laboratorio, el estudiante ser capaz de:

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

Agregar funcionalidad a sus aplicaciones para explorar Web.


Consideraciones Para el desarrollo del presente laboratorio Ud. deber crear una carpeta C:\FundVB\Lab11, para guardar sus trabajos correspondientes a este laboratorio. Aplicacin N 1 En DHTML este que ejercicio, un vamos a desarrollar y muestre una su aplicacin tabla de lea nmero entero

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

Al observar la ventana del Explorador de proyectos, esta presentar la siguiente apariencia:

Visual DHTMLPage1 indican: DHTMLPage1 Nombre Id y

Basic

agrega a

automticamente establecer las

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

resultado debe ser similar a la figura siguiente:

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

TextField1 Nombre Id Value TxtCurCodigo TxtCurCodigo

TextField2 Nombre Id Value TxtCurNombre TxtCurNombre

TextField3 Nombre Id Value TxtCurVacantes TxtCurVacantes

TextField4 Nombre Id Value TxtCurProfe TxtCurProfe

Button1 Nombre Id Value CmdPrimero CmdPrimero Primero

Pg. 390

Button2 Nombre Id Value CmdAnterior CmdAnterior Anterior

Button3 Nombre Id Value CmdSiguiente CmdSiguiente Siguiente

Button4 Nombre Id Value CmdUltimo CmdUltimo Ultimo

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

Seleccion1 Nombre Id Value SelProfe SelProfe

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

informacin relacionada con cada profesor.

Pg. 396

Microsoft
GUA DE LABORATORIO N 12 Objetivos

Visual Basic

Luego de completar este laboratorio, el estudiante ser capaz de:

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

mciExecute para lograr el objetivo deseado.

Como por

se

sabe, utiliza

el una

lenguaje letra la

diferencia en

las

letras de una ser

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.

Utilizar el motor de ayuda WinHelp.


En vista de lo anterior, lo primero que necesitamos para crear nuestro sistema de ayuda, es un archivo con formato RTF donde se incluir el texto de la ayuda. Para ello ingrese a Microsoft Word 2000 y digite lo siguiente:

Microsoft Visual Basic 6.0


Curso de programacin
Profesor Carlos Castillo Peralta

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

Microsoft Visual Basic 6.0


Curso de programacin
Profesor Carlos Castillo Peralta

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:

Microsoft Visual Basic 6.0


Curso de programacin
Profesor Carlos Castillo Peralta

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:

Microsoft Visual Basic 6.0


Curso de programacin
Profesor Carlos Castillo Peralta

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

identificador darle el atributo de oculto. Pg. 406

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

Seleccione continuacin siguiente: se

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

presentar la siguiente pantalla:

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.

A continuacin se presentar una pantalla similar a la figura mostrada:

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

ventana de ayuda, para ello haga click en el botn Auto-Sizer.

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

similar a la figura mostrada:

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

Asistente se visualizar una ventana similar a la siguiente

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

You might also like