Programaci n Con Visual Bas

Click here to load reader

  • date post

    08-Oct-2014
  • Category

    Documents

  • view

    47
  • download

    10

Embed Size (px)

Transcript of Programaci n Con Visual Bas

PROGRAMACIN EN VISUAL BASICpor

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

2

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

3

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

4

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

5

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

6

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

7

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

8

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

9

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 3Sub 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 CODIFICACIONSub 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 CODIFICACIONSub 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 CODIFICACIONSub 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: CODIFICACIONSub 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

CODIFICACIONSub 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

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

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

CODIFICACIONSub 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 PROPIEDADESSub 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

CODIFICACIONSub 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

CODIFICACIONSub 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

CODIFICACIONSub 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) PROPIEDADESCAPTION 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

CODIFICACIONSub 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

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

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

CODIFICACIONSub 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 CODIFICACIONSub 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 = 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).

CODIFICACIONSub 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. PROPIEDADESCAPTION 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. PROPIEDADESCAPTION 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

CODIFICACIONSub 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

CODIFICACIONDim 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. PROPIEDADESCAPTION 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

CODIFICACIONDim 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

PROPIEDADESSub 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. PROPIEDADESCAPTION 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

PROPIEDADESCAPTION 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. PROPIEDADESFORMA 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

CODIFICACIONSub 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. PROPIEDADESCAPTION 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

CODIFICACIONSub 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"

CODIFICACIONSub 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).

CODIFICACIONSub 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. PROPIEDADESCAPTION 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 PROPIEDADESCAPTION 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)

CODIFICACIONSub 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. PROPIEDADESCAPTION 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().

CODIFICACIONDim 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. PROPIEDADESCAPTION 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. CODIFICACIONSub 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

PROPIEDADESCAPTION 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). PROPIEDADESCAPTION 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 ())

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

PROPIEDADESFORMA 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 SubFORMA 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

CODIFICACIONDim Z$, q$ Dim n As