Sie sind auf Seite 1von 127

PROGRAMACIN EN VISUAL BASIC

por

Javier de Jess Corts Bracho

INDICE CAPITULO 1 INICIE LA PROGRAMACION EN VISUAL BASIC INTRODUCCIN CAJAS DE TEXTO,BOTONES COMANDO Y ETIQUETAS CAPITULO 2 BARRAS DE DESPLAZAMIENTO INTRODUCCIN BARRAS DE DESPLAZAMIENTO COMO CONTROLES DE ENTRADA BARRAS DE DESPLAZAMIENTO EN CAJAS DE TEXTO CAPITULO 3 CAJAS DE DIALOGO INTRODUCCIN CAJAS DE MENSAJE CAJAS DE ENTRADA CAPITULO 4 ACTIVAR O DESACTIVAR OPCIONES INTRODUCCIN CASILLAS DE VERIFICACION BOTONES DE OPCION CAPITULO 5 LISTAS FIJAS Y LISTAS DESPLEGABLES INTRODUCCIN

Autor: DR. JAVIER DE J. CORTES BRACHO

CAPITULO 6 LECTURA DE UNA SERIE DE DATOS INTRODUCCION CAPITULO 7 PROCEDIMIENTOS Y FUNCIONES INTRODUCCION CAPITULO 8 ARCHIVOS DE DATOS INTRODUCCION ARCHIVO SECUENCIAL ARCHIVO ALEATORIO CAPITULO 9 GRAFICAS INTRODUCCION CAPITULO 10 RESULTADOS IMPRESOS INTRODUCCION CAPITULO 11 CAMBIO DE FUENTES Y CREACION DE CONTROLES DURANTE LA EJECUCION INTRODUCCION CAPITULO 12 ANIMACION INTRODUCCION

Autor: DR. JAVIER DE J. CORTES BRACHO

INICIE LA PROGRAMACION EN VISUAL BASIC INTRODUCCION Visual Basic, es un lenguaje de programacin de alto nivel en ambiente Windows, que permite realizar diseos grficos en dos tipos de objetos: Ventanas y Controles. La ventana llamada de aqu en adelante Forma (Form), sirve de fondo para los controles y para los grficos situados sobre ella. Se pueden realizar tantas formas como se necesiten y dependiendo de la utilidad que se les d, estas sern de diferentes tipos. As, se puede crear una forma que contenga un grfico, para visualizar informacin o para aceptar datos. Los controles son objetos que se dibujan sobre una forma con el fin de aceptar o visualizar datos, estos controles pueden ser: Cajas de texto, botones de ordenes, listas desplegables, etiquetas, etc.; los que son dibujados utilizando la caja de herramientas (Tool Box) de Visual Basic. Es decir, para realizar una aplicacin llamada Proyecto en Visual Basic, primero se abre una forma, sobre ella se dibujan los controles y a continuacin se escribe el cdigo fuente relacionado con cada uno de ellos, cdigo que permanece inactivo hasta que se d el suceso que lo activa. Por ejemplo, se puede programar un botn de ordenes para que responda a un clic del ratn. Por otro lado, cada objeto (Forma y Controles) lleva asociado un conjunto de Propiedades (Properties) tales como: Titulo (Caption), Nombre (Name), Texto (Text), etc. Para especificar

CAPITULO 1 las propiedades de cada uno de ellos, se utiliza la ventana de propiedades que aparece al seleccionar el objeto (Forma o Control), haciendo clic sobre el y posteriormente presionando la tecla F4. Lo invitamos a adentrarse en esta nueva generacin de programacin con entorno grfico a travs de los ejercicios que a continuacin se proponen. CAJAS DE ETIQUETAS TEXTO, BOTONES COMANDO Y

Por medio de una serie de programas sencillos se mostrar el uso de las Cajas de Texto (TextBox), los Botones Comando (Command Botton) y las Etiquetas (Label), la asignacin de propiedades a estos controles, los sucesos que indican como ser ejecutado un procedimiento, la manera de guardar en disco los programas, adems de la declaracin y uso de variables Variant, funcin Str$ y Format$ y la expresin SetFocus.

Autor: DR. JAVIER DE J. CORTES BRACHO

PROGRAMA 1: Como Iniciar. Al abrir Visual Basic aparecer en pantalla una Forma (Form1),

Haga un clic nuevamente en la Forma, y ahora utilizando la caja de herramientas (ToolBox) dibuje sobre la Forma los siguientes controles: Una Caja de Texto (TextBox), y tres Botones Comando haga clic sobre ella y posteriormente presione F4 para visualizar la ventana de propiedades (Properties), seleccione Titulo (Caption) y escriba Como Iniciar. Esto ser el titulo de su Forma. (Command Botton)

Asigne las propiedades a cada uno de ellos (al igual que se realiz para la Forma) de acuerdo a el siguiente cuadro, si lo

Autor: DR. JAVIER DE J. CORTES BRACHO

desea puede aadir color a su forma y controles mediante la misma ventana de propiedades. PROPIEDADES CAPTION Como Iniciar Haga clic aqu ? Salir NAME Mensaje Command 1 Command 2 Command 3 TEXT Ninguno

CODIFICACION Haga doble clic sobre el primer botn comando aparecer una ventana de cdigo con el siguiente mensaje:
Sub Command1_Click ()

FORMA CAJA DE TEXTO 1 BOTON 1 BOTON 2 BOTON 3

Escriba lo siguiente:
'Abrir cajas de texto, botones y asignacin de propiedades Mensaje.Text = "Bienvenido a VISUAL BASIC" End Sub

La Forma tendr la siguiente presentacin:

De esta manera ha programado usted el primer botn que responder a un clic del ratn. Programe ahora los dos botones restantes anotando en cada uno de ellos la siguiente codificacin:
Sub Command2_Click () Mensaje.Text = "Estas contento?" End Sub Sub Command3_Click () End End Sub

Corra el programa haciendo clic en o presione F5, Observe lo que pasa al hacer clic en los botones comando.

Autor: DR. JAVIER DE J. CORTES BRACHO

Para hacer una pausa en la ejecucin del programa haga clic en

y para detener la ejecucin de la aplicacin haga clic en COMENTARIOS Observe que se puede modificar el tamao de los controles, cambiar el color del fondo (BackColor), color del texto (ForeColor) y tipo de letra (Font) todo esto con la finalidad de que realice una presentacin atractiva y elegante sin que con ello pierda la efectividad del programa. Para borrar un control basta con seleccionarlo (dar un clic sobre el) y oprimir la tecla Del o Suprimir. Observe tambin que en la ventana para la codificacin aparece cada procedimiento conducido por un suceso. Es decir, por ejemplo en la codificacin del primer botn, el procedimiento Command1_Click (), conducido por el suceso Click, el cual indica que este procedimiento ser ejecutado cuando el usuario haga clic en dicho botn, de esta forma, la ventana de cdigo indica que clase de suceso tiene que ocurrir para que se ejecute el cdigo. Dentro de la codificacin cuando una frase va precedida de una comilla simple ( ), Visual Basic interpreta que esta frase es un comentario y no ejecuta ninguna accin sobre ella. Ha creado usted su primer proyecto, ahora gurdela en disco, se recomienda guardar en el disco duro y posteriormente copiar a su disco flopy si as lo desea, tenga el cuidado al grabar de guardar tanto la Forma como el Proyecto, es decir, en el men de Archivo seleccionar Save File As, que guarda en disco la Forma con un nombre dado por el usuario asignndole Visual Basic la extensin .Frm, en seguida guarde el Proyecto con la orden Save Project As, con un nombre dado por el usuario y Visual Basic asigna la extensin .Mak, a manera de ejemplo guarde esta aplicacin como Prog1.Frm para la Forma y Prog1.Mak para el proyecto. En esta aplicacin usted utiliz: Cajas de Texto, que es un rea dentro de la Forma en la que el usuario puede escribir o visualizar texto y Botones Comando o Botones de Pulsacin

Autor: DR. JAVIER DE J. CORTES BRACHO

que tienen asociada una orden. Esta orden se ejecutar cuando el usuario haga clic sobre el Botn. PROGRAMA 2: Multiplica dos Nmeros. Para crear un programa diferente, abra un Proyecto nuevo (New Project) en el men de Archivo. Aparecer una Forma, en la cual deber dibujar los controles y asignar las propiedades que se enlistan a continuacin: PROPIEDADES CAPTION Multiplica dos nmeros Nmero 1 Nmero 2 El resultado es NAME TEXT

Sub Text3_Click () 'Abrir etiquetas, uso de variables variant y asignacin de valores Dim X1, X2, Y As Variant X1 = Val(text1.Text) X2 = Val(text2.Text) Y = X1 * X2 Text3.Text = Str$(Y) End Sub

La Forma tiene el siguiente esquema:

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3 CODIFICACION

Label 1 Label 2 Label 3 Text 1 Ninguno Text 2 Text 3 Ninguno Ninguno Al correr el programa, el cursor aparecer en la Caja de Texto 1 esperando un valor, teclee cualquier valor, luego haga clic en la Caja de Texto 2 para dar un segundo valor, al hacer clic en la Caja de Texto 3, el programa realizar la multiplicacin de los

Haga doble clic en la Caja de Texto 3 y escriba el siguiente cdigo.

Autor: DR. JAVIER DE J. CORTES BRACHO

dos nmeros dados por el usuario, y mostrar el resultado en la Caja de Texto 3. COMENTARIOS En este programa se ha incluido el control Etiqueta (Label)

PROGRAMA 3: Multiplica dos Nmeros. En un proyecto nuevo dibuje y asigne las siguientes propiedades a los controles que se indican, note que se ha dado un nombre a las Cajas de Texto. PROPIEDADES

que se utiliza para dar instrucciones al usuario y consiste en un texto de una o ms lneas, que no pueden ser modificadas por el usuario. Adems observe que la codificacin puede realizarse asociada a una Caja de Texto. Por otro lado se han usado los siguientes conceptos: La sentencia Dim declara el tipo de variable a utilizar, en este caso, Variable Variant, que permite almacenara datos enteros, reales, cadenas de caracteres, o datos relativos a la fecha y a la hora, lo que la define como un tipo genrico. La funcin Val convierte una cadena de caracteres en un nmero y la funcin Str$ convierte un nmero en una cadena de caracteres. La funcin Format$ realiza la misma operacin que Str$ y adems da formato a la salida, de acuerdo con un patrn especificado. Guarde esta aplicacin, recuerde guardar Forma y Proyecto. Ejemplo, Prog2.Frm para la Forma y Prog2.Mak para el Proyecto.

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3 CODIFICACION

CAPTION Multiplica dos nmeros Nmero 1 Nmero 2 El resultado es

NAME

TEXT

Label 1 Label 2 Label 3 Num 1 Num 2

Ninguno Ninguno

Resultad Ninguno o

Al dar doble clic en la Caja de Texto 3 escriba la siguiente codificacin:


Sub Resultado_Click () 'Asignacin de nombres a las cajas de texto Dim X1, X2, Y As Variant X1 = Val(Num1.Text) X2 = Val(Num2.Text)

Autor: DR. JAVIER DE J. CORTES BRACHO

Y = X1 * X2 Resultado.Text = Format$(Y) End Sub Sub text3_click () End Sub

TEXTO 2 CAJA DE TEXTO 3 CODIFICACION

Resultado

Ninguno

COMENTARIOS Programa similar al anterior cuya nica diferencia es la asignacin de nombres a las Cajas de Texto. PROGRAMA 4: Multiplica dos Nmeros. Hasta ahora los programas anteriores han mostrado cambiar la posicin del cursor con el clic del ratn y en algunas ocasiones es necesario cambiar esta posicin con la tecla ENTER, este es el propsito del presente programa: PROPIEDADES CAPTION Multiplica dos nmeros Nmero 1 Nmero 2 El resultado es NAME TEXT

De doble clic en la Caja de Texto 1 para escribir la siguiente codificacin en KeyPress.


Sub Num1_KeyPress (KeyAscii As Integer) If KeyAscii = 13 Then Num2.SetFocus End If End Sub

Ahora doble clic en la Caja de Texto 2 y codifique:


Sub Num2_KeyPress (KeyAscii As Integer) If KeyAscii = 13 Then Resultado.SetFocus End If End Sub

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 CAJA DE TEXTO 1 CAJA DE

y en la Caja de Texto 3
Sub Resultado_KeyPress (KeyAscii As Integer) 'Uso del procedimiento KeyPress Dim X1, X2, Y As Variant X1 = Val(Num1.Text) X2 = Val(Num2.Text) Y = X1 * X2 Resultado.Text = Format$(Y)

Label 1 Label 2 Label 3 Num 1 Num 2

Ninguno Ninguno

Autor: DR. JAVIER DE J. CORTES BRACHO

10

End Sub Sub text3_click () End Sub

ETIQUETA 2 ETIQUETA 3 BOTON CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3 CODIFICACION

Nmero 2 El resultado es Continuar

COMENTARIOS Observe ahora el procedimiento KeyPress, el cual es un suceso que se genera solamente cuando se introduce un caracter ASCII. Esta definicin excluye teclas especiales, como teclas de funcin (F1 a F12), teclas de movimiento del cursor (, , y ) o la tecla DEL o SUPRIMIR. El suceso KeyPress utiliza el argumento KeyAscii, el cual contiene el valor ASCII del caracter imprimible. El ASCII = 13 pertenece a la tecla ENTER. Adems note la expresin SetFocus que permite enfocar el objeto especificado. Despus de enfocar un objeto, cualquier entrada del usuario ir dirigida a ese objeto. Corra el programa y compare su ejecucin con los programas anteriores. PROGRAMA 5: Multiplica dos Nmeros. Realice el presente programa que es similar al anterior, con la diferencia de codificacin en un botn comando. PROPIEDADES CAPTION Multiplica dos nmeros Nmero 1 NAME TEXT

Label 2 Label 3 Command 1 Num 1 Num 2 Resultado

Ninguno Ninguno Ninguno

Sub Command1_Click () 'Uso del botn comando Dim X1, X2, Y As Variant X1 = Val(Num1.Text) X2 = Val(Num2.Text) Y = X1 * X2 Resultado.Text = Format$(Y) End Sub Sub Num1_KeyPress (keyascii As Integer) If keyascii = 13 Then Num2.SetFocus End If End Sub Sub Num2_KeyPress (keyascii As Integer) If keyascii = 13 Then Command1.SetFocus End If

FORMA ETIQUETA 1

Label 1

Autor: DR. JAVIER DE J. CORTES BRACHO

11

End Sub Sub text3_click () End Sub

CODIFICACION Haga doble clic en la Forma, seleccione General en el Objeto de la Ventana de Cdigo y anote lo siguiente:
'Declaracin de variables Dim X As Variant Dim Y As Variant Dim lapsus As Variant

COMENTARIOS Note al correr el programa el enfoque (SetFocus) sobre la Caja de Text 2 y sobre el botn comando. PROGRAMA 6: Cronmetro. El objetivo del presente programa es reafirmar el uso de las variables Variant, realizando operaciones con horas, minutos y segundos. PROPIEDADES CAPTION NAME Cronmetro Inicio Command 1 Final Command 2 Tiempo Label 1 transcurrido hi hf hl TEXT

Ahora codifique en el botn comando 1 lo siguiente.


Sub Command1_Click () 'Formato de horas X = Now hi.Text = Format(X, " hh:mm:ss") hf.Text = "" hl.Text = "" End Sub

FORMA BOTON 1 BOTON 2 ETIQUETA 1 CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3

y en el botn comando 2.
Sub Command2_Click () Y = Now lapsus = Y - X hf.Text = Format(Y, " hh:mm:ss") hl.Text = Format(lapsus, " hh:mm:ss") End Sub

Ninguno Ninguno Ninguno

Autor: DR. JAVIER DE J. CORTES BRACHO

12

COMENTARIOS Observe en la codificacin el formato que deben tener las horas, minutos y segundos, y su asignacin a una variable, en este caso usando la funcin Now que considera la fecha y la hora actual. Recuerde que las Variables Variant permiten hacer operaciones con este tipo de datos, donde Visual Basic ejecuta automticamente las conversiones necesarias. Otro aspecto importante en este programa es la declaracin de variables en General, que es un objeto aadido por Visual Basic y que en su ventana de cdigo se definirn las variables y constantes comunes a todos los procedimientos del programa en la forma. PROGRAMA 7: Distancia entre dos puntos. En el presente programa, aparte de la aplicacin de los conceptos vistos anteriormente, se muestra que en la Forma tambin puede haber codificacin. PROPIEDADES CAPTION Distancia entre dos puntos X1 X2 Y1 Y2 NAME TEXT

ETIQUETA 5 ETIQUETA 6 ETIQUETA 7 CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3 CAJA DE TEXTO 4 CAJA DE TEXTO 5 CAJA DE TEXTO 6 CAJA DE TEXTO 7 BOTON

Distancia entre puntos Label 4 Punto 1 Label 5 Punto 2 Label 6 Text 1 Text 2 Text 3 Text 4 Text 5 hi fecha encontrar distancia Command 1

Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno Ninguno

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 ETIQUETA 4

Label X1 Label 1 Label 2 Label 3

Autor: DR. JAVIER DE J. CORTES BRACHO

13

CODIFICACION En General codificar:


Dim x, y, lapsus As Variant

Sub Text2_KeyPress (keyascii As Integer) If keyascii = 13 Then text3.SetFocus End If End Sub Sub Text3_KeyPress (keyascii As Integer) If keyascii = 13 Then text4.SetFocus End If End Sub Sub Text4_KeyPress (keyascii As Integer) If keyascii = 13 Then command1.SetFocus End If End Sub

Codificar en el botn comando 1 lo siguiente para el calculo de la distancia.


Sub Command1_Click () Dim x1, x2, y1, y2, d As Variant x1 = Val(text1.Text) x2 = Val(text2.Text) y1 = Val(text3.Text) y2 = Val(text4.Text) d = Sqr((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) text5.Text = Str$(d) End Sub

Codificar en la Forma:
Sub Form_Load () 'Formato de hora y fecha x = Now y = Date hi.Text = Format(x, " hh:mm:ss AM/PM") fecha.Text = Format(y, " dddd dd-mmm -yyyy") End Sub Sub Text1_KeyPress (keyascii As Integer) If keyascii = 13 Then text2.SetFocus End If End Sub

COMENTARIOS Observe al correr el programa que aparecer en la Forma la fecha y la hora actual, vea su formato en la codificacin.

Autor: DR. JAVIER DE J. CORTES BRACHO

14

PROGRAMA 8:Conversin de temperaturas. Analice en este programa el uso de Etiquetas, Cajas de Texto y codificacin en Botn Comando. PROPIEDADES CAPTION Conversin de temperaturas GRADOS CENTIGRADOS GRADOS FAHRENHEIT GRADOS KELVIN Centgrados a Fahrenheit Fahrenheit a Centgrados Centgrados a Kelvin Kelvin a Centgrados NAME

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 BOTON 1 BOTON 2 BOTON 3 BOTON 4 CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3

Label 1 Label 2 Label 3 Command 1 Command 2 Command 3 Command 4 Text 1 Text 2 Text 3 CODIFICACION
Sub Command1_Click () 'Uso de etiquetas, cajas de texto, botones y variables variant Dim F As Variant F = Val(TEXT1.Text) * 9 / 5 + 32 TEXT2.Text = Format$(F) End Sub Sub Command2_Click () Dim C As Variant C = (Val(TEXT2.Text) - 32) * 5 / 9 TEXT1.Text = Format$(C) End Sub Sub Command3_Click () Dim K As Variant

Autor: DR. JAVIER DE J. CORTES BRACHO

15

K = Val(TEXT1.Text) + 273 TEXT3.Text = Format$(K) End Sub Sub Command4_Click () Dim C As Variant C = Val(TEXT3.Text) - 273 TEXT1.Text = Format$(C) End Sub

TEXT2.Text = Format$(F) End Sub Sub Command2_Click () Dim C As Variant C = (Val(TEXT2.Text) - 32) * 5 / 9 TEXT1.Text = Format$(C) End Sub Sub Text1_KeyPress (keyascii As Integer)

PROGRAMA 9: Grados Centgrados a Fahrenheit. Ahora en este programa vea la codificacin en Cajas de Texto. PROPIEDADES CAPTION FORMA Grados Centgrados a Fahrenheit ETIQUETA 1 GRADOS CENTIGRADOS ETIQUETA 2 GRADOS FAHRENHEIT CAJA DE TEXTO 1 CAJA DE TEXTO 2 CODIFICACION
Sub Command1_Click () Dim F As Variant F = Val(TEXT1.Text) * 9 / 5 + 32

NAME

'Uso de etiquetas y codificacin en cajas de texto Dim F As Variant If keyascii = 13 Then F = Val(TEXT1.Text) * 9 / 5 + 32 TEXT2.Text = Format$(F) End If End Sub Sub Text2_KeyPress (keyascii As Integer) Dim C As Variant If keyascii = 13 Then C = (Val(TEXT2.Text) - 32) * 5 / 9 TEXT1.Text = Format$(C) End If End Sub

Label 1 Label 2 Text 1 Text 2

Autor: DR. JAVIER DE J. CORTES BRACHO

16

PROGRAMA 10: Grados Centgrados a Fahrenheit. Aqu observe la modalidad de codificacin de la tecla ENTER y operacin en el comando Format$. PROPIEDADES CAPTION FORMA Grados Centgrados a Fahrenheit ETIQUETA 1 GRADOS CENTIGRADOS ETIQUETA 2 GRADOS FAHRENHEIT BOTON 1 +1 BOTON 2 -1 BOTON 3 -1 BOTON 4 +1 CAJA DE TEXTO 1 CAJA DE TEXTO 2 CODIFICACION
Sub COMMAND1_ () End Sub Sub Command1_Click () ' Operaciones en el comando Format$ y codificacin de tecla "Enter" TEXT1.Text = Format$(Val(TEXT1.Text) + 1) TEXT1_KEYPRESS (13)

End Sub Sub Command2_Click () TEXT1.Text = Format$(Val(TEXT1.Text) - 1) TEXT1_KEYPRESS (13) End Sub Sub Command3_Click () TEXT2.Text = Format$(Val(TEXT2.Text) - 1) TEXT2_KEYPRESS (13) End Sub Sub Command5_Click () TEXT2.Text = Format$(Val(TEXT2.Text) + 1) TEXT2_KEYPRESS (13) End Sub Sub TEXT1_KEYPRESS (keyascii As Integer) 'Codificacin de tecla "Enter" Dim F As Variant If keyascii = 13 Then F = Val(TEXT1.Text) * 9 / 5 + 32 TEXT2.Text = Format$(F) End If End Sub Sub TEXT2_KEYPRESS (keyascii As Integer) Dim C As Variant If keyascii = 13 Then C = (Val(TEXT2.Text) - 32) * 5 / 9 TEXT1.Text = Format$(C) End If End Sub

NAME

Label 1 Label 2 Command 1 Command 2 Command 3 Command 5 Text 1 Text 2

Autor: DR. JAVIER DE J. CORTES BRACHO

17

CAPITULO 2 BARRAS DE DESPLAZAMIENTO INTRODUCCION Las Barras de Desplazamiento (ScrollBars) son a menudo utilizadas en Cajas de Texto y ventanas para desplazar la informacin hacia abajo, arriba, izquierda o derecha de la ventana, pero tambin pueden utilizarse como controles de entrada. En el presente captulo se usarn ambos aspectos, en primer lugar como usar la Barra de Desplazamiento como un control, es decir, permitir seleccionar un valor dentro de un rango de valores enteros. Estos controles pueden ser horizontales o verticales y son utilizados independientemente de otros objetos, y en segundo trmino como usar las Barras de Desplazamiento dentro de Cajas de Texto con la propiedad Multiline, que permiten escribir en la caja varias lneas de texto. PROPIEDADES PROPIEDADES FORMA Caption = Proyecto Barra Desplazamiento ETIQUETA BorderStyle = 1 Fixed Single FontSize = 12 Name = Label 1 BARRA DE LargeChange = 10 DESPLAZAMIENTO Max = 100 Min = 0 SmallChange = 2 Name = HScroll 1 El resultado ser:

de

BARRAS DE DESPLAZAMIENTO COMO CONTROLES DE ENTRADA PROGRAMA Desplazamiento. 11: Proyecto Barra de

En una Forma dibuje como controles una etiqueta y una Barra de Desplazamiento Horizontal siguientes propiedades: asgnele las

Autor: DR. JAVIER DE J. CORTES BRACHO

18

Ahora codifique en la Barra de Desplazamiento Horizontal lo siguiente: CODIFICACION


Sub HScroll1_Change () 'Etiqueta y Barra de Desplazamiento LABEL1.Caption = Str$(HSCROLL1.Value) End Sub

PROPIEDADES PROPIEDADES Caption = Proyecto Barra 2 Caption = Caracter Name = Label 1 Caption = Cdigo ANSI Name = Label 2 Name = Text 1 Name = Text 2 LargeChange = 20 Max = 255 Min = 0 SmallChange = 1 Name = HScroll 1

FORMA ETIQUETA1 ETIQUETA2 CAJA DE TEXTO 1 CAJA DE TEXTO 2 BARRA DE DESPLAZAMIENTO

COMENTARIOS Observe al correr el programa que en cada clic que se haga en las flechas de los extremos de la Barra de Desplazamiento, el movimiento del cursor y el cambio de valor es de dos en dos (SmallChange = 2 de las propiedades) empezando en cero (Min = 0) y hasta 100 (Max = 100), si da un clic a un lado del cursor de la Barra el valor cambia en 10 (LargeChange = 10). Note tambin que los valores aparecen en la etiqueta, esto es posible dado que en cada clic sobre la Barra, se cambia el Caption de la Etiqueta de acuerdo a el valor de la posicin del cursor en la Barra, el cual viene dado por la propiedad Value. PROGRAMA 12: Proyecto Barra 2. En programacin un aspecto siempre til, es conocer la relacin entre un caracter y su cdigo ANSI. Mediante una Barra de Desplazamiento Horizontal es posible realizar esto. Asigne las siguientes propiedades a los controles que se indican y codifique en la barra de desplazamiento

Autor: DR. JAVIER DE J. CORTES BRACHO

19

CODIFICACION
Sub HScroll1_Change () 'Obtencin del cdigo ANSI text1.Text = " " + Format$(hscroll1.Value) text2.Text = " " + Chr$(hscroll1.Value) End Sub

PROPIEDADES PROPIEDADES Caption = Proyecto Barra 3 Caption = Rojo Name = Label 1 Caption = Verde Name = Label 2 Caption = Azul Name = Label 3 Name = Text 1 DE LargeChange = 35 Max = 255 Min = 0 SmallChange = 5 Name = HScroll 1 DE LargeChange = 35 Max = 255 Min = 0 SmallChange = 5 Name = HScroll 2 DE LargeChange = 35 Max = 255 Min = 0 SmallChange = 5 Name = HScroll 3

FORMA ETIQUETA1 ETIQUETA2 ETIQUETA3 CAJA DE TEXTO 1 BARRA DESPLAZAMIENTO 1

COMENTARIOS El rango de valores de los caracteres es de 0 a 255 con cambio de uno en uno (SmallChange = 1) al hacer clic en las flechas de los extremos de la barra y con cambio de 20 (LargeChange = 20) al hacer clic en los lados del cursor. Observe que los valores son asignados a Cajas de Texto, note que en la Caja de Texto 2 se ha utilizado la funcin Chr$ que convierte el valor numrico de la posicin del cursor en la barra a su correspondiente caracter ANSI. (En MS-DOS, fuera del entorno Windows se utiliza el juego de caracteres ASCII, mientras que Windows utiliza el juego de caracteres ANSI, por ejemplo el caracter 181 en ANSI corresponde a en tanto el caracter 230 en ASCII es el que corresponde a ) PROGRAMA 13: Proyecto Barra 3. Realice con este programa su propia creacin de combinacin de colores, utilice tres Barras de Desplazamiento.

BARRA DESPLAZAMIENTO 2

BARRA DESPLAZAMIENTO 3

Autor: DR. JAVIER DE J. CORTES BRACHO

20

COMENTARIOS En el presente programa, se ha usado la funcin RGB que permite especificar un color cualquiera, tiene tres parmetros enteros (en este caso definidos por cada valor de cada barra de desplazamiento) en el rango de 0 a 255 que definen el nivel de color rojo, verde y azul, respectivamente. Esta funcin retoma un entero de cuatro bytes (entero largo) que representa el color RGB especificado. Este valor expresado en hexadecimal de una forma genrica es del tipo &H00AAVVRR. El byte ms significativo es cero y los tres bytes siguientes especifican el nivel de color Azul, Verde y Rojo, respectivamente. BARRAS DE DESPLAZAMIENTO EN CAJAS DE TEXTO Como se mencion al inicio del presente captulo, las Barras de Desplazamiento son comunes en las Cajas de Texto que tienen la propiedad Multiline activada (True), sin embargo, antes de aplicarlas se ver en el siguiente programa el uso del procedimiento Resize. PROGRAMA 14: Ajuste de tamao de Caja de Texto PROPIEDADES PROPIEDADES Caption = Ajuste de tamao de Caja de

CODIFICACION
Sub HScroll1_Change () 'Obtencin de colores, uso de la funcin RGB TEXT1.BackColor = RGB(HSCROLL1.Value, HSCROLL2.Value,HSCROLL3.Value) End Sub Sub HScroll2_Change () TEXT1.BackColor = RGB(HSCROLL1.Value, HSCROLL2.Value, HSCROLL3.Value) End Sub Sub HScroll3_Change () TEXT1.BackColor = RGB(HSCROLL1.Value, HSCROLL2.Value, HSCROLL3.Value) End Sub

FORMA

Autor: DR. JAVIER DE J. CORTES BRACHO

21

Texto CAJA DE Multiline = True TEXTO Name = Text 1 Text = Text1 CODIFICACION Haga doble clic en la Forma y en la ventana de cdigo seleccione el suceso Resize y codifique lo siguiente:
Sub Form_Resize () 'Uso del Procedimiento Resize, para ajustar el tamao de la 'caja de texto Multiline Text1.Top = 1000 Text1.Left = 1000 Text1.Width = ScaleWidth Text1.Height = ScaleHeight End Sub

COMENTARIOS Note al correr el programa como cambia el ancho de la Caja de Texto (ScaleWidth) y altura (ScaleHeight) as como la posicin, que inicia en las coordenadas 1000, 1000 medidas de la parte superior izquierda de su pantalla (Top = 1000; Left = 1000 Twips). Visual Basic considera las dimensiones de las sentencias grficas en Twips, donde una pulgada son 1440 Twips, por lo tanto un centmetro son 567 Twips. Lo ms comn en una Caja de Texto es el uso de las Barras de Desplazamiento para visualizar la informacin contenida en ellas, los siguientes programas tienen este objetivo. PROGRAMA 15: Caja de Texto Multiline con ScrollBars. PROPIEDADES PROPIEDADES Caption = Caja de Texto Multiline con ScrollBars Multiline = True ScrollBars = Vertical Name = Text 1 Text = Texto: Hoy nos encontramos trabajando con los programas del curso de Visual Basic. Particularmente con el uso de Cajas de Texto Multiline con ScrollBars.

FORMA CAJA DE TEXTO

Autor: DR. JAVIER DE J. CORTES BRACHO

22

PROGRAMA 16: Caja de Texto Multiline con ScrollBars. En este programa utilice dos Barras de Desplazamiento (Horizontal y Vertical) en la Caja de Texto, esto se logra seleccionando en las propiedades ScrollBars = 3 (Both). Adems aada un Botn Comando. PROPIEDADES PROPIEDADES Caption = Caja de Texto Multiline con ScrollBars DE Multiline = True ScrollBars = Both Name = Text 1 Caption = Iniciar Name = Command 1

FORMA CODIFICACION
Sub Text1_Change () 'Propiedades Multiline y un ScrollBars vertical en caja de texto End Sub

CAJA TEXTO BOTON

COMENTARIOS Al correr el programa visualice el texto desplazndolo con la barra vertical (ScrollBar = 1) del lado derecho en la Caja de Texto.

CODIFICACION
Sub Command1_Click () 'Caja de texto Multiline con dos ScrollBars y Botn comando; 'Uso de caracteres Chr$(13) y Chr$(10) n$ = Chr$(13) + Chr$(10) text1.Text = "Lnea uno" + n$ + "Lnea dos" + n$ + "Lnea tres" End Sub

Autor: DR. JAVIER DE J. CORTES BRACHO

23

PROGRAMA 17: Caja de Texto Multiline con ScrollBars. Este programa es similar a el anterior PROPIEDADES PROPIEDADES FORMA Caption = Caja de Texto Multiline con ScrollBars CAJA DE Multiline = True TEXTO ScrollBars = Both Name = Text 1 BOTON Caption = Iniciar Name = Command 1 CODIFICACION
Sub Command1_Click () 'Uso de la sentencia For...Next Dim a$ n$ = Chr$(13) + Chr$(10) text1.Text = "" For i = 1 To 200 a$ = a$ + Format$(i) + n$ Next i text1.Text = a$ End Sub

COMENTARIOS Como se coment en el captulo anterior el caracter 13 pertenece a la tecla ENTER, que sumado al caracter 10 que pertenece a un espacio en blanco (Barra Espaciadora) dan como resultado un cambio de lnea o cambio de rengln.

Autor: DR. JAVIER DE J. CORTES BRACHO

24

COMENTARIOS En el presente programa se ha utilizado la sentencia For...Next que da lugar a un lazo o bucle, y permite ejecutar un conjunto de sentencias cierto nmero de veces. PROGRAMA 18: Caja de Texto Multiline con ScrollBars. Realice ahora una presentacin de resultados en una Caja de Texto. PROPIEDADES PROPIEDADES Caption = Caja de Texto Multiline con ScrollBars DE Multiline = True ScrollBars = Both Name = Text 1 FontName = Courier Caption = Resultados Name = Command 1

a$ = a$ + "variedad media" + n$ a$ = a$ + "________________________" + n$ a$ = a$ + "Opalo 32.8" + n$ a$ = a$ + "Actopan 31.4" + n$ a$ = a$ + "Acala 30.2" + n$ a$ = a$ + "Valle 29.6" + n$ a$ = a$ + "________________________" + n$ text1.Text = a$ End Sub

FORMA CAJA TEXTO BOTON

COMENTARIOS El tipo de letra Courier auxilia en la presentacin de una tabla de resultados, vea esto al correr el programa.

CODIFICACION
Sub Command1_Click () 'Presentacin de resultados en caja de texto '(Tipo de letra Courier) n$ = Chr$(13) + Chr$(10) a$ = a$ + "________________________" + n$

Autor: DR. JAVIER DE J. CORTES BRACHO

25

PROGRAMA 19: Caja de Texto Multiline con ScrollBars. En forma similar al anterior realice este programa. PROPIEDADES PROPIEDADES Caption = Caja de Texto Multiline con ScrollBars DE Multiline = True ScrollBars = Both Name = Text 1 FontName = Courier Caption = Resultados Name = Command 1

a$ = a$ + "Opalo " + Format$(m1) + n$ a$ = a$ + "Actopan " + Format$(m2) + n$ a$ = a$ + "Acala " + Format$(m3) + n$ a$ = a$ + "Valle " + Format$(m4) + n$ a$ = a$ + "________________________" + n$ text1.Text = a$ End Sub

FORMA CAJA TEXTO BOTON

COMENTARIOS Note que aqu se ha usado la funcin Format$ que da un formato de salida con un patrn especfico. PROGRAMA 20: Caja de Texto Multiline con ScrollBars. Ahora observe en la codificacin la funcin Format$

CODIFICACION PROPIEDADES
Sub Command1_Click () 'Resultados en caja de texto, uso de Format$ '(Tipo de letra Courier) Dim m1, m2, m3, m4 As Single n$ = Chr$(13) + Chr$(10) m1 = 32.84 m2 = 32.1 m3 = 31 m4 = 9.345 a$ = a$ + "________________________" + n$ a$ = a$ + "variedad media" + n$ a$ = a$ + "________________________" + n$

FORMA CAJA TEXTO BOTON

PROPIEDADES Caption = Caja de Texto Multiline con ScrollBars DE Multiline = True ScrollBars = Both Name = Text 1 FontName = Courier Caption = Resultados Name = Command 1

Autor: DR. JAVIER DE J. CORTES BRACHO

26

CODIFICACION
Sub Command1_Click () 'Resultados en caja de texto, Uso de Format$, ###.## Dim m1, m2, m3, m4 As Single n$ = Chr$(13) + Chr$(10) m1 = 32.84 m2 = 32.1 m3 = 31 m4 = 9.345 a$ = a$ + "________________________" + n$ a$ = a$ + "variedad media" + n$ a$ = a$ + "________________________" + n$ a$ = a$ + "Opalo " + Format$(m1, "#####.##") + n$ a$ = a$ + "Actopan " + Format$(m2, "#####.##") + n$ a$ = a$ + "Acala " + Format$(m3, "#####.##") + n$ a$ = a$ + "Valle " + Format$(m4, "#####.##") + n$ a$ = a$ + "________________________" + n$ text1.Text = a$ End Sub

PROGRAMA 21: Caja de Texto Multiline con ScrollBars. Compare los formatos de salida de los programas 19 y 20 con el presente programa. PROPIEDADES PROPIEDADES Caption = Caja de Texto Multiline con ScrollBars DE Multiline = True ScrollBars = Both Name = Text 1 FontName = Courier Caption = Resultados Name = Command 1

FORMA CAJA TEXTO BOTON

CODIFICACION
Sub Command1_Click () 'Resultados en caja de texto, uso de Format$; ###.00; @@@ Dim m1, m2, m3, m4 As Single n$ = Chr$(13) + Chr$(10) m1 = 32.84 m2 = 32.1 m3 = 31 m4 = 9.345 a$ = a$ + "________________________" + n$ a$ = a$ + "variedad media" + n$ a$ = a$ + "________________________" + n$

COMENTARIOS El smbolo # representa un dgito cualquiera, excepto los ceros no significativos, note al correr el programa que el valor de m4 = 9.345 se ha redondeado a dos cifras despus del punto 9.35 (por el formato .##)

Autor: DR. JAVIER DE J. CORTES BRACHO

27

a$ = a$ + "Opalo " + Format$(Format$(m1, "#####.000"), "@@@@@@@") + n$ a$ = a$ + "Actopan " + Format$(Format$(m2, "#####.000"), "@@@@@@@") + n$ a$ = a$ + "Acala " + Format$(Format$(m3, "#####.000"), "@@@@@@@") + n$ a$ = a$ + "Valle " + Format$(Format$(m4, "#####.000"), "@@@@@@@") + n$ a$ = a$ + "________________________" + n$ text1.Text = a$ End Sub

COMENTARIOS El smbolo 0 dentro del Format$ representa un dgito cualquiera, incluyendo los ceros no significativos y adems redondea el resultado. El simbolo @ muestra un caracter o un espacio. Si hay un caracter en la cadena que se est formateando, entonces en la posicin donde aparece @ se muestra el caracter, que dar forma, se incluye un espacio en esa posicin. En resumen los formatos de salida usados, muestran que: Patrn Sin Patrn ##.## ##.00 Entrada 32.1 32.1 32.1 32.10 Entrada 31 31 31. 31.00 Entrada 9.345 9.345 9.35 9.35

PROGRAMA 22: Caja de Texto Multiline con ScrollBars. El presente programa es el programa anterior con la diferencia que los resultados son presentados en una Forma Nueva. Por lo tanto debe abrir dos Formas utilice el men de Archivo (File) para abrir la Forma 2 mediante New Form. PROPIEDADES PROPIEDADES Caption = Caja de Texto Multiline con ScrollBars Caption = Resultados DE Multiline = True

FORMA 1 FORMA 2 CAJA

Autor: DR. JAVIER DE J. CORTES BRACHO

28

TEXTO BOTON CODIFICACION

ScrollBars = Both Name = Text 1 FontName = Courier Caption = Resultados Name = Command 1

COMENTARIOS Comparando la codificacin del programa anterior con el presente, observe que se ha aadido dos lneas referentes a presentar el resultado de la Caja de Texto 1 en una Forma 2. Para cambiar de la Forma 2 a la Forma 1 o viceversa, abra en el men Window la funcin Project, seleccione la Forma que desea ver y de un clic en View Form.

Sub Command1_Click () 'Aade una nueva forma (form2) y presenta los resultados en ella Dim m1, m2, m3, m4 As Single n$ = Chr$(13) + Chr$(10) m1 = 32.84 m2 = 32.1 m3 = 31 m4 = 9.345 a$ = a$ + "________________________" + n$ a$ = a$ + "variedad media" + n$ a$ = a$ + "________________________" + n$ a$ = a$ + "Opalo " + Format$(Format$(m1, "#####.000"), "@@@@@@@") + n$ a$ = a$ + "Actopan " + Format$(Format$(m2, "#####.000"), "@@@@@@@") + n$ a$ = a$ + "Acala " + Format$(Format$(m3, "#####.000"), "@@@@@@@") + n$ a$ = a$ + "Valle " + Format$(Format$(m4, "#####.000"), "@@@@@@@") + n$ a$ = a$ + "________________________" + n$ form2.text1.Text = a$ form2.Show End Sub

Es importante al grabar en disco este programa, que guarde las dos Formas y el Programa o Proyecto, seleccione cada Forma con la ventana anterior y realice el procedimiento descrito en el captulo 1. A manera de ejemplo guarde las Formas como Pro22-1.Frm para la Forma 1; Pro22-2.Frm para la Forma 2 y Pro22.Mak para el proyecto.

Autor: DR. JAVIER DE J. CORTES BRACHO

29

CAPITULO 3 CAJAS DE DIALOGO INTRODUCCION Cuando un programa en un instante determinado de su aplicacin necesita para continuar aceptar nuevos datos o bien visualizarlos, se utilizan las cajas de dilogo, cuando una aplicacin visualiza una caja de dilogo que necesita ser finalizada explcitamente para que dicho programa pueda continuar (generalmente haciendo clic en el botn OK o en el botn Cancelar), se dice que es un caso de caja de dilogo modal. Si no es as, se estar en un caso de una caja de dilogo sin modo, que permite al usuario pasar a otra ventana sin cerrar antes la caja de dilogo. En el presente captulo, se ver el uso de las cajas de dilogo modales predefinidas por Visual Basic como son: Las Cajas de Mensaje (MsgBox) que visualizan un mensaje predeterminado y las Cajas de Entrada (InputBox) que indican a el usuario el tipo de informacin que debe introducir. CAJAS DE MENSAJE La sentencia MsgBox, visualiza un mensaje en una caja de dilogo, realice el siguiente programa para observar cual es la sintaxis apropiada para este propsito. PROGRAMA 23: Caja de Mensaje. PROPIEDADES CAPTION NAME Caja de Mensaje Escriba un nmero Label 1 entre -32768 y 32767 Continuar Command 1 Text 1 TEXT

FORMA ETIQUETA BOTON CAJA DE TEXTO

Ninguno

CODIFICACION
Sub Command1_Click () 'Uso de la funcin MsgBox Dim X As Integer Dim msg1, msg2 As String X = Val(text1.Text) If X > 10 Then msg1 = "NUMERO MAYOR QUE 10" Else msg1 = "NUMERO MENOR QUE 10" End If MsgBox msg1, 16, "PRECAUCION" msg2 = "OPRIMA ACEPTAR PARA CONTINUAR" MsgBox msg2, 32, "SEGURO DE SU VALOR?" MsgBox msg2, 64, "ESCRIBA UN NUEVO NUMERO"

Autor: DR. JAVIER DE J. CORTES BRACHO

30

text1.SetFocus End Sub

Al correr el programa aparecern las siguientes cajas de mensaje:

COMENTARIOS Note que en la sintaxis de la sentencia MsgBox, se encuentra un nmero entero tipo (16, 32, 64), este nmero describe el tipo de caja de mensaje, el estilo del icono y el botn por defecto. Para ver la totalidad de los valores del entero tipo, vea la ayuda que Visual Basic da para MsgBox o mejor an, realice el siguiente programa. PROGRAMA 24: Caja de Mensaje (Funcin) PROPIEDADES
CAPTION NAME TEXT FORMA Caja de Mensaje (Funcin) ETIQUETA Escriba un Label 1 nmero BOTON Continuar Command 1 CAJA DE Text 1 Ninguno TEXTO 1 CAJA DE Text 2 Ninguno TEXTO 2 MULTILINE

True

CODIFICACION
Sub Command1_Click () Dim x As Integer Dim msg As String x = Val(text1.Text) msg = "Observe el efecto del nmero"

Autor: DR. JAVIER DE J. CORTES BRACHO

31

MsgBox msg, (x), "NUMERO" End Sub Sub Form_Load () 'Cada nmero siguiente tiene un significado o representacin de la funcin MsgBox TEXT2.Text = "Nmeros vlidos = 0,1,2,3,4,5,16,17,18,19,20,21,32,33,34,35,36,37,48,49 ,50,51,52,53,64,66,67,68,69" End Sub

PROPIEDADES
FORMA ETIQUETA BOTON CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAPTION NAME Caja de Mensaje (Funcin) Escriba un Label 1 nmero Continuar Command 1 Text 1 Text 2 TEXT MULTILINE

Ninguno Ninguno True

COMENTARIOS Al correr el programa escriba en la caja de texto un nmero de los que aparecen como vlidos y al hacer clic en Continuar, se visualizar la caja de mensaje asociada a ese nmero. De esta manera podr buscar las cajas de mensaje ms apropiadas para sus proyectos. PROGRAMA 25: Caja de Mensaje (Funcin) Ahora bien, una vez que ha seleccionado que caja de mensaje va ha utilizar, el siguiente paso es asignar codificacin a los botones que aparecen en dicha caja de mensaje, se muestra un ejemplo en este programa.

CODIFICACION
Sub Command1_Click () 'Significado de los valores de botones S, No, Cancelar en ' la funcin MsgBox Dim x As Integer Dim msg As String x = Val(text1.Text) If x > 10 Then msg = "Nmero mayor que 10" Else msg = "Nmero menor que 10" End If z = MsgBox(msg, (67), "Nmero") If z = 6 Then text2.Text = "Seleccionaste S" End If If z = 7 Then text2.Text = "Seleccionaste No"

Autor: DR. JAVIER DE J. CORTES BRACHO

32

End If If z = 2 Then text2.Text = "Seleccionaste Cancelar" End If End Sub

COMENTARIOS Al correr el programa al dar un nmero cualquiera en la caja de texto y dar un clic en Continuar, aparecer una caja de mensaje del siguiente tipo, que est asociada a el valor 67.

1 2 3 4 5 6 7

OK Cancelar Abortar Reintentar Ignorar S No

PROGRAMA 26: Letras en una Caja de Mensaje. Vea en este programa como crear una cadena de caracteres usando un bucle (For...Next) adems note al correr el programa como aparece esta serie de caracteres en una caja de mensaje. PROPIEDADES Si hace clic en S aparecer un mensaje que indica que este botn fue el seleccionado, observe que el botn S est asociado a el valor 6, como el botn No a el 7 y el botn Cancelar a el nmero 2, de hecho, el valor tomado en la funcin MsgBox indica cual botn ha sido seleccionado tal como se muestra en el siguiente cuadro: CAPTION NAME FORMA Letras en Caja de Mensaje ETIQUETA Haga Clic en cualquier parte Label 1 dentro de la Forma. CODIFICACION
Sub Form_Click () 'Este programa muestra: 'a).- La accin clic en la forma 'b).- El uso de cdigo ANSI en un loop 'c).- Como unir texto usando el smbolo +

TEXT

Valor

Significado

Autor: DR. JAVIER DE J. CORTES BRACHO

33

Dim i, msg For i = Asc("a") To Asc("z") msg = msg + Chr(i) Next i MsgBox msg End Sub

PROPIEDADES CAPTION NAME Caja de Entrada Continuar Command 1 Text 1 TEXT

FORMA BOTON CAJA DE TEXTO

Ninguno

CAJAS DE ENTRADA

CODIFICACION
Sub Command1_Click () 'Uso de la funcin InputBox$ a$ = InputBox$("Escribe tu Nombre") text1.Text = a$ End Sub

COMENTARIOS Al correr el programa haga clic en Continuar y aparecer una caja de entrada como la que se muestra a continuacin, escriba su nombre donde aparece el cursor y haga clic en el botn de OK, su nombre aparecer en la caja de texto. La funcin InputBox$ visualiza una caja de dilogo con un mensaje que indica al usuario el tipo de informacin que debe introducir, observe esto en el siguiente programa, en el cual la informacin que se asigna a la caja de texto es por medio de una caja de entrada. PROGRAMA 28: Caja de Entrada. En la codificacin de este programa, vea cual es la manera de asignar a una variable la informacin de una caja de entrada, note tambin la sintaxis del InputBox para que aparezca en la caja de entrada un mensaje, un titulo y un valor. Corra el programa y observe como el resultado aparece en una caja de mensaje.

PROGRAMA 27: Caja de Entrada.

Autor: DR. JAVIER DE J. CORTES BRACHO

34

PROPIEDADES CAPTION NAME FORMA Caja de Entrada BOTON Continuar Command 1 CODIFICACION
Sub Command1_Click () 'Uso de la funcin InputBox, Do...Loop Until y MsgBox Dim Respuesta, valor, msg, titulo msg = "Escriba un Nmero entre 1 y 3" titulo = "Demostracin de InputBox" valor = "1" Do Respuesta = InputBox(msg, titulo, valor) Loop Until Respuesta >= 1 And Respuesta <= 3 MsgBox "El Nmero Seleccionado es" & Respuesta End Sub

TEXT

COMENTARIOS

En la codificacin se ha usado la sentencia Do...Loop Until que es un bucle el cual repite la ejecucin de un conjunto de sentencias mientras una condicin dada sea cierta.

PROGRAMA 29: Incluye una Palabra Clave. En este programa aplique lo visto en el presente captulo, referente a las cajas de mensaje y cajas de entrada.

Autor: DR. JAVIER DE J. CORTES BRACHO

35

PROPIEDADES CAPTION NAME TEXT FORMA Incluye una palabra clave ETIQUETA 1 Cual es la palabra clave? Label 1 ETIQUETA 2 Encuntrala corriendo el Label 2 programa CODIFICACION
Sub Form_Load () 'Uso de Do Until - Loop y MsgBox Dim Clave As String * 8 Dim CUENTA As Integer Do Until UCase$(Clave) = "EMILIO " Or CUENTA = 3 Clave = InputBox$("Palabra de paso:") If UCase$(Clave) <> "EMILIO " Then MsgBox Clave + "la palabra de paso no es correcta", 16 End If CUENTA = CUENTA + 1 Loop If CUENTA = 3 Then End End Sub

Autor: DR. JAVIER DE J. CORTES BRACHO

36

ACTIVAR O DESACTIVAR OPCIONES INTRODUCCION El presente captulo se refiere a el uso de las Casillas de Verificacin (CheckBox), las cuales son controles que indican si una opcin particular esta activada o desactivada. Cada casilla de verificacin es independiente de las dems, ya que cada una de ellas tiene su propio nombre (propiedad Name). El nmero de opciones representadas de esta forma puede ser cualquiera, y de ellas el usuario puede seleccionar todas las que desee. Se analiza tambin el uso de Botones de Opcin que son controles que indican si una determinada opcin esta activada o desactivada. Cada botn de opcin al igual que las casillas de verificacin es independiente de los dems, ya que tambin tiene su propio nombre (propiedad Name). El nmero de opciones representadas puede ser cualquiera y de ellos el usuario solo puede seleccionar una cada vez. Como se ha visto hasta ahora, la ejecucin de los programas se realiza sin que el usuario tenga la opcin de tomar una decisin, observe un ejemplo en el siguiente programa.

CAPITULO 4 PROGRAMA 30: Maysculas en Caja de Texto. PROPIEDADES CAPTION NAME TEXT Maysculas en Caja de Texto Text 1 Ninguno

FORMA CAJA DE TEXTO

CODIFICACION
Sub Text1_KeyPress (keyascii As Integer) 'Este programa transforma minsculas en maysculas 'Muestra el uso de las funciones Chr, Asc y UCase a$ = Chr(keyascii) keyascii = Asc(UCase(a$)) End Sub

COMENTARIOS Recuerde que el suceso KeyPress utiliza el argumento KeyAscii, el cual contiene el valor ASCII del caracter imprimible (corra el programa 31 para que observe este efecto). Este valor puede ser convertido a un caracter utilizando la funcin Chr$. En tanto que las funciones Asc(a$) devuelve el valor ASCII del caracter a$ y Ucase(a$), convierte el caracter a$ a maysculas.

Autor: DR. JAVIER DE J. CORTES BRACHO

37

PROGRAMA 31: Cdigo ASCII PROPIEDADES

(CheckBox).

y observe la opcin de seleccionar.

PROGRAMA 32: Mensaje en Caja de Texto. CAPTION FORMA Nmero ASCII ETIQUETA 1 CARACTER ETIQUETA 2 CODIGO CAJA DE TEXTO CODIFICACION
Sub Text1_KeyPress (keyascii As Integer) 'Este programa imprime el cdigo ANSI de la tecla oprimida a$ = " " + Format$(keyascii) text1.Text = a$ End Sub

NAME

TEXT

PROPIEDADES CAPTION NAME TEXT VALUE Mensaje en Caja de Texto Check1 Check1 Checked Text 1 Ninguno

Label 1 Label 2 Text 1

FORMA Ninguno CHECKBOX CAJA DE TEXTO

CODIFICACION
Sub Check1_Click () 'Este programa muestra el uso del CheckBox tambin; 'muestra como inicializar una caja de texto con texto, 'incluyendo codificacin en la forma If check1.Value = 1 Then text1.Text = "Opcin Seleccionada" End If If check1.Value = 0 Then text1.Text = "Opcin No Seleccionada" End If End Sub Sub Form_Load () text1.Text = "Opcin Seleccionada" End Sub

CASILLAS DE VERIFICACION Si en la ejecucin de un programa se hace clic en una casilla de verificacin, la opcin queda seleccionada (). Una opcin ya seleccionada puede pasar a no estarlo haciendo clic de nuevo sobre la casilla de verificacin ( ). En el siguiente programa utilice la caja de herramientas de Visual Basic para dibujar sobre la forma una casilla de verificacin

Autor: DR. JAVIER DE J. CORTES BRACHO

38

COMENTARIOS Note que la codificacin esta realizada en Check1_Click () y al correr el programa en su inicio aparece un texto en la caja de texto, esto es por la codificacin que se ha realizado en la forma (Form_Load ()) y corresponde a la opcin seleccionada en la casilla de verificacin (Check 1) dado que el valor con que inicia esta casilla es Checked 1 (asignado en las propiedades).

PROGRAMA 33: Convierte a Maysculas. PROPIEDADES CAPTION NAME TEXT VALUE FORMA Convierte a Maysculas CHECKBOX convierte a Check1 0 maysculas CAJA DE Text1 Ninguno TEXTO ETIQUETA Escriba un texto Label1 en minsculas CODIFICACION
Sub Check1_Click () 'Este programa muestra el uso del ChekBox If check1.Value = 1 Then text1.Text = UCase$(text1.Text) End If If check1.Value <> 2 Then text1.SetFocus End If End Sub

Compare el siguiente programa con el programa 30, y observe como el usuario tiene la opcin de cambiar de minsculas a maysculas mediante una casilla de verificacin.

Sub Text1_KeyPress (keyascii As Integer) Dim car As String * 1 If check1.Value = 1 Then car = UCase$(Chr$(keyascii))

Autor: DR. JAVIER DE J. CORTES BRACHO

39

keyascii = Asc(car) End If End Sub

FORMA

Cambia tipo de letra Text 1 Check1 Check2 Ninguno Checked

CAJA DE TEXTO CHECKBOX 1 Negritas CHECKBOX 2 Itlicas CODIFICACION


Sub Check1_Click () 'Uso de varios CheckBox

If check1.Value = 1 Then text1.FontBold = True Else text1.FontBold = False End If End Sub Sub Check2_Click () If check2.Value = 1 Then text1.FontItalic = True Else text1.FontItalic = False End If End Sub

Ahora vea la codificacin y uso de dos casillas de verificacin, note como pueden ser seleccionadas ambas a la vez. PROGRAMA 34: Cambia tipo de letra. PROPIEDADES CAPTION NAME TEXT VALUE

Autor: DR. JAVIER DE J. CORTES BRACHO

40

Seleccione de la tabla de herramientas los botones de opcin que requiera para realizar los siguientes programas. PROGRAMA 35: Suma, Resta, Multiplicacin y Divisin. PROPIEDADES CAPTION NAME Suma, Resta, Multiplicacin y Divisin 1er valor Label 1 2o valor Label 2 RESULTADO Label 3 Text 1 Text 2 Text 3 SUMA RESTA PRODUCTO DIVISION SUMA RESTA PRODUCTO DIVISION

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3 BOTON OPCION 1 BOTON OPCION 2 BOTON OPCION 3 BOTON

BOTONES DE OPCION Si al correr un programa se hace clic sobre un botn de opcin, la opcin queda seleccionada ( ), la seleccin de una opcin de este tipo provoca que la opcin que anteriormente estaba seleccionada pase a no estarlo ( ). Para saber si una determinada opcin est seleccionada, hay que verificar el valor de su propiedad (Value). Este valor puede ser falso (False), el circulo aparece vaco, o verdadero (True), el circulo aparece con un . Cuando una opcin se pone a valor verdadero (True) se da el suceso Click. Cuando una de estas opciones esta deshabilitada, la etiqueta asociada aparece en gris. Esto se consigue poniendo su propiedad Enabled al valor 0.

Autor: DR. JAVIER DE J. CORTES BRACHO

41

OPCION 4 BOTON COMANDO

Ejecutar

Command 1

CODIFICACION
Sub Command1_Click () 'Uso de Botones de Opcin; Codificacin en Botn Comando A = Val(TEXT1.Text) B = Val(text2.Text) If SUMA Then C=A+B End If If RESTA Then C=A-B End If If PRODUCTO Then C=A*B End If If DIVISION Then C=A/B End If TEXT3.Text = Format$(C) End Sub Sub Text1_KeyPress (keyascii As Integer) If keyascii = 13 Then text2.SetFocus End If End Sub

PROGRAMA 36: Suma, Resta, Multiplicacin y Divisin. A diferencia con el programa anterior, la codificacin es en cada botn de opcin. PROPIEDADES CAPTION NAME Suma, Resta, Multiplicacin y Divisin 1er valor Label 1 2o valor Label 2 RESULTADO Label 3 Text 1

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 CAJA DE

Autor: DR. JAVIER DE J. CORTES BRACHO

42

TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3 BOTON OPCION 1 BOTON OPCION 2 BOTON OPCION 3 BOTON OPCION 4 CODIFICACION

Text 2 Text 3 SUMA RESTA PRODUCTO DIVISION SUMA RESTA PRODUCT O DIVISION

Sub SUMA_Click () TEXT3.Text = Format$(Val(TEXT1.Text) + Val(text2.Text)) End Sub Sub Text1_KeyPress (keyascii As Integer) If keyascii = 13 Then text2.SetFocus End If End Sub

PROGRAMA 37: Colores con Botones de Opcin. Se presenta en este programa varios botones de opcin con su codificacin para seleccionar color a una caja de texto que se encuentra dentro de una Caja de Imagen (PictureBox), dibuje esta caja de imagen con:

Sub DIVISION_Click () 'Codificacin en Botones de Opcin TEXT3.Text = Format$(Val(TEXT1.Text) / Val(text2.Text)) End Sub Sub PRODUCTO_Click () TEXT3.Text = Format$(Val(TEXT1.Text) * Val(text2.Text)) End Sub Sub RESTA_Click () TEXT3.Text = Format$(Val(TEXT1.Text) Val(text2.Text)) End Sub

PROPIEDADES
CAPTION Colores con Botones de Opcin ETIQUETA 1 BackColor ETIQUETA 2 ForeColor CAJA IMAGEN FORMA NAME TEXT MULTI LINE

Label 1 Label 2 Picture 1

Autor: DR. JAVIER DE J. CORTES BRACHO

43

CAJA DE TEXTO 1

Text 1

Ejemplo True de caja de texto dentro de imagen

'Cajas de Texto dentro de Imagen y 'Codificacin de colores en Botones de Opcin (BackColor y ForeColor) text1.BackColor = &HFFFF00 End Sub Sub Option10_Click () text1.ForeColor = &HFFFFFF PICTURE1.BackColor = &HFFFFFF End Sub Sub Option11_Click () text1.BackColor = &H0 End Sub Sub Option12_Click () text1.ForeColor = &HF00 PICTURE1.BackColor = &HF00 End Sub Sub Option2_Click () text1.BackColor = &HFFFF& End Sub Sub Option3_Click () text1.BackColor = &HFF& End Sub Sub Option4_Click () text1.BackColor = &HFF00&

BOTON OPCION 1 BOTON OPCION 2 BOTON OPCION 3 BOTON OPCION 4 BOTON OPCION 5 BOTON OPCION 6 BOTON OPCION 7 BOTON OPCION 8 BOTON OPCION 9 BOTON OPCION 10 BOTON OPCION 11 BOTON OPCION 12

AZUL AMARILLO ROJO VERDE BLANCO AZUL AMARILLO ROJO VERDE BLANCO NEGRO NEGRO

Option 1 Option 2 Option 3 Option 4 Option 5 Option 6 Option 7 Option 8 Option 9 Option 10 Option 11 Option 12

CODIFICACION
Sub Option1_Click ()

Autor: DR. JAVIER DE J. CORTES BRACHO

44

End Sub Sub Option5_Click () text1.BackColor = &HFFFFFF End Sub Sub Option6_Click () text1.ForeColor = &HFFFF00 PICTURE1.BackColor = &HFFFF00 End Sub Sub Option7_Click () text1.ForeColor = &HFFFF& PICTURE1.BackColor = &HFFFF& End Sub Sub Option8_Click () text1.ForeColor = &HFF& PICTURE1.BackColor = &HFF& End Sub Sub Option9_Click () text1.ForeColor = &HFF00& PICTURE1.BackColor = &HFF00& End Sub

COMENTARIOS Una Caja de Imagen (PictureBox) se utiliza cuando se requiere visualizar una imagen que se ha dibujado utilizando cdigo o que se ha importado de algn archivo. En este programa se ha dibujado una caja de texto dentro de la caja imagen.

Autor: DR. JAVIER DE J. CORTES BRACHO

45

CAPITULO 5 LISTAS FIJAS Y LISTAS DESPLEGABLES INTRODUCCION Una Lista (ListBox) es un control que proporciona al usuario un conjunto de elementos, de los cuales elegir uno. Si la cantidad de elementos rebasa el nmero de los que pueden ser visualizados simultneamente en el espacio disponible de la Lista, aparecer automticamente una barra de desplazamiento vertical para que el usuario pueda desplegar los elementos de la Lista hacia arriba o hacia abajo. Generalmente, una Lista es apropiada cuando se requiere limitar la entrada a una serie de elementos determinados. Por defecto, los elementos de una Lista son visualizados verticalmente en una sola columna, aunque es posible, establecer mltiples columnas (no en una Lista Desplegable). Si el ancho total de las columnas supera al ancho de la Lista, aparecer automticamente una barra de desplazamiento horizontal para que el usuario pueda desplazar las columnas hacia la izquierda o hacia la derecha. Una Lista Desplegable es un control que combina las caractersticas de una caja de texto y de una lista. Esto permite a el usuario elegir un elemento de varios escribiendo directamente en la caja de texto o seleccionando de la lista. Generalmente, un control combinado (ComboBox) es apropiado cuando hay una lista de elementos y adems, el usuario puede sugerir otros que no estn en la lista. PROGRAMA 38: Lista de libros prestados. Dibuje en la forma los controles que se indican a continuacin y asigne las propiedades correspondientes a cada uno de ellos. El control Lista (ListBox) dibjelo con el siguiente icono de la caja de herramientas.

PROPIEDADES
CAPTION Lista de libros prestados AUTOR TITULO NUM. DE LIBROS NAME SORTED

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3 LISTA BOTON 1 BOTON 2

Label 1 Label 2 Label 3 Text 1 Text 2 Text 3 PRESTAMO Command 1 Command 2 True

AADIR REMOVER

Autor:Dr. Javier de Jess Corts Bracho

46

CODIFICACION
Sub Command1_Click () 'Uso de ListBox y los comandos: AddItem, ListCount, ListIndex y RemoveItem A$ = TEXT1.Text + " " + Text2.Text PRESTAMO.AddItem A$ TEXT1.Text = "" Text2.Text = "" TEXT1.SetFocus TEXT3.Text = PRESTAMO.ListCount End Sub Sub Command2_Click () Dim I As Integer I = PRESTAMO.ListIndex If I >= 0 Then PRESTAMO.RemoveItem I TEXT3.Text = PRESTAMO.ListCount End If End Sub Sub Text1_KeyPress (keyascii As Integer) If keyascii = 13 Then Text2.SetFocus End If End Sub Sub Text2_KeyPress (keyascii As Integer) If keyascii = 13 Then Command1.SetFocus End If

End Sub

COMENTARIOS Note en las propiedades que el nombre de la Lista es PRESTAMO y que la propiedad Sorted tiene valor True la cual indica que la lista se visualizar clasificada, es decir, al correr el programa los libros que se vayan aadiendo para conformar la lista, aparecern clasificados por autor en forma alfabtica. Adems observe en la codificacin los siguientes trminos: AddItem: Permite aadir un elemento a una lista. ListCount: Da como resultado el nmero de elementos que hay en una lista. ListIndex: Da la posicin respecto de 0 del elemento seleccionado. RemoveItem: Elimina un elemento de una lista.

Autor:Dr. Javier de Jess Corts Bracho

47

Al correr el programa, teclee el nombre en la caja de texto y de un clic en el botn AADIR (se ejecutar la sentencia AddItem), si hace subsecuentemente esta operacin usted formar una lista de libros. Si de esta lista selecciona con el ratn un elemento (ListIndex) y da un clic en el botn REMOVER, se elimina el elemento de la lista (sentencia RemoveItem), note como cambia la visualizacin del nmero de elementos de la lista (ListCount).

CODIFICACION
Sub Cliente_Click () 'Uso de ListBox y comando Enabled Command2.Enabled = (cliente.ListIndex <> -1) End Sub Sub Cliente_DblClick () Command2.Value = True End Sub Sub Command1_Click () cliente.AddItem text1.Text text1.Text = "" text1.SetFocus Label1.Caption = cliente.ListCount End Sub Sub Command2_Click () Dim i As Integer i = cliente.ListIndex If i >= 0 Then cliente.RemoveItem i Label1.Caption = cliente.ListCount End If Command2.Enabled = (cliente.ListIndex <> -1) End Sub Sub Command3_Click () cliente.Clear Command2.Enabled = False Label1.Caption = cliente.ListCount

PROGRAMA 39: Lista de clientes. En este programa se ha realizado la codificacin en la Lista. PROPIEDADES
CAPTION Lista de clientes Nmero clientes NOMBRE NAME Label 1 de Label 2 Label 3 Text 1 Cliente True Command 1 Command 2 Command 3 Command 4 SORTED

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 CAJA DE TEXTO 1 LISTA BOTON 1 BOTON 2 BOTON 3 BOTON 4

AADIR REMOVER LIMPIAR CERRAR

Autor:Dr. Javier de Jess Corts Bracho

48

End Sub Sub Command4_Click () End End Sub Sub Text1_Change () Command1.Enabled = (Len(text1.Text) > 0) End Sub

Dibuje en la forma dos listas, asigne a cada control las siguientes

COMENTARIOS Al correr el programa, despus de aadir el primer nombre, el botn AADIR aparece deshabilitado y el cursor en la caja de texto esperando un nuevo nombre, al empezar a teclear el nombre, observe como el botn AADIR se habilita, esto es posible por la propiedad Enabled. De igual forma si selecciona con un clic un nombre de la lista el botn AADIR se deshabilita dejando habilitado a el botn REMOVER. Note tambin, que si da un doble clic en un nombre de la lista, se ejecutar la accin de REMOVER (procedimiento Cliente_DblClick ()). En este programa tambin se ha usado el termino Clear que borra el contenido de la Lista.

propiedades y codifique en los botones comando y en la forma para realizar una transferencia de nombres de la lista uno a la lista dos. PROPIEDADES CAPTION Dos listas NAME List 1 List 2 Command 1 Command 2 Command 3 SORTED True True

FORMA LISTA 1 LISTA 2 BOTON 1 BOTON 2 BOTON 3

TRANSFERIR LIMPIAR SALIR

PROGRAMA 40: Dos listas.

CODIFICACION

Autor:Dr. Javier de Jess Corts Bracho

49

Sub Command1_Click () 'Uso de dos ListBox, transferencia de informacin de una lista a otra. For I = 0 To (List1.ListCount - 1) If List1.SELECTED(I) = True Then List2.AddItem List1.LIST(I) End If Next I Command2.Enabled = True End Sub Sub Command2_Click () List2.Clear Command2.Enabled = False End Sub Sub Command3_Click () End End Sub Sub Form_Load () List1.AddItem "Ramrez Juan" List1.AddItem "Aguayo Mara" List1.AddItem "Gonzlez Roco" List1.AddItem "Perales Catarino" List1.AddItem "Yerena Ala" List1.AddItem "Ontiveros Patricia" List1.AddItem "Contreras Lucas" List1.AddItem "Maldonado Juan" List1.AddItem "Villarreal Umbe" End Sub

PROGRAMA 41: Dos listas con dos columnas. Ahora asigne en las propiedades dos columnas a cada una de las listas. PROPIEDADES CAPTION Dos listas con dos columnas NAME COLUMNS

FORMA

LISTA 1 LISTA 2 BOTON 1 TRANSFERIR BOTON 2 LIMPIAR BOTON 3 SALIR CODIFICACION

List 1 List 2 Command 1 Command 2 Command 3

2 2

Sub Command1_Click () 'Uso de la Propiedad Columns en ListBox For I = 0 To (List1.ListCount - 1) If List1.Selected(I) = True Then List2.AddItem List1.List(I)

Autor:Dr. Javier de Jess Corts Bracho

50

End If Next I Command2.Enabled = True End Sub Sub Command2_Click () List2.Clear Command2.Enabled = False End Sub Sub Command3_Click () End End Sub Sub Form_Load () List1.AddItem "Juan" List1.AddItem "Mara" List1.AddItem "Roco" List1.AddItem "Catarino" List1.AddItem "Ala" List1.AddItem "Patricia" List1.AddItem "Lucas" List1.AddItem "Juan" List1.AddItem "Umbe" End Sub

Los programas anteriores del presente captulo presentan listas fijas, a diferencia de los siguientes programas que involucran listas desplegables, tambin denominadas cuadros combinados o Combos (ComboBox) los cuales son una combinacin de una lista y una caja de texto. Para dibujar un Combo utilice de la caja de herramientas el icono

COMENTARIOS Corra el programa y observe como aparecen dos columnas en la lista uno. Seleccione un nombre y transfiralo a la lista dos, puede repetir esta operacin cuantas veces quiera, note que tambin se forman dos columnas en la lista dos.

Autor:Dr. Javier de Jess Corts Bracho

51

PROGRAMA 42: Cajas combinadas. PROPIEDADES


CAPTION FORMA Cajas combinadas ETIQUETA 1 Destino ETIQUETA 2 Preferencia de asiento ETIQUETA 3 Preferencia de comida COMBO 1 COMBO 2 COMBO 3 BOTON 1 Aceptar BOTON 2 Cancelar NAME Label 1 Label 2 Label 3 Combo 1 Pas 1 Combo 2 Ventana 2 Combo 3 Comida 0 Command 1 Command 2 TEXT STYLE

Sub Form_Load () combo1.AddItem "Pars" combo1.AddItem "Mosc" combo1.AddItem "Nueva York" combo1.AddItem "Comales" combo1.AddItem "Daz Ordaz" combo1.AddItem "Monterrey" combo1.AddItem "Marn" combo2.AddItem "Pasillo" combo2.AddItem "Ventana" combo2.AddItem "Centro" combo3.AddItem "Pollo" combo3.AddItem "Vegetariano" combo3.AddItem "Diettico" combo3.AddItem "Yonk food" End Sub

COMENTARIOS Note los valores de la propiedad Style de cada Combo: En el Combo 1 el valor es 1 que representa una lista desplegable en la que la lista de elementos siempre est visualizada. El usuario podr optar por elegir un elemento de la lista o escribir directamente el elemento deseado en la caja de texto. En el Combo 2 el valor es 2 que representa una lista desplegable en la que el usuario solo tiene la posibilidad de elegir un elemento de la lista; esto es, no se le permite escribir en la caja de texto. En el Combo 3 el valor es 0 que representa una lista desplegable estndar. De esta manera cuando el usuario haga clic en la

CODIFICACION
Sub Command1_Click () 'El objetivo del programa en mostrar los ComboBox y la ventana Debug Debug.Print combo1.Text Debug.Print combo2.Text Debug.Print combo3.Text End Sub Sub Command2_Click () End End Sub

Autor:Dr. Javier de Jess Corts Bracho

52

flecha que corresponde a este combo, se visualizar la lista de elementos y podr optar por elegir un elemento de la lista o por escribir directamente el elemento deseado en la caja de texto. Observe adems en la codificacin la sentencia Debug.Print asociada a cada uno de los Combos, lo cual permite escribir directamente sobre una ventana de depuracin (Debug Window) los valores actuales de las variables. Es decir si corre el programa y selecciona las variables en cada combo o las escribe (si el valor de la propiedad Style del combo lo permite) y da un clic en el botn Aceptar, note que aparecen sus elecciones en una ventana de depuracin (Debug Window).

PROGRAMA 43: Cajas combinadas. En este programa abra dos formas (procedimiento descrito en el programa 22 del capitulo 2). La forma 1 para introducir la informacin y en la forma 2 presentar los resultados.
PROPIEDADES CAPTION NAME TEXT Cajas combinadas Destino Label 1 Preferencia de Label 2 asiento Preferencia de Label 3 comida Label 4 Label 4 NOMBRE Label 5 Combo 1 Pas Combo 2 Ventana Combo 3 Comida Aceptar Command 1 Cancelar Command 2 Resultados Command 3 STYLE

FORMA 1 ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 ETIQUETA 4 ETIQUETA 5 COMBO 1 COMBO 2 COMBO 3 BOTON 1 BOTON 2 BOTON 3

1 0 0

Autor:Dr. Javier de Jess Corts Bracho

53

CAJA DE TEXTO CAPTION FORMA 2 ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 ETIQUETA 4 ETIQUETA 5 CAJA DE TEXTO Resultados Label 1 Nombre Destino Asiento Comida

Text 1

End Sub Sub Form_Load () combo1.AddItem "Pars" combo1.AddItem "Mosc" combo1.AddItem "Nueva York" combo1.AddItem "Comales" combo1.AddItem "Daz Ordaz" combo1.AddItem "Monterrey" combo1.AddItem "Marn" combo2.AddItem "Pasillo" combo2.AddItem "Ventana" combo2.AddItem "Centro" combo3.AddItem "Pollo" combo3.AddItem "Vegetariano" combo3.AddItem "Diettico" combo3.AddItem "Yonk food" End Sub

NAME MULTILINE

SCROLL BARS

Label 1 Label 2 Label 3 Label 4 Label 5 Text 1

True

Both

CODIFICACION
Dim a$ Sub Command1_Click () 'El objetivo del programa en mostrar los ComboBox e impresin de resultados en una nueva forma. N$ = Chr$(13) + Chr$(10) a$ = a$ + Text1.Text + " " + combo1.Text + " " + combo2.Text + " " + combo3.Text + N$ form2.Text1.Text = a$ End Sub Sub Command2_Click () End End Sub Sub Command3_Click () 'Impresin de resultados en la Forma 2 form2.Show

COMENTARIOS La sentencia Dim a$ con que inicia la codificacin esta declarada en General recuerde este aspecto sealado en el programa 6 del captulo 1. Corra el programa y teclee un nombre y sus elecciones y de un clic en el botn Aceptar. Repita este procedimiento para varios nombres y posteriormente haga clic en el botn Resultados, observe como se presenta una relacin de nombres y sus elecciones en la forma dos.

Autor:Dr. Javier de Jess Corts Bracho

54

PROGRAMA 44: Cajas combinadas. Realice este programa que engloba lo visto en el presente captulo, corra el programa y observe como la presentacin de la hoja de resultados se ha mejorado en comparacin con el programa anterior mediante la asignacin de la informacin contenida en los ComboBox a los ListBox. PROPIEDADES
CAPTION NAME TEXT Cajas combinadas Destino Label 1 Preferencia de Label 2 asiento Preferencia de Label 3 comida Label 4 Label 4 NOMBRE Label 5 Combo 1 Pas Combo 2 Ventana Combo 3 Comida Aceptar Command 1 Cancelar Command 2 Resultados Command 3 Text 1 STYLE

ETIQUETA 4 ETIQUETA 5 LISTA 1 LISTA 2 LISTA 3 LISTA 4

Asiento Comida

Label 4 Label 5 List 1 List 2 List 3 List 4

CODIFICACION
Dim a$, b$, c$, d$ Sub Command1_Click () 'Asignacin de informacin de los ComboBox a los ListBox 'en la forma 2 a$ = Text1.Text b$ = combo1.Text c$ = combo2.Text d$ = combo3.Text form2.List1.AddItem a$ form2.List2.AddItem b$ form2.List3.AddItem c$

FORMA 1 ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 ETIQUETA 4 ETIQUETA 5 COMBO 1 COMBO 2 COMBO 3 BOTON 1 BOTON 2 BOTON 3 CAJA DE TEXTO

1 0 0

FORMA 2 ETIQUETA 2 ETIQUETA 3

CAPTION Resultados Nombre Destino

NAME Label 2 Label 3

Autor:Dr. Javier de Jess Corts Bracho

55

form2.List4.AddItem d$ End Sub Sub Command2_Click () End End Sub Sub Command3_Click () 'Muestra los resultados en la forma 2 form2.Show End Sub Sub Form_Load () combo1.AddItem "Pars" combo1.AddItem "Mosc" combo1.AddItem "Nueva York" combo1.AddItem "Comales" combo1.AddItem "Daz Ordaz" combo1.AddItem "Monterrey" combo1.AddItem "Marn" combo2.AddItem "Pasillo" combo2.AddItem "Ventana" combo2.AddItem "Centro" combo3.AddItem "Pollo" combo3.AddItem "Vegetariano" combo3.AddItem "Diettico" combo3.AddItem "Yonk food" End Sub

Autor:Dr. Javier de Jess Corts Bracho

56

LECTURA DE UNA SERIE DE DATOS INTRODUCCION En muchas situaciones, un programa de computadora es usado para realizar clculos con una serie de valores. El propsito de este captulo es presentar diferentes maneras de leer los datos que posteriormente sern procesados, se incluye aqu controles y sentencias que se han visto en captulos anteriores, adems de el uso de tablas de informacin mediante el control Rejilla (Grid) que permitir visualizar la serie de datos en filas y columnas.

CAJA DE TEXTO 2 BOTON 1 BOTON 2 CODIFICACION

Aadir Dato Calcular

CAPITULO 6 Text 2 Command 1 Command 2

'Declaracin de variables en General Dim X(20) Dim i, n As Integer Sub Command1_Click () 'Lectura de datos i=i+1 X(i) = Val(text1.Text) text1.Text = "" n=i text1.SetFocus End Sub Sub Command2_Click () 'Clculo de la Media Dim media, sum As Variant sum = 0 For i = 1 To n sum = sum + X(i) Next i media = sum / n text2.Text = Format$(media) End Sub

PROGRAMA 45: Clculo de la Media. Realice este programa en el cual mediante dos botones comando, uno para ir aadiendo la serie de observaciones y otro para calcular la media de dichas observaciones, muestra un ejemplo sencillo de introducir una serie de valores y hacer clculos con ellos. PROPIEDADES CAPTION Clculo de la Media Datos MEDIA NAME Label 1 Label 2 Text 1

FORMA ETIQUETA 1 ETIQUETA 2 CAJA DE TEXTO 1

Autor:Dr. Javier de Jess Corts Bracho

57

PROGRAMA 46: Clculo de la Media. Calcule nuevamente la media de una serie de observaciones, pero ahora usando una caja de texto y un botn comando. PROPIEDADES CAPTION Clculo de la Media Datos MEDIA NAME Label 1 Label 2 Text 1 Text 2 Command 2

FORMA ETIQUETA 1 ETIQUETA 2 CAJA DE TEXTO 1 CAJA DE TEXTO 2 BOTON 2 COMENTARIOS CODIFICACION Observe en la codificacin referente a la declaracin de variables en general, la proposicin Dim X(20), que especifica el nmero mximo de elementos (en este caso 20) del arreglo de la variable (X), que en trminos matemticos se refiere a una lista de valores con arreglo unidimencional llamado Vector. Al correr el programa cada valor que se de por medio de la caja de texto, tiene que ser aadido con el botn comando para que sea considerado en el clculo de la media. El procedimiento de clculo se ejecuta en el botn comando Calcular.

Calcular

'Declaracin de variables en General Dim X(20) Dim i, n As Integer Dim a$ Sub Command2_Click () 'Clculo de la Media Dim media, sum As Variant sum = 0 For i = 1 To n sum = sum + X(i) Next i media = sum / n text2.Text = Format$(media)

Autor:Dr. Javier de Jess Corts Bracho

58

End Sub

PROPIEDADES
Sub Text1_KeyPress (keyascii As Integer) 'Lectura de datos If keyascii <> 13 Then a$ = a$ + Chr$(keyascii) Else i=i+1 X(i) = Val(a$) a$ = "" text1.Text = "" n=i End If End Sub

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3 BOTON 2 CODIFICACION

CAPTION Clculo de la Media Datos MEDIA Total de datos, N=

NAME Label 1 Label 2 Label 3 Text 1 Text 2 Text 3 Command 2

Calcular

COMENTARIOS Corra el programa y teclee un valor en la caja de texto. Para que este valor sea considerado en el clculo, oprima la tecla ENTER, note como el cursor aparece nuevamente en la caja de texto esperando el siguiente dato, siga este procedimiento para completar toda la serie de observaciones y luego haga clic en el botn Calcular para obtener la media de las observaciones.

'Declaracin de variables en General Dim X(20) Dim i, N As Integer Dim a$ Sub Command2_Click () 'Clculo de la Media Dim media, sum As Variant N = Val(text3.Text) sum = 0 For i = 1 To N sum = sum + X(i) Next i media = sum / N text2.Text = Format$(media) End Sub

PROGRAMA 47: Clculo de la Media. Ahora defina el nmero total de observaciones al correr el programa.

Autor:Dr. Javier de Jess Corts Bracho

59

Sub Text1_KeyPress (keyascii As Integer) 'Lectura de datos If keyascii <> 13 Then a$ = a$ + Chr$(keyascii) Else i=i+1 X(i) = Val(a$) a$ = "" text1.Text = "" If i = Val(text3.Text) Then command2.SetFocus End If End If End Sub Sub Text3_Change () 'Nmero de observaciones End Sub

PROGRAMA 48: Clculo de la Media. En este programa se puede ir introduciendo la serie de datos y tener un control de los mismos mediante una etiqueta. PROPIEDADES CAPTION Clculo de la Media MEDIA N= NAME Label 1 Label 2 Label 3 Text 1 Text 2 Text 3 Command 2

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3 BOTON 2 CODIFICACION

Calcular

'Declaracin de variables en General Dim X(20) Dim I, N As Integer Dim a$ Sub Command2_Click () 'Clculo de la Media Dim media, sum As Variant N = Val(Text3.Text) sum = 0 For I = 1 To N

Autor:Dr. Javier de Jess Corts Bracho

60

sum = sum + X(I) Next I media = sum / N text2.Text = Format$(media) End Sub Sub Text1_KeyPress (KEYASCII As Integer) 'Lectura de datos y control de ellos mediante una etiqueta If KEYASCII <> 13 Then a$ = a$ + Chr$(KEYASCII) Else I=I+1 X(I) = Val(a$) a$ = "" TEXT1.Text = "" label1.Caption = " X(" + Format$(I + 1) + ")" If I = Val(Text3.Text) Then TEXT1.Text = "Datos ledos" command2.SetFocus label1.Caption = "" End If End If End Sub Sub Text3_KeyPress (KEYASCII As Integer) 'Nmero total de observaciones If KEYASCII = 13 Then label1.Caption = "X(1)" TEXT1.SetFocus End If End Sub

COMENTARIOS Corra el programa y observe como al dar el nmero total de observaciones (N) y luego presionar la tecla ENTER, el cursor est en la siguiente caja de texto esperando al primer valor de la serie de datos, note como aparece a manera de control la etiqueta X(1), teclee el valor y de ENTER, el cursor seguir en la caja de texto esperando al siguiente valor (X(2)), as sucesivamente hasta completar el total de los datos (datos ledos), calcule la media de las observaciones presionando ENTER o haciendo clic en el botn Clculo.

Autor:Dr. Javier de Jess Corts Bracho

61

PROGRAMA 49: Clculo de la Media. Observe en este programa como mediante una lista desplegable (ComboBox) es posible observar y tener control de la serie de valores. PROPIEDADES
CAPTION Clculo de la Media Valor de Nmero de Observaciones Media de las Observaciones X Desea el clculo de una nueva serie de datos? NAME Label 1 Label 2 Label 3 Label 4 Label 5 Text 1 Text 2 Datos Command 1 Command 2 Command 3 1 STYLE

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 ETIQUETA 4 ETIQUETA 5 CAJA DE TEXTO 1 CAJA DE TEXTO 2 COMBO BOTON 1 BOTON 2 BOTON 3

If KeyAscii = 13 Then If zzz = True Then Datos.RemoveItem zz Datos.AddItem Datos.Text, zz Else i=i+1 Datos.AddItem Datos.Text Datos.Text = "" a$ = "X(" + Format$(i) + ")" label1.Caption = a$ KeyAscii = 0 End If End If End Sub Sub Command1_Click () 'Clculo de la Media n = Val(TEXT1.Text) sum = 0 For i = 0 To n - 1 sum = sum + Val(Datos.List(i)) Next i media = sum / n TEXT2.Text = Format$(media) End Sub Sub Command2_Click () 'Limpieza del ComboBox, etiqueta y cajas de texto, para nueva serie de datos For i = 1 To n Datos.RemoveItem zz Next i tt = 1 label4.Caption = ""

Clculo de la Media SI NO

CODIFICACION
'Declaracin de variables en General Dim i, n, tt As Integer Dim a$ Sub Combo1_KeyPress (KeyAscii As Integer)

Autor:Dr. Javier de Jess Corts Bracho

62

TEXT2.Text = "" TEXT1.Text = "" TEXT1.SetFocus End Sub Sub Command3_Click () End End Sub Sub datos_Click () 'Lectura de datos zz = Datos.ListIndex End Sub Sub datos_KeyPress (KeyAscii As Integer) n = Val(TEXT1.Text) If KeyAscii = 13 Then tt = tt + 1 Datos.AddItem Datos.Text Datos.Text = "" label4.Caption = "X(" + Format$(tt) + ")" If tt = n + 1 Then label4.Caption = "Datos ledos" command1.SetFocus End If End If End Sub Sub Form_Load () tt = 1 End Sub Sub Text1_KeyPress (KeyAscii As Integer) 'Total de observaciones

If KeyAscii = 13 Then label4.Caption = "X(1)" Datos.SetFocus End If End Sub Sub Text2_Change () 'Resultado End Sub Sub x_Click () End Sub Sub x_KeyPress (KeyAscii As Integer) End Sub

COMENTARIOS Note que la propiedad Style del ComboBox tiene valor 1 que corresponde a una lista desplegable en la que los elementos siempre estn visibles (recuerde lo visto en el programa 42 del captulo anterior).

Autor:Dr. Javier de Jess Corts Bracho

63

con el icono de la barra de herramientas el cual va a permitir agrupar objetos relacionados entre s, en este caso la lectura de datos. Para esto dibuje sobre el Marco una Etiqueta, una Caja de Texto, un Botn Comando y una Rejilla (Grid), para esta ltima utilice de la barra de herramientas el icono siguientes propiedades. PROPIEDADES CAPTION Clculo de la Media N= Valor de la Media Leer Datos NAME OTROS y asigne las

FORMA El siguiente programa es una forma ms completa de leer una serie de datos, dado que no solamente se puede visualizar y controlar toda la serie, sino que tambin es posible su manipulacin, es decir, si se ocurre en un error, este dato puede ser seleccionado y borrado para escribir en su lugar el valor correcto, esto es posible mediante el uso de una tabla de informacin o Rejilla (Grid). ETIQUETA 1 ETIQUETA 2 FRAME GRID CAJA DE TEXTO 1 CAJA DE TEXTO 2 BOTON 1 BOTON 2

Label 1 Label 2 Frame 1 Grid 1 Text 1 Text 2

Cols 2; Rows10

PROGRAMA 50: Clculo de la Media. Dibuje sobre la Forma el control Marco o Caja de Grupo (Frame)

Continuar Calcular

Command 1 Command 2

Autor:Dr. Javier de Jess Corts Bracho

64

CODIFICACION
'Declaracin de variables en General Dim Z$ Dim n As Integer Sub Command1_Click () 'Asignacin de valores a la 1er columna fija del Grid n = Val(text1.Text) Grid1.Rows = n + 1 Grid1.SetFocus Grid1.Row = 1 Grid1.Cols = 2 For i = 1 To n Grid1.Row = i Grid1.Col = 0 Grid1.Text = "X(" + Format$(i) + ")" Next i Grid1.Row = 1 Grid1.Col = 1 Grid1.SetFocus End Sub Sub Command2_Click () Dim i As Integer Dim sumy, media As Double ReDim Y(n) As Double 'calcula la media de la variable If n = 0 Then MsgBox "Necesita datos" Exit Sub End If sumy = 0

'lee datos calcula suma For i = 1 To n Grid1.Row = i Grid1.Col = 1 Y(i) = Val(Grid1.Text) sumy = sumy + Y(i) Next i 'calcula media media = sumy / n text2.Text = Format$(media) End Sub Sub Frame1_DragDrop (Source As Control, X As Single, Y As Single) 'Marco que define la lectura de datos End Sub Sub Grid1_KeyPress (KeyAscii As Integer) 'Asignacin de valores a cada celda del Grid If KeyAscii <> 13 Then Z$ = Z$ + Chr$(KeyAscii) Grid1.Clip = Z$ Else MsgBox "Utilice las flechas para cambiar de celda" End If 'El KeyAscii=8 corresponde al BakeSpace para borrar datos equivocados If KeyAscii = 8 Then Z$ = "" Grid1.Clip = Z$ End If End Sub

Autor:Dr. Javier de Jess Corts Bracho

65

Sub Grid1_RowColChange () Z$ = "" End Sub

COMENTARIOS Observe las propiedades de la Rejilla (Grid) en relacin a el nmero de columnas (Cols 2) y al nmero de hileras (Rows 10) y note como al correr el programa, el cursor aparece esperando el nmero total de datos (N), si este valor supera a el nmero de hileras definido en las propiedades, automticamente aparecer una barra de desplazamiento vertical dentro de la Rejilla, que permitir visualizar el total de las observaciones. En una rejilla se puede tener dos clases de filas y columnas; fijas y no fijas. El color por defecto de las filas o columnas fijas es gris y el de las no fijas blanco. Observe en este programa como en la primer columna fija se ha diseado para el control de los datos. Las filas y las columnas son numeradas a partir de 0 comenzando por la esquina superior izquierda de la rejilla El control Rejilla visualiza la informacin en celdas. Una celda es la regin formada por la interseccin de una fila y una columna, el usuario puede situarse en una celda cualquiera haciendo clic sobre ella o utilizando las teclas de movimiento del cursor. Las propiedades Row y Col de la Rejilla (Grid.Row y Grid.Col) determinan cual es la celda activa de la rejilla. Durante la ejecucin se puede actuar con el ratn sobre las filas o columnas y modificar el tamao de las celdas. Para ello, site

el cursor del ratn sobre cualquier lnea divisoria y cuando cambie su aspecto, pulse el botn derecho y arrastre. Con el uso de una Rejilla y la codificacin apropiada, es posible corregir fcilmente un valor errneo, simplemente seleccinelo con el ratn o con las flechas de movimiento de cursor y oprima la tecla BakeSpace, luego escriba el nuevo valor.

PROGRAMA 51: Clculo de la Media. Tomando de base el programa anterior asigne el nombre de la variable a la serie de datos en la Rejilla, mediante un Frame y un InputBox.

Autor:Dr. Javier de Jess Corts Bracho

66

Exit Sub

PROPIEDADES
CAPTION Clculo de la Media N= Valor de la Media Si desea dar el nombre de la variable haga Leer Datos Doble Clic aqu NAME Label 1 Label 2 Label 3 Frame 1 Frame 2 Grid 1 Text 1 Text 2 Calcular Command 2 OTROS

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 FRAME FRAME GRID CAJA DE TEXTO 1 CAJA DE TEXTO 2 BOTON 2

Cols 2; Rows10

End If sumy = 0 'lee datos y calcula la suma For i = 1 To n Grid1.Row = i Grid1.Col = 1 Y(i) = Val(Grid1.Text) sumy = sumy + Y(i) Next i 'calcula media media = sumy / n text2.Text = Format$(media) End Sub Sub Frame2_DblClick () 'Al ejecutarse pedir el nombre de la variable y lo asignar al Grid q$ = InputBox("Nombre de la variable") Grid1.Row = 0 Grid1.Col = 1 Grid1.Text = q$ End Sub Sub Grid1_KeyPress (keyascii As Integer) 'Asignacin de valores al Grid If keyascii <> 13 Then Z$ = Z$ + Chr$(keyascii) Grid1.Clip = Z$ Else MsgBox "Utilice las flechas para cambiar de celda" End If If keyascii = 8 Then

CODIFICACION
'Declaracin de variables en General Dim Z$, q$ Dim n As Integer Sub Command2_Click () Dim i As Integer Dim sumy, media As Double ReDim Y(n) As Double 'calcula la media de la variable If n = 0 Then MsgBox "Necesita datos"

Autor:Dr. Javier de Jess Corts Bracho

67

Z$ = "" Grid1.Clip = Z$ End If End Sub Sub Grid1_RowColChange () Z$ = "" End Sub Sub Text1_KeyPress (keyascii As Integer) 'Asignacin de valores a la Hilera y Columna fija If keyascii = 13 Then n = Val(Text1.Text) Grid1.SetFocus Grid1.Row = 0 Grid1.Col = 1 Grid1.ColWidth(1) = 5000 'Amplia la columna 1 Grid1.Text = q$ Grid1.Rows = n + 1 Grid1.Row = 1 Grid1.Cols = 2 For i = 1 To n Grid1.Row = i Grid1.Col = 0 Grid1.Text = "X(" + Format$(i) + ")" Next i Grid1.Row = 1 Grid1.Col = 1 Grid1.SetFocus End If End Sub

Note dentro de la codificacin la propiedad ColWidth que determina el ancho de la columna especificada.

COMENTARIOS

Autor:Dr. Javier de Jess Corts Bracho

68

CAPITULO 7 PROCEDIMIENTOS Y FUNCIONES Programa 52: Diferentes formatos de fechas y horas. INTRODUCCIN Visual Basic provee funciones con las que se pueden hacer operaciones aritmticas y comparaciones, tal es el caso de los formatos de fechas y horas. Adems se ha visto que la base de una aplicacin en Visual Basic, la forman sus procedimientos conducidos por sucesos (recuerde que un procedimiento conducido por un suceso es el cdigo que es invocado cuando un objeto reconoce que ha ocurrido un determinado suceso). Cuando varios procedimientos conducidos por sucesos necesitan ejecutar un mismo proceso la mejor forma de proceder es colocar el cdigo comn en un procedimiento general, que ser invocado desde cada procedimiento por un suceso que necesite ejecutar dicho cdigo. De esta forma se elimina la necesidad de duplicar cdigo. Un procedimiento general es invocado cuando se hace una llamada explcita al mismo. Un procedimiento general puede escribirse como procedimiento Sub o como una Funcin (Function). Un procedimiento conducido por un suceso siempre es un procedimiento Sub. Estos tpicos sern tratados en el presente captulo iniciando con ejemplos de operaciones con funciones, principalmente de los formatos de fechas y horas y posteriormente programas que tienen procedimientos en general. En primer lugar, en este programa se usa la funcin Format$ para dar a conocer los diferentes formatos de fecha y hora que reconoce Visual Basic, algunos de ellos ya fueron usados en los programas 6 y 7 del captulo 1. PROPIEDADES CAPTION NAME Diferentes formatos de fechas y horas Mostrar fecha y hora Command 1 Text 1 Text 2 Text 3 Text 4 Text 5 Text 6 Text 7 Text 8 Text 9

FORMA BOTON COMANDO CAJA DE TEXTO 1 CAJA DE TEXTO 2 CAJA DE TEXTO 3 CAJA DE TEXTO 4 CAJA DE TEXTO 5 CAJA DE TEXTO 6 CAJA DE TEXTO 7 CAJA DE TEXTO 8 CAJA DE TEXTO 9 CODIFICACIN

Sub Command1_Click () Text1.Text = Format$(Date, "d/m/yy") Text2.Text = Format$(Date, "d-mmmm-yy")

Autor: Dr. Javier de J. Corts Bracho

69

Text3.Text = Format$(Date, "d-mmmm") Text4.Text = Format$(Date, "mmmm-yy") Text5.Text = Format$(Now, "hh:mm") Text6.Text = Format(Now, "h:mm") Text7.Text = Time Text8.Text = Format$(Date, "dddd dd-mmmm-yyyy") Text9.Text = Format$(Now, "hh:mm:ss AM/PM") End Sub

Programa 53: Convertir un nmero a fecha. PROPIEDADES


FORMA BOTON COMANDO ETIQUETA 1 ETIQUETA 2 CAJA DE TEXTO 1 CAPTION Nmero convertido a fecha Cambiar el nmero a fecha Escriba un nmero Fecha NAME Command 1 Label 1 Label 2 Text 1

CODIFICACION
Sub Command1_Click () 'CvDate regresa la fecha de un nmero dado a = CvDate(text1.Text) text2.Text = Format(a) End Sub

COMENTARIOS: En este programa se utiliz la funcin CvDate, la cual convierte un valor a fecha. El valor en la caja de texto representa el nmero de das que han transcurrido desde el 31de Diciembre de 1899.

Autor: Dr. Javier de J. Corts Bracho

70

Programa 54: Diferencia entre dos fechas. PROPIEDADES En muchas reas de la ciencia es frecuente contabilizar los das entre dos fechas, este programa muestra esta operacin con el uso de la funcin DateDiff. PROPIEDADES
CAPTION FORMA Diferencia entre dos fechas BOTON COMANDO Calcular diferencia ETIQUETA 1 Fecha ETIQUETA 2 Diferencia en das de la fecha dada al da de hoy CAJA DE TEXTO 1 CAJA DE TEXTO 2 NAME Command 1 Label 1 Label 2 Text 1 Text 2 CAPTION Cambia la fecha del sistema Si No Desea cambiar sistema? la fecha NAME Command 1 Command 2 del Label 1

FORMA BOTON COMANDO 1 BOTON COMANDO 2 ETIQUETA 1

CODIFICACION
Sub Command1_Click () Dim default, Msg, NewDate 'Declara variables Msg = "Escriba una fecha en la forma: mm-dd-yyyy" default = Date 'Fecha actual. NewDate = InputBox(Msg, " ", default) 'Lee fecha nueva. If Len(NewDate) > 0 Then 'Checa si es vlida. Date = NewDate Pone la nueva fecha Msg = "Fecha del sistema puesta a:" Msg = Msg & Format(DateValue(NewDate), "dddd,mmmm d, yyyy") Else Msg = "No modific la fecha del sistema." End If MsgBox Msg 'Muestra mensaje. End Sub Sub Command2_Click () default = Date Msg = "Fecha del sistema"

CODIFICACION
Sub Command1_Click () 'Diferencia entre fechas Text2.Text = Format$(DateDiff("d", Text1.Text, Now)) End Sub

Programa 55: Cambiar la fecha del sistema. Dentro de Visual Basic usted puede modificar la fecha que tiene su sistema. Esto es posible mediante el siguiente programa, note que se han usado funciones ya vistas, como MsgBox, InputBox, etc.

Autor: Dr. Javier de J. Corts Bracho

71

Msg = Msg & Format(DateValue(default)) MsgBox Msg 'Muestra el mensaje End Sub

Ahora, en los siguientes programas, a diferencia de los anteriores se utilizar un procedimiento general que tendr un cdigo que podr ser usado en otro procedimiento particular. Al dar clic en el botn OK aparecer una ventana con el objeto general y procedimiento mensaje. Teclee la codificacin que le corresponde.

Programa 56: Ejemplo 1 de un procedimiento o subrutina. Abra una forma, dibuje los siguientes controles y asigne las propiedades que se indican. PROPIEDADES CAPTION NAME Ejemplo 1 de un procedimiento o subrutina Mostrar Command 1 Text 1

FORMA BOTON COMANDO 1 CAJA DE TEXTO

De un doble clic en la forma y mediante el men View seleccione New Procedure. Aparecer una ventana que indicar el tipo y nombre del procedimiento que va a realizar, seleccione Sub y de el nombre mensaje.

CODIFICACION

Autor: Dr. Javier de J. Corts Bracho

72

Sub Command1_Click () 'Ejecucin del Procedimiento mensaje End Sub Sub mensaje () 'Este Procedimiento fue creado con New Procedure del men View Text1.Text = "Ejemplo de un Procedimiento" End Sub

En este programa desarrolle dos procedimientos nuevos o subrutinas (mensaje y proc2). Recuerde la forma de hacerlo, tal como se vio en el programa anterior.

COMENTARIOS: Observe al correr el programa como la codificacin de la subrutina mensaje (Procedimiento general) es ejecutada en el botn comando (procedimiento particular).

CODIFICACION
Sub Command1_Click () 'Ejecucin del Procedimiento Proc2 Proc2 End Sub Sub Mensaje () 'La subrutina Mensaje, Creada con New Procedure asigna un letrero a la caja de texto 1 Text1.Text = "Ejemplo de un Procedimiento" End Sub Sub Proc2 () 'Este Procedimiento ejecuta la subrutina Mensaje Mensaje End Sub

Programa 57: Ejemplo 2 de un procedimiento o subrutina. PROPIEDADES


CAPTION NAME FORMA Ejemplo 2 de un procedimiento o subrutina BOTON COMANDO Mostrar Command 1 1 CAJA DE TEXTO Text 1 ETIQUETA Ejemplo de un procedimiento que Label 1 llama a otro procedimiento

Autor: Dr. Javier de J. Corts Bracho

73

COMENTARIOS: Note en la codificacin como la subrutina o procedimiento mensaje se ejecuta en el procedimiento Proc2 y a su vez, el procedimiento Proc2, es ejecutado en el botn comando.

Sub Imprime (A) 'Procedimiento creado con New Procedure del men View For i = 1 To A Print Tab(65); i Next i End Sub

Programa 58: Ejemplo 3 de un procedimiento o subrutina. Realice ahora el procedimiento o subrutina Imprime PROPIEDADES
CAPTION NAME FORMA Ejemplo 3 de un procedimiento BOTON COMANDO Mostrar Command 1 1 CAJA DE TEXTO Text 1 ETIQUETA 1 Ejemplo de un procedimiento que Label 1 pasa un parmetro ETIQUETA 2 Escriba un entero Label 2

COMENTARIOS: Observe como en la codificacin en el procedimiento Imprime se ha incluido el parmetro A (Imprime (A)), el cual est definido en el cdigo del botn comando. Corra el programa para un parmetro A=20 (asignado en la caja de texto)

CODIFICACION
Sub Command1_Click () 'Ejecuta el Procedimiento "Imprime" e Imprime en la forma Dim A As Integer A = Val(Text1.Text) Imprime (A) End Sub

Autor: Dr. Javier de J. Corts Bracho

74

Programa 59: Ejemplo 4 de un procedimiento o subrutina. PROPIEDADES


CAPTION Ejemplo 4 de un procedimiento Suma de valores del vector b Suma de valores del vector c NAME Command 1 Command 2

c(1) = 5 c(2) = 7 c(3) = 3 c(4) = 1 Suma c() End Sub Sub Suma (A()) 'Nuevo Procedimiento "Suma" Dim Z As Variant Z = A(1) + A(2) + A(3) + A(4) Text1.Text = Format$(Z) End Sub

FORMA BOTON COMANDO 1 BOTON COMANDO 2 CAJA DE TEXTO ETIQUETA 1 ETIQUETA 2 ETIQUETA 3

Text 1 Ejemplo de un procedimiento que Label 1 pasa un vector B = [3,5,6,8] Label 2 C = [5,7,3,1] Label 3

COMENTARIOS: Observe en el programa como se llama al procedimiento (Suma A()), escribiendo el nombre del procedimiento y el vector con parntesis abierto y cerrado: Suma b(), Suma c().

CODIFICACION
Dim A(4) As Integer Sub Command1_Click () 'Ejecuta el Procedimiento Suma ReDim b(4) b(1) = 3 b(2) = 5 b(3) = 6 b(4) = 8 Suma b() End Sub Sub Command2_Click () ReDim c(4)

Autor: Dr. Javier de J. Corts Bracho

75

Dim A As Variant

Los siguientes programas mostraran como crear Funciones las cuales se utilizan cuando se desea obtener un valor el cual se calcula en un procedimiento general.

Programa 60: Factorial de un nmero calculado mediante una funcin. PROPIEDADES


CAPTION NAME FORMA Factorial de un nmero BOTON COMANDO Calcular Command 1 1 CAJA DE TEXTO 1 Text 1 CAJA DE TEXTO 2 Text 2 ETIQUETA 1 Ejemplo de una funcin (calcula el Label 1 factorial de un nmero) ETIQUETA 2 Escriba un nmero entero Label 2 ETIQUETA 3 El factorial del nmero es: Label 3

A = Fac(Val(text1.Text)) Text2.Text = Format$(A) End Sub Function Fac (B As Integer) 'Funcin Fac creada con New Procedure del Men View Dim i As Integer Dim Z As Variant Z=1 For i = 1 To B

Para crear la funcin general, de un doble clic en la forma y mediante el men View seleccione New Procedure. Aparecer una ventana que indicar el tipo y nombre del procedimiento que se va a realizar, seleccione Function y escriba el nombre de la funcin: Fac. CODIFICACION
Sub Command1_Click () 'Ejecucin de la Funcin Fac

Autor: Dr. Javier de J. Corts Bracho

76

Z=Z*i Next i Fac = Z End Function

PROGRAMA 61: Funcin Integral de la Normal Estndar. Es comn en Inferencia Estadstica encontrar el rea que esta integrada hasta un valor dado (Z) bajo la curva de una distribucin normal estndar.

COMENTARIOS Note que en la funcin Fac se encuentra definido el parmetro B como entero (Fac(B As Integer)) y que es usado en el cdigo de la funcin, dicho parmetro adquiere su valor en el cdigo del Botn Comando mediante la Caja de Texto 1 (Fac(Val(Text1.Text))).

Mediante este programa es posible encontrar dicho valor creando la funcin Z

PROPIEDADES
CAPTION NAME FORMA Funcin Integral de la Normal Estndar ETIQUETA 1 Valor de Z Label 1 ETIQUETA 2 Area bajo la curva normal estndar Label 2 hasta Z ETIQUETA 3 Area bajo la curva normal estndar Label 3 desde 0 a Z CAJA DE TEXTO Text 1 1 CAJA DE TEXTO Text 2 2 CAJA DE TEXTO Text 3 3 BOTON Calcular Command1 COMANDO

Autor: Dr. Javier de J. Corts Bracho

77

CODIFICACION

If keyascii = 13 Then command1.SetFocus End If End Sub Function z (x As Double) As Double z = (1 / Sqr(2 * 3.1415926536)) * Exp(-x * x / 2) End Function

Sub Command1_Click () Dim Aux As Double Dim Suma As Double B = Val(text1.Text) A = -15 n = 2000 h = (B + 15) / n i=0 Suma = 0 For i = 1 To n Aux = (A + (i - .5) * h) Suma = Suma + z(Aux) Next i Integra = h * Suma Text2.Text = Integra Text3.Text = Format$(Integra - .5) End Sub Sub Text1_KeyPress (keyascii As Integer)

Autor: Dr. Javier de J. Corts Bracho

78

ARCHIVOS DE DATOS INTRODUCCION Muchas aplicaciones requieren almacenar y recuperar datos de una sesin a otra. Los archivos de datos permiten almacenar informacin que el usuario introduce a travs de una caja de dilogo y por lo tanto, son tambin la fuente de informacin para visualizar datos sobre una forma o para escribir datos en una impresora. Un archivo de datos se almacena como un fichero separado en el disco; esto es, un archivo independiente de los que almacenan la aplicacin. En este captulo se analizar como guardar y leer archivos de datos de tipo Secuencial y Aleatorio.

CAPITULO 8 secuencial no son los ms apropiados para almacenar grandes series de nmeros, porque cada nmero entero de cinco dgitos ocupa cinco bytes, en lugar de los dos requeridos para un entero.

PROGRAMA 62: Clculo de la Media (Datos en archivo secuencial). PROPIEDADES


CAPTION Clculo de la Media (Datos en archivo secuencial) N= Valor de la Media Si desea dar el nombre de la variable haga Leer Datos Doble Clic aqu NAME OTROS

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 FRAME 1 FRAME 2 GRID CAJA DE TEXTO 1 CAJA DE TEXTO 2 BOTON 2 MENU

Label 1 Label 2 Label 3 Frame 1 Frame 2 Grid 1 Text 1 Text 2

ARCHIVO SECUENCIAL Es el tipo de acceso ms simple a un archivo de datos, puede almacenar registros de cualquier longitud. Cuando la informacin se escribe registro a registro, estos son clocados uno a continuacin de otro y cuando se lee, se empieza por el primer registro y se continua al siguiente hasta alcanzar el final. Generalmente se utilizan como archivos de texto en los que se escribe toda la informacin desde el principio hasta el final y se lle de la misma forma. Los archivos abiertos para acceso

Cols 2; Rows 10

Calcular Grabar datos

Command 2 Grabar

Autor: Dr. Javier de J. Corts Bracho

79

Para crear el objeto MENU haga clic en el icono de la barra de herramientas, aparecer una ventana de Diseo de Men (Menu Design Window) escriba las propiedades de Caption y Name. Observe como despus de hacer clic en el botn OK de la ventana de Diseo de Men, aparecer en la forma Grabar datos como men. De un clic en este nombre para que anote la codificacin que le corresponde (Procedimiento Grabar_Click ())

CODIFICACION
Dim Z$, q$ Dim n As Integer Sub Command2_Click () Dim i As Integer Dim sumy, media As Double ReDim Y(n) As Double 'calcula la media de la variable If n = 0 Then MsgBox "Necesita datos" Exit Sub End If sumy = 0 'lee datos y calcula la suma For i = 1 To n Grid1.Row = i

Autor: Dr. Javier de J. Corts Bracho

80

Grid1.Col = 1 Y(i) = Val(Grid1.Text) sumy = sumy + Y(i) Next i 'calcula media media = sumy / n text2.Text = Format$(media) End Sub Sub Frame2_DblClick () 'Al ejecutarse pedir el nombre de la variable y lo asignar al Grid q$ = InputBox("Nombre de la variable") Grid1.Row = 0 Grid1.Col = 1 Grid1.Text = q$ End Sub Sub grabar_Click () 'Graba los datos en disco en la unidad "a" con el nombre "qqq.dat" If n = 0 Then MsgBox "Necesita datos" Exit Sub End If Archivo$ = "a:qqq.dat" Open Archivo$ For Output As #1 Print #1, n For i = 1 To n Grid1.Row = i Grid1.Col = 1 Print #1, Val(Grid1.Text) Next i Close #1

End Sub Sub Grid1_KeyPress (keyascii As Integer) 'Asignacin de valores al Grid If keyascii <> 13 Then Z$ = Z$ + Chr$(keyascii) Grid1.Clip = Z$ Else MsgBox "Utilice las flechas para cambiar de celda" End If If keyascii = 8 Then Z$ = "" Grid1.Clip = Z$ End If End Sub Sub Grid1_RowColChange () Z$ = "" End Sub Sub Text1_KeyPress (keyascii As Integer) 'Asignacin de valores a la Hilera y Columna fija If keyascii = 13 Then n = Val(Text1.Text) Grid1.SetFocus Grid1.Row = 0 Grid1.Col = 1 Grid1.ColWidth(1) = 5000 'Amplia la columna 1 Grid1.Text = q$ Grid1.Rows = n + 1 Grid1.Row = 1 Grid1.Cols = 2 For i = 1 To n

Autor: Dr. Javier de J. Corts Bracho

81

Grid1.Row = i Grid1.Col = 0 Grid1.Text = "X(" + Format$(i) + ")" Next i Grid1.Row = 1 Grid1.Col = 1 Grid1.SetFocus End If End Sub

ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 FRAME 1 FRAME 2 GRID CAJA DE TEXTO 1 CAJA DE TEXTO 2 BOTON 2 MENU MENU

archivo secuencial) N= Label 1 Valor de la Media Label 2 Si desea dar el nombre de la Label 3 variable haga Leer Datos Frame 1 Doble Clic aqu Frame 2 Grid 1 Text 1 Text 2 Calcular Grabar datos Leer datos Command 2 Grabar Leer

Cols 2; Rows 10

COMENTARIOS Para guardar los datos utilizados en disco despus de correr el programa, asegure que exista disco en la unidad a luego de clic en el men Guardar datos. Los datos son almacenados en un archivo con el nombre qqq.dat. Donde el primer valor guardado es el nmero total de datos (N) y despus cada uno de los valores en el orden que tienen en el Grid.

PROGRAMA 63: Clculo de la Media (Datos en archivo secuencial). Ahora en este programa realice un men para grabar y otro para leer datos de disco, utilice la ventana de Diseo de Men como se describe en el programa anterior.

PROPIEDADES
FORMA CAPTION Clculo de la Media (Datos en NAME OTROS

CODIFICACION

Autor: Dr. Javier de J. Corts Bracho

82

Dim Z$, q$ Dim n As Integer Sub Command2_Click () Dim i As Integer Dim sumy, media As Double ReDim Y(n) As Double 'calcula la media de la variable If n = 0 Then MsgBox "Necesita datos" Exit Sub End If sumy = 0 'lee datos y calcula la suma For i = 1 To n Grid1.Row = i Grid1.Col = 1 Y(i) = Val(Grid1.Text) sumy = sumy + Y(i) Next i 'calcula media media = sumy / n text2.Text = Format$(media) End Sub Sub Frame2_DblClick () 'Al ejecutarse pedir el nombre de la variable y lo asignar al Grid q$ = InputBox("Nombre de la variable") Grid1.Row = 0 Grid1.Col = 1 Grid1.Text = q$ End Sub

Sub grabar_Click () 'Graba los datos en la unidad "a" con el nombre "qqq.dat" If n = 0 Then MsgBox "Necesita datos" Exit Sub End If Archivo$ = "a:qqq.dat" Open Archivo$ For Output As #1 Print #1, n For i = 1 To n Grid1.Row = i Grid1.Col = 1 Print #1, Val(Grid1.Text) Next i Close #1 End Sub Sub Grid1_KeyPress (keyascii As Integer) 'Asignacin de valores al Grid If keyascii <> 13 Then Z$ = Z$ + Chr$(keyascii) Grid1.Clip = Z$ Else MsgBox "Utilice las flechas para cambiar de celda" End If If keyascii = 8 Then Z$ = "" Grid1.Clip = Z$ End If End Sub Sub Grid1_RowColChange () Z$ = ""

Autor: Dr. Javier de J. Corts Bracho

83

End Sub Sub Leer_Click () 'Lee los datos del archivo "qqq.dat" de la unidad "a" Dim Num As String Dim i As Integer Archivo$ = "a:qqq.dat" Open Archivo$ For Input As #2 Line Input #2, Num n = Val(Num) Text1.Text = Num Grid1.Rows = n + 1 For i = 1 To n Grid1.Row = i Grid1.Col = 1 Line Input #2, Num Grid1.Text = Num Next i Close #2 End Sub Sub Text1_KeyPress (keyascii As Integer) 'Asignacin de valores a la Hilera y Columna fija If keyascii = 13 Then n = Val(Text1.Text) Grid1.SetFocus Grid1.Row = 0 Grid1.Col = 1 Grid1.ColWidth(1) = 5000 'Amplia la columna 1 Grid1.Text = q$ Grid1.Rows = n + 1 Grid1.Row = 1 Grid1.Cols = 2 For i = 1 To n

Grid1.Row = i Grid1.Col = 0 Grid1.Text = "X(" + Format$(i) + ")" Next i Grid1.Row = 1 Grid1.Col = 1 Grid1.SetFocus End If End Sub

COMENTARIOS Nuevamente en este programa el archivo que almacena los datos es qqq.dat en la unidad a y de igual forma este mismo archivo se utiliza para leer los datos de disco, si ha guardado los datos del programa 62, corra el programa 63 y de un clic en Leer datos para que observe como la informacin que guardo en el programa anterior es leda y asignada a el Grid en este programa.

PROGRAMA 64: Clculo de la Media (Datos en archivo secuencial). Ahora podr elegir el nombre del archivo de datos a guardar, lo cual es posible por un CommonDialog. Utilice el icono de la barra de herramientas para dibujarlo en la forma.

PROPIEDADES

Autor: Dr. Javier de J. Corts Bracho

84

Exit Sub
FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3 FRAME 1 FRAME 2 GRID CAJA DE TEXTO 1 CAJA DE TEXTO 2 BOTON 2 MENU COMMON DIALOG CAPTION Clculo de la Media (Datos en archivo secuencial) N= Valor de la Media Si desea dar el nombre de la variable haga Leer Datos Doble Clic aqu NAME OTROS

Label 1 Label 2 Label 3 Frame 1 Frame 2 Grid 1 Text 1 Text 2

Cols 2; Rows 10

End If sumy = 0 'lee datos y calcula la suma For i = 1 To n Grid1.Row = i Grid1.Col = 1 Y(i) = Val(Grid1.Text) sumy = sumy + Y(i) Next i 'calcula media media = sumy / n text2.Text = Format$(media) End Sub Sub Frame2_DblClick () 'Al ejecutarse pedir el nombre de la variable y lo asignar al Grid q$ = InputBox("Nombre de la variable") Grid1.Row = 0 Grid1.Col = 1 Grid1.Text = q$ End Sub Sub grabar_Click () 'Graba los datos en disco, es posible dar en nombre y ruta de destino del archivo CmDialog1.Filter = "Datos (*.dat)|*.dat |Todos los archivos(*.*)|*.*| " CmDialog1.CancelError = False CmDialog1.Action = 2 On Error GoTo Aguas Archivo$ = CmDialog1.Filetitle If n = 0 Then

Calcular Grabar datos

Command 2 Grabar CmDialog 1

CODIFICACION
Dim Z$, q$ Dim n As Integer Sub Command2_Click () Dim i As Integer Dim sumy, media As Double ReDim Y(n) As Double 'calcula la media de la variable If n = 0 Then MsgBox "Necesita datos"

Autor: Dr. Javier de J. Corts Bracho

85

MsgBox "Necesita datos" Exit Sub End If Open Archivo$ For Output As #1 Print #1, n For i = 1 To n Grid1.Row = i Grid1.Col = 1 Print #1, Val(Grid1.Text) Next i Close #1 Exit Sub Aguas: MsgBox "Datos no grabados", 64, "CUIDADO" Exit Sub End Sub Sub Grid1_KeyPress (keyascii As Integer) 'Asignacin de valores al Grid If keyascii <> 13 Then Z$ = Z$ + Chr$(keyascii) Grid1.Clip = Z$ Else MsgBox "Utilice las flechas para cambiar de celda" End If If keyascii = 8 Then Z$ = "" Grid1.Clip = Z$ End If End Sub Sub Grid1_RowColChange () Z$ = ""

End Sub Sub Text1_KeyPress (keyascii As Integer) 'Asignacin de valores a la Hilera y Columna fija If keyascii = 13 Then n = Val(Text1.Text) Grid1.SetFocus Grid1.Row = 0 Grid1.Col = 1 Grid1.ColWidth(1) = 5000 'Amplia la columna 1 Grid1.Text = q$ Grid1.Rows = n + 1 Grid1.Row = 1 Grid1.Cols = 2 For i = 1 To n Grid1.Row = i Grid1.Col = 0 Grid1.Text = "X(" + Format$(i) + ")" Next i Grid1.Row = 1 Grid1.Col = 1 Grid1.SetFocus End If End Sub

COMENTARIOS Observe como el objeto CommonDialog nicamente esta visible en la forma antes de correr el programa y note en la codificacin del procedimiento o subrutina grabar_Click () como el CmDialog permite dar un nombre de archivo, sugiriendo la extensin .dat. Si da clic en el men Grabar datos, aparecer una ventana o caja de dialogo para que el usuario no solamente

Autor: Dr. Javier de J. Corts Bracho

86

de el nombre del archivo sino tambin en que directorio y unidad de disco lo quiere guardar, lo cual corresponde a CmDialog1.Action = 2 que implica: Guardar como.

FRAME 1 FRAME 2 GRID CAJA DE TEXTO 1 CAJA DE TEXTO 2 BOTON 2 MENU MENU COMMON DIALOG

variable haga Leer Datos Doble Clic aqu

Frame 1 Frame 2 Grid 1 Text 1 Text 2

Cols 2; Rows 10

Calcular Grabar datos Leer datos

Command 2 Grabar Leer CmDialog 1

CODIFICACION
Dim Z$, q$ Dim n As Integer Sub Command2_Click () Dim i As Integer Dim sumy, media As Double ReDim Y(n) As Double 'calcula la media de la variable If n = 0 Then MsgBox "Necesita datos" Exit Sub End If sumy = 0 'lee datos y calcula la suma For i = 1 To n Grid1.Row = i Grid1.Col = 1

PROGRAMA 65 : Clculo de la Media (Datos en archivo secuencial). En este programa realice los mens Grabar y Leer datos y utilice el CmDialog para dar el nombre y ruta del archivo a grabar o leer. PROPIEDADES
CAPTION NAME Clculo de la Media (Datos en archivo secuencial) N= Label 1 Valor de la Media Label 2 Si desea dar el nombre de la Label 3 OTROS

FORMA ETIQUETA 1 ETIQUETA 2 ETIQUETA 3

Autor: Dr. Javier de J. Corts Bracho

87

Y(i) = Val(Grid1.Text) sumy = sumy + Y(i) Next i 'calcula media media = sumy / n text2.Text = Format$(media) End Sub Sub Frame2_DblClick () 'Al ejecutarse pedir el nombre de la variable y lo asignar al Grid q$ = InputBox("Nombre de la variable") Grid1.Row = 0 Grid1.Col = 1 Grid1.Text = q$ End Sub Sub grabar_Click () 'Guarda los datos en un archivo al que se le pude dar nombre y ruta CmDialog1.Filter = "Datos (*.dat)|*.dat |Todos los archivos(*.*)|*.*| " CmDialog1.CancelError = False CmDialog1.Action = 2 On Error GoTo Aguas Archivo$ = CmDialog1.Filetitle If n = 0 Then MsgBox "Necesita datos" Exit Sub End If Open Archivo$ For Output As #1 Print #1, n For i = 1 To n Grid1.Row = i

Grid1.Col = 1 Print #1, Val(Grid1.Text) Next i Close #1 Aguas: MsgBox "Datos no grabados", 16, "Precaucin" Exit Sub End Sub Sub Grid1_KeyPress (keyascii As Integer) 'Asignacin de valores al Grid If keyascii <> 13 Then Z$ = Z$ + Chr$(keyascii) Grid1.Clip = Z$ Else MsgBox "Utilice las flechas para cambiar de celda" End If If keyascii = 8 Then Z$ = "" Grid1.Clip = Z$ End If End Sub Sub Grid1_RowColChange () Z$ = "" End Sub Sub Leer_Click () 'Lee los datos de un archivo, se especifica nombre y ruta de acceso Dim Num As String Dim i As Integer

Autor: Dr. Javier de J. Corts Bracho

88

CmDialog1.Filter = "Datos (*.dat)|*.dat |Todos los archivos(*.*)|*.*| " CmDialog1.CancelError = False CmDialog1.Action = 1 On Error GoTo Aguas2 Archivo$ = CmDialog1.Filetitle Open Archivo$ For Input As #2 Line Input #2, Num n = Val(Num) Text1.Text = Num Grid1.Rows = n + 1 For i = 1 To n Grid1.Row = i Grid1.Col = 1 Line Input #2, Num Grid1.Text = Num Next i Close #2 Exit Sub Aguas2: MsgBox "Datos no ledos", 64, "Intente de nuevo" Exit Sub End Sub Sub Text1_KeyPress (keyascii As Integer) 'Asignacin de valores a la Hilera y Columna fija If keyascii = 13 Then n = Val(Text1.Text) Grid1.SetFocus Grid1.Row = 0 Grid1.Col = 1 Grid1.ColWidth(1) = 5000 'Amplia la columna 1 Grid1.Text = q$ Grid1.Rows = n + 1

Grid1.Row = 1 Grid1.Cols = 2 For i = 1 To n Grid1.Row = i Grid1.Col = 0 Grid1.Text = "X(" + Format$(i) + ")" Next i Grid1.Row = 1 Grid1.Col = 1 Grid1.SetFocus End If End Sub

COMENTARIOS Observe en la codificacin como el CmDialog1.Action = 2 corresponde a Guardar como, mientras que el CmDialog1.Action = 1 a Abrir que implica una ventana o caja de dialogo donde se visualiza que archivos se tienen, en que directorios y en que unidad de disco, para seleccionar de ah el que se quiera leer.

Autor: Dr. Javier de J. Corts Bracho

89

PROGRAMA 66: Clculo de la Media (Datos en archivo secuencial). En este programa utilice el icono para dibujar sobre la forma dos SSCOMMAND y en la propiedad Picture de cada uno de ellos seleccione del directorio C:\vb\icons\computer el archivo disk04.ico para hacer el icono de grabar datos en disco y del directorio C:\vb\icons\office el archivo files04.ico par hacer el icono de leer datos. PROPIEDADES
CAPTION NAME Clculo de la Media (Datos en archivo secuencial) N= Label 1 Valor de la Media Label 2 Leer Datos Frame 1 Grid 1 Text 1 Text 2 Calcular Command 2 Grabar Leer CmDialog 1 Command 3D1 Command OTROS

3D2

Icon

FORMA ETIQUETA 1 ETIQUETA 2 FRAME 1 GRID CAJA DE TEXTO 1 CAJA DE TEXTO 2 BOTON 2

Cols 2; Rows 10

CODIFICACION
Dim Z$, q$ Dim n As Integer Sub Command2_Click () Dim i As Integer Dim sumy, media As Double ReDim Y(n) As Double 'calcula la media de la variable If n = 0 Then MsgBox "Necesita datos" Exit Sub End If sumy = 0

MENU &Grabar datos MENU &Leer datos COMMON DIALOG SSCOMMAND 1 SSCOMMAND

Picture = Icon Picture =

Autor: Dr. Javier de J. Corts Bracho

90

'lee datos y calcula la suma For i = 1 To n Grid1.Row = i Grid1.Col = 1 Y(i) = Val(Grid1.Text) sumy = sumy + Y(i) Next i 'calcula media media = sumy / n text2.Text = Format$(media) End Sub Sub Command3D1_Click () 'Guarda los datos en un archivo al que se le pude dar nombre y ruta 'MEDIANTE UN ICONO CmDialog1.Filter = "Datos (*.dat)|*.dat |Todos los archivos(*.*)|*.*| " CmDialog1.CancelError = False CmDialog1.Action = 2 On Error GoTo Aguas3 Archivo$ = CmDialog1.Filetitle If n = 0 Then MsgBox "Necesita datos" Exit Sub End If Open Archivo$ For Output As #1 Print #1, n For i = 1 To n Grid1.Row = i Grid1.Col = 1 Print #1, Val(Grid1.Text) Next i Close #1

Aguas3: MsgBox "Datos no grabados", 16, "Precaucin" Exit Sub End Sub Sub Command3D2_Click () 'Lee los datos de un archivo, se especifica nombre y ruta de acceso 'MEDIANTE UN ICONO Dim Num As String Dim i As Integer CmDialog1.Filter = "Datos (*.dat)|*.dat |Todos los archivos(*.*)|*.*| " CmDialog1.CancelError = False CmDialog1.Action = 1 On Error GoTo Aguas4 Archivo$ = CmDialog1.Filetitle Open Archivo$ For Input As #2 Line Input #2, Num n = Val(Num) Text1.Text = Num Grid1.Rows = n + 1 For i = 1 To n Grid1.Row = i Grid1.Col = 1 Line Input #2, Num Grid1.Text = Num Next i Close #2 Exit Sub Aguas4: MsgBox "Datos no ledos", 64, "Intente de nuevo" Exit Sub End Sub

Autor: Dr. Javier de J. Corts Bracho

91

End Sub Sub Frame2_DblClick () 'Al ejecutarse pedir el nombre de la variable y lo asignar al Grid q$ = InputBox("Nombre de la variable") Grid1.Row = 0 Grid1.Col = 1 Grid1.Text = q$ End Sub Sub grabar_Click () 'Guarda los datos en un archivo al que se le pude dar nombre y ruta CmDialog1.Filter = "Datos (*.dat)|*.dat |Todos los archivos(*.*)|*.*| " CmDialog1.CancelError = False CmDialog1.Action = 2 On Error GoTo Aguas Archivo$ = CmDialog1.Filetitle If n = 0 Then MsgBox "Necesita datos" Exit Sub End If Open Archivo$ For Output As #1 Print #1, n For i = 1 To n Grid1.Row = i Grid1.Col = 1 Print #1, Val(Grid1.Text) Next i Close #1 Aguas: MsgBox "Datos no grabados", 16, "Precaucin" Exit Sub Sub Grid1_KeyPress (keyascii As Integer) 'Asignacin de valores al Grid If keyascii <> 13 Then Z$ = Z$ + Chr$(keyascii) Grid1.Clip = Z$ Else MsgBox "Utilice las flechas para cambiar de celda" End If If keyascii = 8 Then Z$ = "" Grid1.Clip = Z$ End If End Sub Sub Grid1_RowColChange () Z$ = "" End Sub Sub Leer_Click () 'Lee los datos de un archivo, se especifica nombre y ruta de acceso Dim Num As String Dim i As Integer CmDialog1.Filter = "Datos (*.dat)|*.dat |Todos los archivos(*.*)|*.*| " CmDialog1.CancelError = False CmDialog1.Action = 1 On Error GoTo Aguas2 Archivo$ = CmDialog1.Filetitle Open Archivo$ For Input As #2 Line Input #2, Num

Autor: Dr. Javier de J. Corts Bracho

92

n = Val(Num) Text1.Text = Num Grid1.Rows = n + 1 For i = 1 To n Grid1.Row = i Grid1.Col = 1 Line Input #2, Num Grid1.Text = Num Next i Close #2 Exit Sub Aguas2: MsgBox "Datos no ledos", 64, "Intente de nuevo" Exit Sub End Sub Sub Text1_KeyPress (keyascii As Integer) 'Asignacin de valores a la Hilera y Columna fija If keyascii = 13 Then n = Val(Text1.Text) Grid1.SetFocus Grid1.Row = 0 Grid1.Col = 1 Grid1.ColWidth(1) = 5000 'Amplia la columna 1 Grid1.Text = q$ Grid1.Rows = n + 1 Grid1.Row = 1 Grid1.Cols = 2 For i = 1 To n Grid1.Row = i Grid1.Col = 0 Grid1.Text = "X(" + Format$(i) + ")" Next i Grid1.Row = 1

Grid1.Col = 1 Grid1.SetFocus End If End Sub

COMENTARIOS Note en el Caption de los mens Grabar datos y Leer datos, como se ha insertado el smbolo & que permite resaltar la letra que da acceso al men, la cual aparece subrayada, de esta manera el usuario tiene tres formas de acceder a el men, estas son: a).- Haciendo clic en las palabras Grabar datos o Leer datos. b).- Haciendo clic en el icono correspondiente a Grabar datos o Leer datos. c).- Presionando simultneamente la tecla Alt y la tecla correspondiente a la letra subrayada.

ARCHIVO ALEATORIO El acceso a un archivo aleatorio es asumido como un conjunto de registros de la misma longitud, los cuales pueden ser accedidos en cualquier secuencia. Cada registro individual se identifica con un nico nmero y puede ser ledo, escrito o actualizado. En vista de que en los programas siguientes sobre archivos aleatorios se han utilizado Mdulos que son archivos que

Autor: Dr. Javier de J. Corts Bracho

93

contienen los procedimientos que son compartidos por dos o ms formularios de una aplicacin, se hace imprescindible mostrar en primer lugar este aspecto. As en el siguiente programa, se ver el uso de un Mdulo.

PROGRAMA 67: Uso de Mdulo. PROPIEDADES


CAPTION Asignacin de valor Operacin y Resultado RESULTADO Operacin con variable Asignar valor a variable NAME UBICACION

Sub Command1_Click () 'Realiza la operacin del valor de "a" por 5 y lo escribe en la caja de texto 1 B=a*5 Text1.Text = Format$(B) End Sub Global a As Integer 'Declaracin de la variable "a" como Global en el Mdulo 'solo de esta manera puede ser utilizada esta variable 'tanto en la forma 1 como en la forma 2

FORMA 1 FORMA 2 ETIQUETA CAJA DE TEXTO BOTON COMANDO BOTON COMANDO

COMENTARIOS
Label 1 Text 1 la Command 1 la Command 1 En Forma 2 En Forma 2 En Forma 2 En Forma 1

Para declarar la variable a y pueda ser usada en los cdigos de los objetos de las dos formas, es necesario abrir del Men File un Mdulo New Module y declarar en la codificacin a la variable a como Global. CODIFICACION
Sub Command1_Click () 'Asigna valor a la variable "a" y muestra la forma 2 a = 20 form2.Show End Sub

Observe en la codificacin como el valor de la variable a = 20 es asignado en el botn comando (Command 1) de la forma 1 y adems este botn permite el acceso a la forma 2 (form2.Show). En esta forma se realiza la operacin con la variable a (B = a * 5) en el botn comando (Command 1) de la forma 2. De esta manera la variable a es usada en las dos formas lo que es posible por su declaracin en el Mdulo (Global a As Integer). Un aspecto muy importante es que al guardar el programa deber guardar: cada forma, el mdulo con extensin .Bas y el proyecto.

Autor: Dr. Javier de J. Corts Bracho

94

PROPIEDADES
CAPTION NAME Lectura de datos de un archivo aleatorio ETIQUETA 1 X Label 1 ETIQUETA 2 Y Label 2 CAJA DE TEXTO 1 Text 1 CAJA DE TEXTO 2 Text 2 BOTON COMANDO Leer datos de archivo Command 1 FORMA

Abra un Mdulo para la declaracin de variables. CODIFICACION


Sub Command1_Click () 'Lectura de los datos del archivo "prog68.dat" de la unidad "a" 'El archivo es creado con un editor que puede ser el del DOS o el de TB 'El archivo tiene la sig. estructura: 'columnas: 1234567 'valores: 01 57 ' 02 78 ' 03 23 'es decir los valores de X le corresponden las columnas 1 y 2 'y los valores de Y las columnas 6 y 7 Dim Num As datos Open "A:prog68.dat" For Random As #1 Len = 9 'El valor "9" es igual a Nm. de columnas del archivo ms 2 Get #1, 2, Num 'Leer los valores correspondientes a la segunda hilera Z1 = Val(Num.X)

PROGRAMA 68: Lectura de datos de un archivo aleatorio. Antes de ejecutar este programa, utilice un procesador de textos que utilice el formato ASCII, para crear el siguiente archivo de datos. 01 57 02 78 03 23 Gurdelo con el nombre de Prog68.dat en la unidad a.

Autor: Dr. Javier de J. Corts Bracho

95

PROGRAMA 69: Leer datos de un archivo aleatorio. El programa anterior mostraba el acceso a el registro de datos de la segunda hilera, ahora este programa presentar una serie de 10 pares de datos del archivo Prog68.dat guardado en el disco de la unidad a. PROPIEDADES
CAPTION Lectura de datos de un archivo aleatorio NAME OTROS

FORMA

Z2 = Val(Num.Y) Text1.Text = Format$(Z1) Text2.Text = Format$(Z2) End Sub 'Mdulo para la declaracin de variables Type datos X As String * 2 Y As String * 5 End Type

CAJA DE TEXTO BOTON COMANDO Leer datos

Text 1

MultiLine = True ScrollBars = 2

Command 1

CODIFICACION
Sub Command1_Click () 'Lectura de la serie de datos del archivo "A:prog68.dat" 'Si desea mayor informacin ver la codificacin del programa anterior Dim Num As datos ReDim Z1(20), Z2(20) nn$ = Chr$(13) + Chr$(10) Open "A:prog68.dat" For Random As #1 Len = 9 k=0 For i = 1 To 10 'Serie de 10 pares de datos

COMENTARIOS Al correr el programa y hacer clic en el botn comando Leer datos de archivo, se tendr el acceso a al archivo Prog68.dat del disco de la unidad a y mostrar en las cajas de texto los valores de la segunda hilera del archivo (Get#1,2,Num). No se olvide de guardar Forma, Mdulo y Proyecto.

Autor: Dr. Javier de J. Corts Bracho

96

Get #1, i, Num k=k+1 Z1(k) = Val(Num.X) Z2(k) = Val(Num.Y) ZZ$ = ZZ$ + " " + Z1(k) ZZ$ = ZZ$ + " " + Z2(k) + nn$ Next i Text1.Text = ZZ$ End Sub 'Declaracin de variables en el Mdulo Type datos X As String * 2 Y As String * 5 End Type

Autor: Dr. Javier de J. Corts Bracho

97

GRAFICAS INTRODUCCIN Visual Basic provee varias formas de producir efectos grficos de una manera ms sencilla que con la programacin tradicional. Una figura grfica se puede insertar en una forma o picture box, procedente de un archivo grfico con extensin wmf, bmp, ico y dib. Tambin se pueden crear grficas mediante el botn de grficas en la barra de herramientas (solo disponible en Visual Basic Ver 3.0 profesional y en las utileras de Visual Basic Ver 6.0 profesional); las grficas pueden ser de barras, de lneas, etc. Otra forma para la creacin de grficas y figuras es mediante la programacin, utilizando comando especficos, tales como Line, Pset, etc. En esta seccin se describen algunos programas en donde se utilizan los diferentes tipos para crear grficas disponibles en Visual Basic.

CAPITULO 9 se muestra completamente en la forma. Es posible insertar objetos (cajas de texto, botones, etiquetas, etc.) sobre la figura, de tal forma que esta puede quedar de fondo para un programa. PROPIEDADES PROPIEDADES Caption = Figuras de fondo en la forma. Picture = Metafile Caption = Es posible tener una figura como fondo en una forma. Name = Label 1

FORMA ETIQUETA

Programa 71: Propiedades de una grfica. Para construir una grfica es necesario activar el icono

Programa 70: Incluye una figura completa en una forma. En este programa se inserta una figura en la forma principal mediante el archivo C:\winword\clipart\matema.wmf. Para realizarlo se selecciona en las propiedades de la forma la propiedad Picture, y al hacer clic en el botn [...] aparece una ventana para seleccionar el archivo en donde se encuentra la figura que se desea insertar. Al seleccionar el archivo, la figura

de grficas en la barra de herramientas: Dibuje la grfica en la forma y asigne las siguientes propiedades. PROPIEDADES
CAPTION Propiedades de una grfica NAME

FORMA

Autor: Dr. Javier de J. Corts Bracho

98

GRAFICA ETIQUETA1

Graph1 En las propiedades de la grfica Label 1 modificar GraphStyle, GraphType, LabelText, LeftText, NumSet y BottomTitle.

Consulte la ventana de propiedades de un Graph para que visualice todas las propiedades posibles.

PROGRAMA 72: Asignar datos a una Grfica. PROPIEDADES


CAPTION datos a NAME una UBICACION

FORMA 1 FORMA 2 GRAFICA 1 ETIQUETA 1

Asignar Grfica Grfica

BOTON COMANDO

Graph 1 En Forma 2 Este programa muestra la Label 1 En Forma 1 asignacin de datos a una grfica. Asignar. Command 1 En Forma 1

COMENTARIOS Las propiedades ms comunes en un grfico son: FontSize: Tamao para los ttulos. GraphTitle: Titulo superior. LeftTitle: Titulo izquierdo. BottomTitle: Titulo inferior. GraphType: Tipo de grfico (existen 11 tipos diferentes). GraphStyle: Estilo de la grfica (existen 6 estilos diferentes).

CODIFICACION
Sub Command1_Click () 'Asignacin de datos a la grfica Form2.Graph1.GraphData = 50 Form2.Graph1.GraphData = 40 Form2.Graph1.GraphData = 30 Form2.Graph1.GraphData = 20 Form2.Graph1.GraphData = 10 Form2.Show End Sub

COMENTARIOS

Autor: Dr. Javier de J. Corts Bracho

99

ETIQUETA 1

Mediante el botn comando Asignar de la forma 1, se ejecuta la sentencia Graph1.GrapData que asigna a la grfica contenida en la forma 2 los valores correspondientes a cada una de las 5 barras, es decir, los valores: 50, 40, 30, 20 y 10 son las alturas de las barras 1, 2, 3, 4 y 5 respectivamente.

BOTON COMANDO BOTON OPCION 1 BOTON OPCION 2 CAJA DE TEXTO MENU

Este programa muestra Label 1 la presentacin de una grfica o un texto Asignar. Command 1 Grfica Texto Option 1 Option 2 Text 1 Regresar Regresar

En Forma 1

En Forma 1 En Forma 1 En Forma 1 En Forma 2 MultiLine En Forma 2

CODIFICACION
Sub Command1_Click () 'Asigna valores a la grfica Form2.Graph1.GraphData = 50 Form2.Graph1.GraphData = 40 Form2.Graph1.GraphData = 30 Form2.Graph1.GraphData = 20 Form2.Graph1.GraphData = 10 'Mensaje en la caja de texto Form2.Text1.Text = "Ejemplo de la Presentacin de una grfica o de un texto en la misma forma" End Sub Sub Option1_Click () 'Presenta la grfica Form2.Graph1.Visible = True Form2.Text1.Visible = False Form2.Show End Sub Sub Option2_Click () 'Presenta el Texto

PROGRAMA 73: Presentacin de Grfica o Texto. En este programa se involucran diferentes aspectos vistos hasta ahora, tales como: dos formas, comandos, mens, grficas, etc. PROPIEDADES
CAPTION Presentacin de Grfica o Texto Form 2 NAME UBICACION

FORMA 1 FORMA 2 GRAFICA 1

Graph 1

En Forma 2

Autor: Dr. Javier de J. Corts Bracho

100

Form2.Graph1.Visible = False Form2.Text1.Visible = True Form2.Show End Sub Sub Regresar_Click () 'Men que facilita el regreso a la forma 1 Form1.Show End Sub

Programa 74: Grfica de Lneas con la propiedad LineStats. PROPIEDADES


PROPIEDADES FORMA Caption = Grfica de lneas con la propiedad LineStats. ETIQUETA Caption = La propiedad LineStats grfica el mejor ajuste y la media de una serie de puntos. Name = Label 1 GRAFICA Name = Graph 1 GraphType = 9 - Scatter LineStats = 9 - BestFit and Mean NumPoints = 15

PROGRAMA 75: Dibuja lneas y cuadros. En el presente programa se muestra como Visual Basic dispone del mtodo Line para dibujar una lnea entre dos puntos y tambin como este mismo mtodo puede ser usado para dibujar una caja o cuadro aadiendo la opcin B. PROPIEDADES
CAPTION Dibuja una lnea y un cuadro en la NAME

COMENTARIOS La grfica muestra una dispersin (propiedad GraphType = 9) de 15 puntos al azar (propiedad NumPoints = 15) adems de dos lneas, una que muestra el mejor ajuste de los puntos y otra la media de los valores (propiedad LineStats = 9).

FORMA

Autor: Dr. Javier de J. Corts Bracho

101

Forma y en PictureBox CAJA IMAGEN BOTON COMANDO Dibujar Lnea y Cuadro

Picture 1 Command 1

Picture1.Line Step(100, 100)-Step(1000, 1000), QBColor(4), B End Sub

COMENTARIOS CODIFICACION
Sub Command1_Click () 'Dibuja lnea en la forma Form1.Line Step(100, 100)-Step(1000, 1000), QBColor(9) 'Dibuja cuadro en la forma Form1.Line Step(100, 100)-Step(1000, 1000),

En Visual Basic se puede realizar un dibujo en un formulario (Forma) y en una caja imagen (PictureBox). El origen de coordenadas para cualquiera de estos objetos, coincide con la esquina superior izquierda de los mismos; la coordenada X aumenta de izquierda a derecha, y la coordenada Y de arriba a abajo. Por otro lado observe en la codificacin como la sintaxis para una lnea y un cuadro es similar, la nica diferencia es la opcin o parmetro B. La palabra Step expresa en forma relativa los valores de las coordenadas (X, Y) de los puntos. Visual Basic tambin dispone de la funcin QBColor que tiene un solo argumento entero en el rango de 0 a 15 y corresponde a un color estndar, es decir, 0.- Negro; 1.- Azul; 2.- Verde; 3.Cyan; 4.- Rojo; 5.- Magenta; 6.- Amarillo; 7.- Blanco; 8.- Gris; 9.- Azul brillante; 10.- Verde brillante; 11.- Cyan brillante; 12.Rojo brillante; 13.- Magenta brillante; 14.- Amarillo brillante; 15.- Blanco brillante.

QBColor(13), B 'Dibuja lnea en la caja de imagen Picture1.Line Step(100, 100)-Step(1000, 1000), QBColor(12) 'Dibuja cuadro en la caja de imagen

PROGRAMA 76: Dibuja crculos.

Autor: Dr. Javier de J. Corts Bracho

102

PROPIEDADES
CAPTION NAME Dibuja Crculos Haga clic en cualquier parte de la Label 1 Forma

FORMA ETIQUETA

CODIFICACION
Sub Form_Click () 'Dibuja crculos concntricos en la Forma Dim r, c As Integer ScaleHeight = 100 ScaleWidth = 240 For r = 5 To 50 Step 5 'Coordenadas, radio y color del crculo Circle (120, 50), r, QBColor(c) c=c+1 Next r End Sub

PROGRAMA 77: Dibuja un punto. PROPIEDADES


CAPTION punto dentro NAME del Picture 1 Command 1

FORMA

COMENTARIOS Para dibujar los crculos se ha utilizado el mtodo Circle, su sintaxis se muestra en la codificacin y corresponde a las coordenadas del centro (120, 50), radio ( r ) y color (QBColor).

Dibuja un PictureBox

CAJA IMAGEN BOTON COMANDO Dibujar

CODIFICACION
Sub Command1_Click () 'La propiedad DrawWidth define el grosor del punto Picture1.DrawWidth = 6 'Dibuja un punto dentro del PictureBox Picture1.PSet (500, 1000), QBColor(12)

Autor: Dr. Javier de J. Corts Bracho

103

End Sub

COMENTARIOS Visual Basic dispone del mtodo Pset que pone color al pxel de la posicin especificada, en este programa el punto est dentro de una PictureBox en las coordenadas (500, 1000), recuerde que las coordenadas inician en la esquina superior izquierda de la caja imagen; tiene un grosor = 6 (DrawWidth) y un color rojo brillante (QBColor = 12).

Picture1.Scale (0, 0)-(11, 31) Y(1) = 2 X(1) = 4 Y(2) = 1 X(2) = 10 Y(3) = 30 X(3) = 1 'Dibuja los puntos con el origen en la parte inferior izquierda For i = 1 To 3 Picture1.PSet (X(i), 31 - Y(i)), QBColor(12) Next i End Sub

PROGRAMA 78: Dibuja puntos dentro de una PictureBox. PROPIEDADES


CAPTION Dibuja puntos dentro PictureBox NAME de una Picture 1 Command 1

FORMA

CAJA IMAGEN BOTON COMANDO Dibujar

CODIFICACION
Sub Command1_Click () Dim i As Integer ReDim Y(10), X(10) 'Grosor de los puntos Picture1.DrawWidth = 6 'Define escala para la PictureBox

COMENTARIOS Un sistema de coordenadas personalizado para la PictureBox utilizando el mtodo Scale, se define por ejemplo en este programa por: El primer par (0, 0) como el valor numrico de la esquina superior izquierda (ScaleLeft, ScaleTop) y el segundo par (11, 31) como el valor numrico de la esquina inferior

Autor: Dr. Javier de J. Corts Bracho

104

derecha (ScaleLeft + ScaleWidth, ScaleTop + ScaleHeight). Por otro lado para que los puntos tengan el origen del sistema de coordenadas en la parte inferior izquierda, y dado que el valor del ScaleHeight es 31, en la codificacin cada valor de Y es restado de 31.

Autor: Dr. Javier de J. Corts Bracho

105

CAPITULO 10 RESULTADOS IMPRESOS INTRODUCCION Para obtener resultados impresos, se presentan en este captulo algunos programas que en su codificacin envan objetos y su contenido a impresin, principalmente se han usado mtodos como, el Print, Diseo de Mens y la propiedad DrawMode en los grficos. CODIFICACION
Sub Command1_Click () 'Ejemplo de Impresin Text1.text = "Ejemplo de impresin de una caja de texto" destino = "prn" Open destino For Output As #1 Print #1, Text1.text Close #1 End Sub

PROGRAMA 79: Imprimir Contenido de la Caja de Texto Multiline. En este programa la orden de impresin es mediante un botn comando. PROPIEDADES
PROPIEDADES Caption = Imprimir Contenido de la Caja de Texto Multiline Multiline = True ScrollBars = Both Name = Text 1 Caption = Imprimir Name = Command 1

FORMA CAJA DE TEXTO BOTON

Autor: Dr. Javier de J. Corts Bracho

106

COMENTARIOS Si la impresora est conectada y encendida al hacer clic en el botn comando Imprimir, inmediatamente el contenido de la caja de texto es enviado a impresin (Print #1, Text1. text).

End Sub Sub Imprimir_Click () 'Objeto creado con la ventana de diseo de mens (Menu Design Window) 'Donde Caption = Imprimir; Name = Imprimir 'La codificacin siguiente manda a impresin el contenido de la caja de texto. destino = "prn" Open destino For Output As #1 Print #1, Text1.text Close #1 End Sub Sub Salir_Click () 'Al igual que el Objeto Imprimir fue creado con la Ventana de Diseo de Mens. End End Sub

PROGRAMA 80: Imprimir Contenido de la Caja de Texto Multiline. Aqu la orden de impresin es mediante un men. PROPIEDADES
PROPIEDADES Caption = Imprime Contenido de la Caja de Texto Multiline Multiline = True ScrollBars = Both Name = Text 1 Caption = Mostrar texto Name = Command 1 Caption = Imprimir Name = Imprimir Caption = Salir Name = Salir

FORMA CAJA DE TEXTO BOTON MENU 1 MENU 2

COMENTARIOS En el captulo 8 se describi como realizar el Diseo de Mens, en este programa se ha aplicado dicha metodologa para definir 2 mens; uno para impresin y otro para salir del programa.

CODIFICACION
Sub Command1_Click () Text1.text = "Ejemplo de impresin de una caja de texto"

Autor: Dr. Javier de J. Corts Bracho

107

BOTON 1 BOTON 2 MENU

Caption = Mostrar texto Name = Command 1 Caption = Imprimir forma Name = Command 2 Caption = ImprimirTexto Name = Imprimir

CODIFICACION
Sub Command1_Click () 'Texto de la caja de texto 1 Text1.text = "Ejemplo de impresin de una caja de texto" End Sub Sub Command2_Click () 'Imprime la forma 1 form1.PrintForm End Sub Sub Imprimir_Click () 'Este Objeto (Imprimir) fue realizado con el Menu Design Window 'Donde: Caption = Imprimir; Name = Imprimir 'Su funcin es imprimir el contenido de la caja de texto de acuerdo a la siguiente codificacin: destino = "prn" Open destino For Output As #1 Print #1, Text1.text Close #1 End Sub

PROGRAMA 81: Imprimir Contenido de una Caja de Texto Multiline y Forma. Ahora mediante un botn comando imprimir la forma y por medio de un men el contenido de la caja de texto. PROPIEDADES
PROPIEDADES Caption = Imprime Contenido de Caja de Texto Multiline y Forma Multiline = True ScrollBars = Both Name = Text 1

FORMA CAJA DE TEXTO

Autor: Dr. Javier de J. Corts Bracho

108

CODIFICACION
Sub Command1_Click () 'Asignacin de datos a la grfica Form2.Graph1.GraphData = 50 Form2.Graph1.GraphData = 40 Form2.Graph1.GraphData = 30 Form2.Graph1.GraphData = 20 Form2.Graph1.GraphData = 10 Form2.Show End Sub Sub Imprimir_Click () 'La propiedad DrawMode = 5 manda a impresin la grfica Graph1.DrawMode = 5 End Sub

PROGRAMA 82: Imprimir Grfica. PROPIEDADES


CAPTION Imprimir Grfica Form 2 NAME UBICACION

FORMA 1 FORMA 2 GRAFICA 1 ETIQUETA 1

BOTON COMANDO MENU

Graph 1 En Forma 2 Este programa muestra la Label 1 En Forma 1 asignacin de datos a una grfica Asignar. Command 1 En Forma 1 Imprimir Imprimir En Forma 2

Autor: Dr. Javier de J. Corts Bracho

109

COMENTARIOS Note en las propiedades de la grfica como los valores de DrawStyle es 1.- Color y de DrawMode es 2.- Draw, observe que los valores de DrawMode pueden ser: 0.- No Action; 1.Clear; 2.- Draw; 3.- Blit; 4.- Copy; 5.- Print; 6.- Write. Es por eso que al hacer clic en el men Imprimir que aparece en la forma 2 al mostrarse la grfica, se cambia el valor de la propiedad DrawMode a 5 (Print) que enviar a impresin la grfica, note que los colores de las barras de la grfica son cambiados a un estilo de anchurado.

Autor: Dr. Javier de J. Corts Bracho

110

CAPITULO 11 CAMBIO DE FUENTES Y CREACION DE CONTROLES DURANTE LA EJECUCION INTRODUCCION En el momento de estar ejecutando un programa, si se ha aadido en la forma el CMDialog y la propiedad Action tiene algn valor, se puede visualizar alguna caja de dilogo tal como: Abrir (Open), Guardar Como (Save As), Imprimir (Print), Fuente (Font) y Color (Color), en el captulo 8 referente a Archivos de Datos, se mostr las cajas de dilogo Abrir y Guardar Como, corresponde a el presente captulo ver las cajas de dilogo de Fuente y Color. Adems se analizar como aadir (sentencia Load) un nuevo control durante la ejecucin de una aplicacin y como eliminarlo (sentencia UnLoad) siempre y cuando este control haya sido creado en el tiempo de ejecucin.
BOTON COMANDO COMMON DIALOG ETIQUETA 1 ETIQUETA 2 Name = Text 1 Caption = Fuentes Name = Command 1 Name = CMDialog 1 Caption = Escriba un texto Name = Label 1 Caption = Cambie el estilo, tamao, efecto y color del texto haciendo clic en el botn Fuentes Name = Label 2

CODIFICACION
Sub Command1_Click () 'Asigna a la propiedad Flags el valor de una constante 'La constante &H3& hace referencia a las fuentes soportadas por el sistema y por la impresora 'La constante &H100& permite los efectos de tachado, subrayado y color CmDialog1.Flags = &H3& Or &H100& 'La Action = 4 visualiza la caja de dilogo Fuente CmDialog1.Action = 4 'Propiedades elegidas Text1.FontName = CmDialog1.FontName Text1.FontSize = CmDialog1.FontSize Text1.FontBold = CmDialog1.FontBold Text1.FontUnderline = CmDialog1.FontUnderLine Text1.FontStrikethru = CmDialog1.FontStrikeThru Text1.ForeColor = CmDialog1.Color End Sub

PROGRAMA 83: Caja de Dilogo Fuente. Durante la ejecucin del programa, mediante el botn comando Fuentes, se mostrar la caja de dilogo con la cual puede cambiar estilo, tamao, efecto y color de un texto. PROPIEDADES
PROPIEDADES Caption = Caja de Dilogo Fuente Multiline = True ScrollBars = Vertical

FORMA CAJA DE TEXTO

Autor: Dr. Javier de J. Corts Bracho

111

COMENTARIOS Corra el programa y escriba un texto en la caja de texto, luego haga clic en el botn comando Fuentes para que aparezca la caja de dilogo Fuente (Action = 4), seleccione una fuente, un estilo, un tamao, un efecto, y un color, haga clic en el botn Aceptar para asignar estas fuentes a su texto.

PROGRAMA 84: Caja de Dilogo Color. Durante la ejecucin del programa cambie el color de la forma. PROPIEDADES
PROPIEDADES Caption = Caja de Dilogo Color Caption = Cambiar el color de la forma Name = Command 1 Name = CMDialog 1

FORMA BOTON COMANDO COMMON DIALOG

CODIFICACION
Sub Command1_Click () 'Asigna a la propiedad Flags el valor de una constante 'La constante &H8& causa que aparezca un botn de ayuda en la caja de dilogo CmDialog1.Flags = &H8& 'La Action = 3 visualiza la caja de dilogo Color CmDialog1.Action = 3 'Cambia al color elegido el fondo de la forma Form1.BackColor = CmDialog1.Color End Sub

COMENTARIOS Corra el programa y haga clic en el botn comando para que aparezca la caja de dilogo Color (Action = 3), seleccione un color y haga clic en el botn Aceptar para que el fondo de la forma tenga este color.

Autor: Dr. Javier de J. Corts Bracho

112

En resumen para visualizar alguna de las cajas de dilogo durante la ejecucin de la aplicacin, asigne a la propiedad Action uno de los siguientes valores: 0.- Nada; 1.- Abrir; 2.Guardar Como; 3.- Color; 4.- Fuente; 5.- Imprimir; 6.- Invoca a Winhelp.exe (no visualiza una caja de dilogo).

PROGRAMA 85: Cajas de Texto con Subndice. Asignando a la propiedad Index de la caja de texto el valor de 0, aada cajas de texto idnticas durante la ejecucin, una vez creadas las puede remover. PROPIEDADES
PROPIEDADES Caption = Cajas de Texto con Subndice

FORMA

Autor: Dr. Javier de J. Corts Bracho

113

CAJA DE TEXTO BOTON COMANDO 1 BOTON COMANDO 2 ETIQUETA 1

Index = 0 Text = Text 1 Name = Text 1 Caption = Aadir Name = Command 1 Caption = Remover Name = Command 2 Caption = Crea o elimina Cajas de Texto al momento de la ejecucin Name = Label 1

CODIFICACION
Dim i As Integer Sub Command1_Click () If i >= 9 Then Exit Sub i=i+1 Load Text1(i) 'Aade un control (caja de texto) con ndice i Text1(0).SetFocus Text1(i).Top = Text1(i - 1).Top + 460 Text1(i).Visible = True End Sub Sub Command2_Click () If i = 0 Then Exit Sub Unload Text1(i) 'Elimina el control (caja de texto) de ndice i i=i-1 End Sub

COMENTARIOS Un Array permite referirse a una serie de elementos del mismo tipo por un mismo nombre y referenciar un nico elemento de la serie utilizando un ndice. Visual Basic, igual que sus predecesores, permite definir arrays de variables de una o ms dimensiones y de cualquier tipo de datos (Tipos fundamentales y tipos definidos por el usuario), e introduce una nueva clase de arrays, Arrays de Controles, necesarios para escribir mens, para crear nuevos controles en el tiempo de ejecucin o para hacer que una serie de controles tenga asociado un mismo procedimiento para cada tipo de suceso. As, un array de controles es un conjunto de controles que comparten el mismo nombre y tipo, por lo cual tambin comparten los mismos procedimientos. Los elementos de un array de controles son controles fsicamente separados, cada uno con su propio

Autor: Dr. Javier de J. Corts Bracho

114

conjunto de propiedades. Cuando se aade un nuevo elemento a un array de controles, todas las propiedades, excepto Visible, Index y TabIndex son copiadas del elemento ms bajo en el array. Esto supone que todos los nuevos controles que se van aadiendo, sean del mismo tamao y se apilen en el mismo lugar, en este programa las cajas de texto aadidas no se apilan sino que aparecen hacia abajo, por la propiedad Top en la codificacin. PROGRAMA 86: Botones de Opcin con Subndice. Programa similar a el anterior, con la diferencia que el control a aadir es un botn opcin. Adems note en la codificacin como cualquier botn opcin est asociado a el mismo procedimiento para el tipo de suceso click (Option1_Click). PROPIEDADES
PROPIEDADES Caption = Botones de Opcin con Subndice Caption = Option 1 Name = Option 1 LargeChange = 1 SmallChange = 1 Min = 0 Max = 12 Name = HScroll 1 Caption = Aadir Name = Command 1 Caption = Remover Name = Command 2

ETIQUETA 1

ETIQUETA 2

Caption = Para cambiar el color a la forma, mueva el cursor del ScrollBar y de un clic en un botn opcin Name = Label 1 Caption = Crea o elimina botones de opcin al momento de la ejecucin Name = Label 2

CODIFICACION
Dim i As Integer Sub Command1_Click () If i >= 9 Then Exit Sub i=i+1 Load Option1(i) 'Aade un control (botn de opcin) con ndice i Option1(0).SetFocus Option1(i).Top = Option1(i - 1).Top + 460 Option1(i).Visible = True End Sub Sub Command2_Click () If i = 0 Then Exit Sub Unload Option1(i) 'Elimina el control (botn de opcin) de ndice i i=i-1 End Sub Sub Option1_Click (Index As Integer) Form1.BackColor = QBColor(Hscroll1) End Sub

FORMA BOTON OPCION 1 BARRA DE DESPLAZAMIENTO

BOTON COMANDO 1 BOTON COMANDO 2

Autor: Dr. Javier de J. Corts Bracho

115

COMENTARIOS Corra el programa, aada varios botones de opcin, mueva el cursor de scrollbar a alguna posicin y haga clic en cualquier botn de opcin, observe como cambia el color de la forma.

Autor: Dr. Javier de J. Corts Bracho

116

CAPITULO 12 ANIMACION INTRODUCCION


FORMA

PROPIEDADES
CAPTION Mover y Modificar una Caja de Texto NAME

En el captulo anterior se indic como aadir nuevos controles durante la ejecucin, en este captulo se ver que tambin durante la ejecucin de una aplicacin, se puede mover cualquier control a otra posicin, lo nico que hay que hacer es modificar sus propiedades Left, Top, Width y Height utilizando el mtodo Move. Por otro lado, en la librera de iconos de Visual Basic hay series de dos o ms iconos que utilizados conjuntamente producen un efecto de animacin. Adems, tambin es posible mediante la programacin en Visual Basic, hacer pantallas con notas que muestren informacin de un tema especfico.

CAJA DE TEXTO BOTON COMANDO Mover

Text 1 Command 1

CODIFICACION
Sub Command1_Click () 'El mtodo Move modifica las propiedades: 'Left, Top, Width, Height Text1.Move 100, 100, 1000, 1000 End Sub

PROGRAMA 87: Mover y Modificar una Caja de Texto. Por medio del mtodo Move se cambia durante la ejecucin del programa las propiedades Left, Top, Width y Height de la caja de texto, lo cual hace dar una nueva posicin y aspecto a la caja de texto.

Autor: Dr. Javier de J. Corts Bracho

117

CODIFICACION

PROGRAMA 88: Animacin: Flecha girando. Haga una superposicin de las cajas imagen que contengan los iconos trffc01.ico, trffc02.ico, trffc03.ico y trffc04.ico del archivo c:\vb\icons\traffic. PROPIEDADES
CAPTION Animacin: Flecha girando NAME OTROS

FORMA 1 PICTUREBOX 1 PICTUREBOX 2 PICTUREBOX 3 PICTUREBOX 4 BOTON COMANDO

Accin !

Picture 1 Picture 2 Picture 3 Picture 4 Command 1

Picture = Icon Picture = Icon Picture = Icon Picture = Icon

Sub Command1_Click () 'El valor True de cada Picture mostrar un icono For j = 1 To 20 Picture1.Visible = True Picture2.Visible = False Picture3.Visible = False Picture4.Visible = False For i = 1 To (10 - j) * 10000 Next i Picture1.Visible = False Picture2.Visible = True Picture3.Visible = False Picture4.Visible = False For i = 1 To (10 - j) * 10000 Next i Picture1.Visible = False Picture2.Visible = False Picture3.Visible = True Picture4.Visible = False For i = 1 To (10 - j) * 10000 Next i Picture1.Visible = False Picture2.Visible = False Picture3.Visible = False Picture4.Visible = True For i = 1 To (10 - j) * 10000 Next i Next j End Sub Sub Picture1_Click ()

Autor: Dr. Javier de J. Corts Bracho

112

'Contiene al icono trffc01.ico flecha hacia arriba End Sub Sub Picture2_Click () 'Contiene al icono trffc02.ico flecha hacia la derecha End Sub Sub Picture3_Click () 'Contiene al icono trffc03.ico flecha hacia abajo End Sub Sub Picture4_Click () 'Contiene al icono trffc04.ico flecha hacia la izquierda End Sub

PROGRAMA 89: Animacin: Flecha girando. En el programa anterior, la flecha empieza a girar al hacer clic en el botn comando, y se detiene al concluir los bucles de la codificacin. Ahora en este programa la flecha empieza a girar al correr el programa y continua girando hasta que se detenga el programa, esto es posible dado que la codificacin esta realizada en un Temporizador (Timer). Para dibujar un Timer, utilice el icono.

PROPIEDADES
CAPTION Animacin: Flecha girando NAME OTROS

FORMA 1 PICTUREBOX 1 PICTUREBOX 2 PICTUREBOX 3 PICTUREBOX 4 TIMER

Picture 1 Picture 2 Picture 3 Picture 4 Timer 1

Picture = Icon Picture = Icon Picture = Icon Picture = Icon Interval = 1000

CODIFICACION
Sub Picture1_Click () 'Contiene al icono trffc01.ico flecha hacia arriba End Sub Sub Picture2_Click () 'Contiene al icono trffc02.ico flecha hacia la derecha End Sub

Autor: Dr. Javier de J. Corts Bracho

113

Sub Picture3_Click () 'Contiene al icono trffc03.ico flecha hacia abajo End Sub Sub Picture4_Click () 'Contiene al icono trffc04.ico flecha hacia la izquierda End Sub Sub Timer1_Timer () 'El valor True de cada Picture mostrar un icono For j = 1 To 20 Picture1.Visible = True Picture2.Visible = False Picture3.Visible = False Picture4.Visible = False For i = 1 To (10 - j) * 10000 Next i Picture1.Visible = False Picture2.Visible = True Picture3.Visible = False Picture4.Visible = False For i = 1 To (10 - j) * 10000 Next i Picture1.Visible = False Picture2.Visible = False Picture3.Visible = True Picture4.Visible = False For i = 1 To (10 - j) * 10000 Next i Picture1.Visible = False Picture2.Visible = False Picture3.Visible = False Picture4.Visible = True

For i = 1 To (10 - j) * 10000 Next i Next j End Sub

COMENTARIOS Un Temporizador (Timer) es un control de Visual Basic que responde a intervalos regulares de tiempo. Esto quiere decir que en el procedimiento asociado con el mismo, se especificar las acciones que se deseen ejecutar cada vez que transcurre un intervalo de tiempo. Cada temporizador tiene una propiedad Interval, que especifica el intervalo de tiempo en milisegundos que tiene que transcurrir para que un procedimiento asociado se ejecute, independientemente del usuario. El valor de la

Autor: Dr. Javier de J. Corts Bracho

114

propiedad Interval puede oscilar entre 0 y 64767 (es decir de 0 a 64.8 segundos). Note como el Timer al igual que el CMDialog nicamente estn visibles en la forma antes de correr el programa.

PROGRAMA 90: Animacin: Semforo. Superponga tres cajas imagen que contengan los iconos traff10a.ico, traff10b.ico, traff10c.ico del archivo c:\vb\icons\traffic. Corra el programa y cambie el color del semforo mediante el botn comando Cambiar. PROPIEDADES CAPTION Animacin: Semforo NAME OTROS

'Codificacin para el cambio de colores en el semforo If verde.Visible = True Then verde.Visible = False amarillo.Visible = True ElseIf amarillo.Visible = True Then amarillo.Visible = False rojo.Visible = True Else rojo.Visible = False verde.Visible = True End If End Sub
Sub Form_Load () 'Inicia el semforo en color verde verde.Visible = True amarillo.Visible = False rojo.Visible = False End Sub

FORMA 1 PICTUREBOX 1 PICTUREBOX 2 PICTUREBOX 3 BOTON COMANDO CODIFICACION

Rojo Amarillo Verde Cambiar Command 1

Picture Icon Picture Icon Picture Icon

= = =
Sub verde_Click () 'PictureBox que contiene al icono trffc10a.ico semforo en verde End Sub Sub amarillo_Click () 'PictureBox que contiene al icono trffc10b.ico semforo en amarillo End Sub Sub rojo_Click () 'PictureBox que contiene al icono trffc10c.ico semforo en rojo

Sub Command1_Click ()

Autor: Dr. Javier de J. Corts Bracho

115

End Sub

Sub Command1_Click () 'Codificacin para abrir o cerrar If cerrado.Visible = True Then cerrado.Visible = False abierto.Visible = True Else abierto.Visible = False cerrado.Visible = True End If End Sub Sub Form_Load () 'Inicia con archivero cerrado abierto.Visible = False cerrado.Visible = True End Sub

PROGRAMA 91: Animacin: Abrir o Cerrar. Superponga dos cajas imagen que contengan los iconos files05a.ico y files05b.ico del archivo c:\vb\icons\office. PROPIEDADES
CAPTION Animacin: Abrir o Cerrar NAME OTROS

PROGRAMA 92: Animacin: Banderas. Abra 24 cajas imagen y coloque en cada una de ellas un icono del archivo c:\vb\icons\flags, haga corresponder el icono de la bandera con el nombre del pas en la codificacin. Al correr el programa y hacer clic en una bandera aparecer en la caja de texto el pas al que pertenece. PROPIEDADES
CAPTION Animacin: Banderas NAME Picture 1 Picture 2 Picture 3 OTROS Picture = Icon Picture = Icon Picture = Icon

FORMA 1 PICTUREBOX 1 PICTUREBOX 2 BOTON COMANDO

Abrir o Cerrar ?

Abierto Cerrado Command 1

Picture = Icon Picture = Icon

CODIFICACION

FORMA 1 PICTUREBOX 1 PICTUREBOX 2 PICTUREBOX 3

Autor: Dr. Javier de J. Corts Bracho

116

PICTUREBOX 4 . . . PICTUREBOX 23 PICTUREBOX 24 CAJA DE TEXTO

Picture 4 . . . Picture 23 Picture 24 Text 1

Picture = Icon . . . Picture = Icon Picture = Icon

Sub Picture15_Click () TEXT1.Text = "NORUEGA" End Sub Sub Picture16_Click () TEXT1.Text = "NUEVA ZELANDA" End Sub Sub Picture17_Click () TEXT1.Text = "PORTUGAL" End Sub Sub Picture18_Click () TEXT1.Text = "RUSIA" End Sub Sub Picture19_Click () TEXT1.Text = "ESPAA" End Sub Sub Picture2_Click () TEXT1.Text = "JAPON" End Sub Sub Picture20_Click () TEXT1.Text = "SUECIA" End Sub Sub Picture21_Click () TEXT1.Text = "SUIZA" End Sub Sub Picture22_Click () TEXT1.Text = "TURQUIA"

CODIFICACION
Sub Picture1_Click () TEXT1.Text = "MEXICO" End Sub Sub Picture10_Click () TEXT1.Text = "AUSTRALIA" End Sub Sub Picture11_Click () TEXT1.Text = "FINLANDIA" End Sub Sub Picture12_Click () TEXT1.Text = "IRLANDA" End Sub Sub Picture13_Click () TEXT1.Text = "ITALIA" End Sub Sub Picture14_Click () TEXT1.Text = "HOLANDA" End Sub

Autor: Dr. Javier de J. Corts Bracho

117

End Sub Sub Picture23_Click () TEXT1.Text = "REINO UNIDO" End Sub Sub Picture3_Click () TEXT1.Text = "FRANCIA" End Sub Sub Picture4_Click () TEXT1.Text = "ALEMANIA" End Sub Sub Picture5_Click () TEXT1.Text = "AUSTRIA" End Sub Sub Picture6_Click () TEXT1.Text = "CANADA" End Sub Sub Picture7_Click () TEXT1.Text = "ESTADOS UNIDOS" End Sub Sub Picture8_Click () TEXT1.Text = "BRASIL" End Sub Sub Picture9_Click () TEXT1.Text = "DINAMARCA" End Sub

PROGRAMA 93: Notas de un tema. Este programa presenta informacin sobre un tema en la pantalla de su monitor PROPIEDADES
PROPIEDADES FORMA Caption = Fertilizacin Fosfrica en Maz BOTON COMANDO 1 Caption = Fin Name = Command 1 BOTON COMANDO 2 Caption = Continuar > Name = Command 2 BOTON COMANDO 3 Caption = < Continuar

Autor: Dr. Javier de J. Corts Bracho

118

CAJA DE TEXTO 1

CAJA DE TEXTO 2

Name = Command 3 FontBold = True FontName = MS Sans Serif FontSize = 22.5 Multiline = True Name = Text 1 FontBold = True FontName = MS Sans Serif FontSize = 18 Name = Text 2

CODIFICACION
Dim z As Integer Sub Command1_Click () End End Sub Sub Command2_Click () z=z+1 If z > 5 Then z = 5 Select Case z Case 0 text2.Visible = True N$ = Chr$(13) + Chr$(10) text1.BackColor = QBColor(11) text1.ForeColor = QBColor(4) text2.Text = " Tipos de Suelo" text1.Text = N$ + N$ + "La mayora de los suelos del noreste de Mxico son calcreos. Por lo tanto, tienen altos contenidos de carbonato de calcio y altos pH's; generalmente tienen contenidos bajos de materia orgnica y son deficientes en fsforo"

Case 1 N$ = Chr$(13) + Chr$(10) text2.Text = " Fijacin del fsforo" text1.Text = N$ + N$ + "El fsforo se fija al precipitar con compuestos de calcio. El calcio reacciona con el fsforo que se aplica como fertilizante para formar compuestos con muy baja solubilidad como fosfato diclcico, fosfato octaclcico y apatitas." Case 2 N$ = Chr$(13) + Chr$(10) text2.Text = " Epoca de aplicacin" text1.Text = N$ + N$ + "En el norte de Tamaulipas los fertilizantes fosfricos se aplican en los meses de noviembre y diciembre, antes del riego de asiento, el cual se aplica a finales de diciembre" + N$ + N$ + "En Anahuac, N. L. el fertilizante fosfrico se aplica al momento de la siembra" Case 3 N$ = Chr$(13) + Chr$(10) text2.Text = " Forma de Aplicacin" text1.Text = N$ + N$ + "La mejor forma de aplicar fsforo es en banda, debido a que si se aplica al boleo cada grano est en contacto con mayor cantidad de suelo, lo que hace que se fije ms rpidamente" Case 4 N$ = Chr$(13) + Chr$(10) text2.Text = " Fertilizantes" text1.Text = N$ + N$ + "Los fertilizantes ms comunes son:" + N$ + N$ + "Superfosfato de calcio triple, el cual contiene 46% de P" + N$ + N$ + "Fosfato diamnico el cual contiene 18% de N y 46% de P2O5 (18-46-0)" Case 5 N$ = Chr$(13) + Chr$(10) text2.Text = "Dosis Recomendada"

Autor: Dr. Javier de J. Corts Bracho

119

text1.Text = N$ + N$ + "En la mayora de las regiones maiceras de Mxico se recomienda aplicar 40 Kg de P por hectrea." + N$ + N$ + "Sin embargo, para maz de riego de alta produccin (6 Ton.), en el norte de Tamaulipas se recomienda aplicar hasta 70 unidades de P" End Select End Sub Sub Command3_Click () z=z-1 If z < 0 Then z = 0 Select Case z Case 0 text2.Visible = True N$ = Chr$(13) + Chr$(10) text1.BackColor = QBColor(11) text1.ForeColor = QBColor(4) text2.Text = " Tipos de Suelo" text1.Text = N$ + N$ + "La mayora de los suelos del noreste de Mxico son calcreos. Por lo tanto, tienen altos contenidos de carbonato de calcio y altos pH's; generalmente tienen contenidos bajos de materia orgnica y son deficientes en fsforo" Case 1 N$ = Chr$(13) + Chr$(10) text2.Text = " Fijacin del fsforo" text1.Text = N$ + N$ + "El fsforo se fija al precipitar con compuestos de calcio. El calcio reacciona con el fsforo que se aplica como fertilizante para formar compuestos con muy baja solubilidad como fosfato diclcico, fosfato octaclcico y apatitas." Case 2 N$ = Chr$(13) + Chr$(10) text2.Text = " Epoca de aplicacin"

text1.Text = N$ + N$ + "En el norte de Tamaulipas los fertilizantes fosfricos se aplican en los meses de noviembre y diciembre, antes del riego de asiento, el cual se aplica a finales de diciembre" + N$ + N$ + "En Anahuac, N. L. el fertilizante fosfrico se aplica al momento de la siembra" Case 3 N$ = Chr$(13) + Chr$(10) text2.Text = " Forma de Aplicacin" text1.Text = N$ + N$ + "La mejor forma de aplicar fsforo es en banda, debido a que si se aplica al boleo cada grano est en contacto con mayor cantidad de suelo, lo que hace que se fije ms rpidamente" Case 4 N$ = Chr$(13) + Chr$(10) text2.Text = " Fertilizantes" text1.Text = N$ + N$ + "Los fertilizantes ms comunes son:" + N$ + N$ + "Superfosfato de calcio triple, el cual contiene 46% de P" + N$ + N$ + "Fosfato diamnico el cual contiene 18% de N y 46% de P2O5 (18-46-0)" Case 5 N$ = Chr$(13) + Chr$(10) text2.Text = "Dosis Recomendada" text1.Text = N$ + N$ + "En la mayora de las regiones maiceras de Mxico se recomienda aplicar 40 Kg de P por hectrea." + N$ + N$ + "Sin embargo, para maz de riego de alta produccin (6 Ton.), en el norte de Tamaulipas se recomienda aplicar hasta 70 unidades de P" End Select End Sub Sub Form_Load () text1.FontSize = 18 text1.BackColor = QBColor(11)

Autor: Dr. Javier de J. Corts Bracho

120

N$ = Chr$(13) + Chr$(10) text1.ForeColor = QBColor(12) text1.Text = N$ + " Fertilizacin Fosfrica en Maz" + N$ + N$ + " En el Noreste de Mxico" + N$ + N$ + N$ + " por" + N$ + N$ + " Dr. Emilio Olivares Senz" text2.Visible = False z = -1 End Sub

Corra el programa presionando F5 y vea la informacin sobre el tema haciendo clic en los botones comando Continuar, para terminar haga clic en el botn Fin y cierre la ventana.

COMENTARIOS

Autor: Dr. Javier de J. Corts Bracho

121

Das könnte Ihnen auch gefallen