Programaci n Con Visual Bas

127
P P R R O O G G R R A A M M A A C C I I Ó Ó N N E E N N V V I I S S U U A A L L B B A A S S I I C C por Javier de Jesús Cortés Bracho

Transcript of Programaci n Con Visual Bas

Page 1: Programaci n Con Visual Bas

PPRROOGGRRAAMMAACCIIÓÓNN EENN VVIISSUUAALL BBAASSIICC por

Javier de Jesús Cortés Bracho

Page 2: Programaci n Con Visual Bas

INDICE

CAPITULO 1 INICIE LA PROGRAMACION EN VISUAL BASIC

INTRODUCCIÓN

CAJAS DE TEXTO,BOTONES COMANDO Y ETIQUETAS

CAPITULO 2 BARRAS DE DESPLAZAMIENTO

INTRODUCCIÓNBARRAS DE DESPLAZAMIENTO COMO CONTROLES DE ENTRADA

BARRAS DE DESPLAZAMIENTO EN CAJAS DE TEXTO

CAPITULO 3 CAJAS DE DIALOGO

INTRODUCCIÓNCAJAS DE MENSAJE CAJAS DE ENTRADA

CAPITULO 4 ACTIVAR O DESACTIVAR OPCIONES

INTRODUCCIÓNCASILLAS DE VERIFICACION BOTONES DE OPCION

CAPITULO 5 LISTAS FIJAS Y LISTAS DESPLEGABLES

INTRODUCCIÓN

Autor: DR. JAVIER DE J. CORTES BRACHO 2

Page 3: Programaci n Con Visual Bas

CAPITULO 6 LECTURA DE UNA SERIE DE DATOS

INTRODUCCION CAPITULO 7

PROCEDIMIENTOS Y FUNCIONES INTRODUCCION

CAPITULO 8

ARCHIVOS DE DATOS INTRODUCCIONARCHIVO 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

ANIMACIONINTRODUCCION

Autor: DR. JAVIER DE J. CORTES BRACHO 3

Page 4: Programaci n Con Visual Bas

CAPITULO 1 INICIE LA PROGRAMACION EN VISUAL BASIC

INTRODUCCION Visual Basic, es un lenguaje de programación de alto nivel en ambiente Windows, que permite realizar diseños gráficos 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 gráficos situados sobre ella. Se pueden realizar tantas formas como se necesiten y dependiendo de la utilidad que se les dé, estas serán de diferentes tipos. Así, se puede crear una forma que contenga un gráfico, para visualizar información 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 aplicación llamada Proyecto en Visual Basic, primero se abre una forma, sobre ella se dibujan los controles y a continuación se escribe el código fuente relacionado con cada uno de ellos, código que permanece inactivo hasta que se dé el suceso que lo activa. Por ejemplo, se puede programar un botón de ordenes para que responda a un clic del ratón. 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

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 generación de programación con entorno gráfico a través de los ejercicios que a continuación se proponen. CAJAS DE TEXTO, BOTONES COMANDO Y ETIQUETAS 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 asignación de propiedades a estos controles, los sucesos que indican como será ejecutado un procedimiento, la manera de guardar en disco los programas, además de la declaración y uso de variables Variant, función Str$ y Format$ y la expresión SetFocus.

Autor: DR. JAVIER DE J. CORTES BRACHO 4

Page 5: Programaci n Con Visual Bas

Autor: DR. JAVIER DE J. CORTES BRACHO 5

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

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.

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

Page 6: Programaci n Con Visual Bas

desea puede añadir color a su forma y controles mediante la misma ventana de propiedades. PROPIEDADES CAPTION NAME TEXT

FORMA Como Iniciar CAJA DE TEXTO 1

Mensaje Ninguno

BOTON 1 Haga clic aquí Command 1 BOTON 2 ? Command 2 BOTON 3 Salir Command 3

Sub Command1_Click ()

La Forma tendrá la siguiente presentación:

CODIFICACION Haga doble clic sobre el primer botón comando aparecerá una ventana de código con el siguiente mensaje:

Escriba lo siguiente: 'Abrir cajas de texto, botones y asignación de propiedades Mensaje.Text = "Bienvenido a VISUAL BASIC" End Sub De esta manera ha programado usted el primer botón que responderá a un clic del ratón. Programe ahora los dos botones restantes anotando en cada uno de ellos la siguiente codificación:

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

Page 7: Programaci n Con Visual Bas

Autor: DR. JAVIER DE J. CORTES BRACHO 7

Para hacer una pausa en la ejecución del programa haga clic en

y para detener la ejecución de la aplicación haga clic en COMENTARIOS Observe que se puede modificar el tamaño 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 presentación 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 también que en la ventana para la codificación aparece cada procedimiento conducido por un suceso. Es decir, por ejemplo en la codificación del primer botón, el procedimiento Command1_Click (), conducido por el suceso Click, el cual indica que este procedimiento será ejecutado cuando el usuario haga clic en dicho botón, de esta forma, la ventana de código indica que clase de suceso tiene que ocurrir para que se ejecute el código. Dentro de la codificación cuando una frase va precedida de una comilla simple ( ¹ ), Visual Basic interpreta que esta frase es un comentario y no ejecuta ninguna acción sobre ella.

Ha creado usted su primer proyecto, ahora guárdela 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 asignándole Visual Basic la extensión .Frm, en seguida guarde el Proyecto con la orden Save Project As, con un nombre dado por el usuario y Visual Basic asigna la extensión .Mak, a manera de ejemplo guarde esta aplicación como Prog1.Frm para la Forma y Prog1.Mak para el proyecto. En esta aplicación 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 Pulsación

Page 8: Programaci n Con Visual Bas

que tienen asociada una orden. Esta orden se ejecutará cuando el usuario haga clic sobre el Botón. PROGRAMA 2: Multiplica dos Números. 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 continuación: PROPIEDADES CAPTION NAME TEXT

FORMA Multiplica dosnúmeros

ETIQUETA 1 Número 1 Label 1 ETIQUETA 2 Número 2 Label 2 ETIQUETA 3 El resultado es Label 3

CAJA DE TEXTO 1

Text 1 Ninguno

CAJA DE TEXTO 2

Text 2 Ninguno

CAJA DE TEXTO 3

Text 3 Ninguno

CODIFICACION Haga doble clic en la Caja de Texto 3 y escriba el siguiente código.

Sub Text3_Click () 'Abrir etiquetas, uso de variables variant y asignación 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:

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 multiplicación de los

Autor: DR. JAVIER DE J. CORTES BRACHO 8

Page 9: Programaci n Con Visual Bas

dos números 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)

que se utiliza para dar instrucciones al usuario y consiste en un texto de una o más líneas, que no pueden ser modificadas por el usuario. Además observe que la codificación 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 genérico. La función Val convierte una cadena de caracteres en un número y la función Str$ convierte un número en una cadena de caracteres. La función Format$ realiza la misma operación que Str$ y además da formato a la salida, de acuerdo con un patrón especificado. Guarde esta aplicación, recuerde guardar Forma y Proyecto. Ejemplo, Prog2.Frm para la Forma y Prog2.Mak para el Proyecto.

PROGRAMA 3: Multiplica dos Números. 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

CAPTION NAME TEXT

FORMA Multiplica dosnúmeros

ETIQUETA 1 Número 1 Label 1 ETIQUETA 2 Número 2 Label 2 ETIQUETA 3 El resultado es Label 3

CAJA DE TEXTO 1

Num 1 Ninguno

CAJA DE TEXTO 2

Num 2 Ninguno

CAJA DE TEXTO 3

Resultado

Ninguno

CODIFICACION Al dar doble clic en la Caja de Texto 3 escriba la siguiente codificación: Sub Resultado_Click () 'Asignación 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

Page 10: Programaci n Con Visual Bas

Y = X1 * X2 Resultado.Text = Format$(Y) End Sub Sub text3_click () End Sub COMENTARIOS Programa similar al anterior cuya única diferencia es la asignación de nombres a las Cajas de Texto. PROGRAMA 4: Multiplica dos Números. Hasta ahora los programas anteriores han mostrado cambiar la posición del cursor con el clic del ratón y en algunas ocasiones es necesario cambiar esta posición con la tecla ENTER, este es el propósito del presente programa: PROPIEDADES CAPTION NAME TEXT

FORMA Multiplica dosnúmeros

ETIQUETA 1 Número 1 Label 1 ETIQUETA 2 Número 2 Label 2 ETIQUETA 3 El resultado es Label 3

CAJA DE TEXTO 1

Num 1 Ninguno

CAJA DE Num 2 Ninguno

TEXTO 2 CAJA DE TEXTO 3

Resultado Ninguno

CODIFICACION De doble clic en la Caja de Texto 1 para escribir la siguiente codificación 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 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)

Autor: DR. JAVIER DE J. CORTES BRACHO 10

Page 11: Programaci n Con Visual Bas

End Sub Sub text3_click () End Sub COMENTARIOS Observe ahora el procedimiento KeyPress, el cual es un suceso que se genera solamente cuando se introduce un caracter ASCII. Esta definición excluye teclas especiales, como teclas de función (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. Además note la expresión SetFocus que permite enfocar el objeto especificado. Después de enfocar un objeto, cualquier entrada del usuario irá dirigida a ese objeto. Corra el programa y compare su ejecución con los programas anteriores. PROGRAMA 5: Multiplica dos Números. Realice el presente programa que es similar al anterior, con la diferencia de codificación en un botón comando. PROPIEDADES CAPTION NAME TEXT

FORMA Multiplica dosnúmeros

ETIQUETA 1 Número 1 Label 1

ETIQUETA 2 Número 2 Label 2 ETIQUETA 3 El resultado es Label 3

BOTON Continuar Command1

CAJA DE TEXTO 1

Num 1 Ninguno

CAJA DE TEXTO 2

Num 2 Ninguno

CAJA DE TEXTO 3

Resultado Ninguno

End Sub

CODIFICACION Sub Command1_Click () 'Uso del botón 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

Sub Num2_KeyPress (keyascii As Integer) If keyascii = 13 Then Command1.SetFocus End If

Autor: DR. JAVIER DE J. CORTES BRACHO 11

Page 12: Programaci n Con Visual Bas

End Sub Sub text3_click () End Sub COMENTARIOS Note al correr el programa el enfoque (SetFocus) sobre la Caja de Text 2 y sobre el botón comando. PROGRAMA 6: Cronómetro. El objetivo del presente programa es reafirmar el uso de las variables Variant, realizando operaciones con horas, minutos y segundos. PROPIEDADES CAPTION NAME TEXT

FORMA Cronómetro BOTON 1 Inicio Command 1 BOTON 2 Final Command 2

ETIQUETA 1 Tiempo transcurrido

Label 1

CAJA DE TEXTO 1

hi Ninguno

CAJA DE TEXTO 2

hf Ninguno

CAJA DE TEXTO 3

hl Ninguno

CODIFICACION Haga doble clic en la Forma, seleccione General en el Objeto de la Ventana de Código y anote lo siguiente: 'Declaración de variables Dim X As Variant Dim Y As Variant Dim lapsus As Variant Ahora codifique en el botón 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 y en el botón 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

Autor: DR. JAVIER DE J. CORTES BRACHO 12

Page 13: Programaci n Con Visual Bas

COMENTARIOS Observe en la codificación el formato que deben tener las horas, minutos y segundos, y su asignación a una variable, en este caso usando la función 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 automáticamente las conversiones necesarias. Otro aspecto importante en este programa es la declaración de variables en General, que es un objeto añadido por Visual Basic y que en su ventana de código se definirán 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 aplicación de los conceptos vistos anteriormente, se muestra que en la Forma también puede haber codificación. PROPIEDADES CAPTION NAME TEXT

FORMA Distancia entre dos puntos

ETIQUETA 1 X1 Label X1 ETIQUETA 2 X2 Label 1 ETIQUETA 3 Y1 Label 2 ETIQUETA 4 Y2 Label 3

ETIQUETA 5 Distancia entre puntos Label 4 ETIQUETA 6 Punto 1 Label 5 ETIQUETA 7 Punto 2 Label 6

CAJA DE TEXTO 1

Text 1 Ninguno

CAJA DE TEXTO 2

Text 2 Ninguno

CAJA DE TEXTO 3

Text 3 Ninguno

CAJA DE TEXTO 4

Text 4 Ninguno

CAJA DE TEXTO 5

Text 5 Ninguno

CAJA DE TEXTO 6

hi Ninguno

CAJA DE TEXTO 7

fecha Ninguno

BOTON encontrar distancia Command 1

Autor: DR. JAVIER DE J. CORTES BRACHO 13

Page 14: Programaci n Con Visual Bas

CODIFICACION En General codificar: Dim x, y, lapsus As Variant Codificar en el botón 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

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 COMENTARIOS Observe al correr el programa que aparecerá en la Forma la fecha y la hora actual, vea su formato en la codificación.

Autor: DR. JAVIER DE J. CORTES BRACHO 14

Page 15: Programaci n Con Visual Bas

Autor: DR. JAVIER DE J. CORTES BRACHO 15

PROGRAMA 8:Conversión de temperaturas. Analice en este programa el uso de Etiquetas, Cajas de Texto y codificación en Botón Comando. PROPIEDADES CAPTION NAME

FORMA Conversión detemperaturas

ETIQUETA 1 GRADOS CENTIGRADOS

Label 1

ETIQUETA 2 GRADOS FAHRENHEIT

Label 2

ETIQUETA 3 GRADOS KELVIN Label 3 BOTON 1 Centígrados a

Fahrenheit Command 1

BOTON 2 Fahrenheit a Centígrados

Command 2

BOTON 3 Centígrados a Kelvin Command 3 BOTON 4 Kelvin a Centígrados Command 4 CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

CAJA DE TEXTO 3

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

Page 16: Programaci n Con Visual Bas

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 PROGRAMA 9: Grados Centígrados a Fahrenheit. Ahora en este programa vea la codificación en Cajas de Texto. PROPIEDADES CAPTION NAME

FORMA Grados Centígrados a Fahrenheit

ETIQUETA 1 GRADOS CENTIGRADOS Label 1 ETIQUETA 2 GRADOS FAHRENHEIT Label 2

CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

TEXT1.Text = Format$(C)

End Sub

CODIFICACION Sub Command1_Click () 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 Text1_KeyPress (keyascii As Integer) 'Uso de etiquetas y codificación 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

End If

Autor: DR. JAVIER DE J. CORTES BRACHO 16

Page 17: Programaci n Con Visual Bas

PROGRAMA 10: Grados Centígrados a Fahrenheit. Aquí observe la modalidad de codificación de la tecla ENTER y operación en el comando Format$. PROPIEDADES CAPTION NAME

FORMA Grados Centígrados a Fahrenheit

ETIQUETA 1 GRADOS CENTIGRADOS Label 1 ETIQUETA 2 GRADOS FAHRENHEIT Label 2

BOTON 1 + 1 Command 1 BOTON 2 - 1 Command 2 BOTON 3 - 1 Command 3 BOTON 4 + 1 Command 5 CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

Sub Command3_Click ()

Dim F As Variant

CODIFICACION Sub COMMAND1_ () End Sub Sub Command1_Click () ' Operaciones en el comando Format$ y codificación 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

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)

'Codificación de tecla "Enter"

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

Autor: DR. JAVIER DE J. CORTES BRACHO 17

Page 18: Programaci n Con Visual Bas

CAPITULO 2 BARRAS DE DESPLAZAMIENTO

INTRODUCCION Las Barras de Desplazamiento (ScrollBars) son a menudo utilizadas en Cajas de Texto y ventanas para desplazar la información hacia abajo, arriba, izquierda o derecha de la ventana, pero también pueden utilizarse como controles de entrada. En el presente capítulo se usarán 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 término como usar las Barras de Desplazamiento dentro de Cajas de Texto con la propiedad Multiline, que permiten escribir en la caja varias líneas de texto. BARRAS DE DESPLAZAMIENTO COMO CONTROLES DE ENTRADA PROGRAMA 11: Proyecto Barra de Desplazamiento. En una Forma dibuje como controles una etiqueta y una Barra de Desplazamiento Horizontal asígnele las siguientes propiedades:

PROPIEDADES PROPIEDADES

FORMA Caption = Proyecto Barra de Desplazamiento

ETIQUETA BorderStyle = 1 ‘Fixed Single FontSize = 12 Name = Label 1

BARRA DE DESPLAZAMIENTO

LargeChange = 10 Max = 100 Min = 0 SmallChange = 2 Name = HScroll 1

El resultado será:

Autor: DR. JAVIER DE J. CORTES BRACHO 18

Page 19: Programaci n Con Visual Bas

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 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 también 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 posición del cursor en la Barra, el cual viene dado por la propiedad Value. PROGRAMA 12: Proyecto Barra 2. En programación un aspecto siempre útil, es conocer la relación entre un caracter y su código 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

PROPIEDADES PROPIEDADESFORMA Caption = Proyecto Barra 2 ETIQUETA1 Caption = Caracter

Name = Label 1 ETIQUETA2 Caption = Código ANSI

Name = Label 2 CAJA DE TEXTO 1 Name = Text 1 CAJA DE TEXTO 2 Name = Text 2 BARRA DE DESPLAZAMIENTO

LargeChange = 20 Max = 255 Min = 0 SmallChange = 1 Name = HScroll 1

Autor: DR. JAVIER DE J. CORTES BRACHO 19

Page 20: Programaci n Con Visual Bas

CODIFICACION Sub HScroll1_Change () 'Obtención del código ANSI text1.Text = " " + Format$(hscroll1.Value) text2.Text = " " + Chr$(hscroll1.Value) End Sub 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 función Chr$ que convierte el valor numérico de la posición 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 creación de combinación de colores, utilice tres Barras de Desplazamiento.

PROPIEDADES PROPIEDADESFORMA Caption = Proyecto

Barra 3 ETIQUETA1 Caption = Rojo

Name = Label 1 ETIQUETA2 Caption = Verde

Name = Label 2 ETIQUETA3 Caption = Azul

Name = Label 3 CAJA DE TEXTO 1 Name = Text 1 BARRA DEDESPLAZAMIENTO 1

LargeChange = 35 Max = 255 Min = 0 SmallChange = 5 Name = HScroll 1

BARRA DEDESPLAZAMIENTO 2

LargeChange = 35 Max = 255 Min = 0 SmallChange = 5 Name = HScroll 2

BARRA DEDESPLAZAMIENTO 3

LargeChange = 35 Max = 255 Min = 0 SmallChange = 5 Name = HScroll 3

Autor: DR. JAVIER DE J. CORTES BRACHO 20

Page 21: Programaci n Con Visual Bas

Autor: DR. JAVIER DE J. CORTES BRACHO 21

CODIFICACION Sub HScroll1_Change () 'Obtención de colores, uso de la función 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

COMENTARIOS En el presente programa, se ha usado la función RGB que permite especificar un color cualquiera, tiene tres parámetros 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 función retoma un entero de cuatro bytes (entero largo) que representa el color RGB especificado. Este valor expresado en hexadecimal de una forma genérica es del tipo &H00AAVVRR. El byte más 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 capítulo, 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 tamaño de Caja de Texto PROPIEDADES PROPIEDADESFORMA Caption = Ajuste de tamaño de Caja de

Page 22: Programaci n Con Visual Bas

Texto CAJA DE TEXTO

Multiline = True Name = Text 1 Text = Text1

CODIFICACION Haga doble clic en la Forma y en la ventana de código seleccione el suceso Resize y codifique lo siguiente: Sub Form_Resize () 'Uso del Procedimiento Resize, para ajustar el tamaño 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 posición, 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 gráficas en Twips, donde una pulgada son 1440 Twips, por lo tanto un centímetro son 567 Twips. Lo más común en una Caja de Texto es el uso de las Barras de Desplazamiento para visualizar la información contenida en ellas, los siguientes programas tienen este objetivo. PROGRAMA 15: Caja de Texto Multiline con ScrollBars. PROPIEDADES

PROPIEDADES

FORMA Caption = Caja de Texto Multiline con ScrollBars

CAJA DE TEXTO

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.

Autor: DR. JAVIER DE J. CORTES BRACHO 22

Page 23: Programaci n Con Visual Bas

Autor: DR. JAVIER DE J. CORTES BRACHO 23

CODIFICACION Sub Text1_Change () 'Propiedades Multiline y un ScrollBars vertical en caja de texto End Sub COMENTARIOS Al correr el programa visualice el texto desplazándolo con la barra vertical (ScrollBar = 1) del lado derecho en la Caja de Texto.

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). Además añada un Botón Comando. PROPIEDADES PROPIEDADESFORMA Caption = Caja de Texto Multiline con

ScrollBars CAJA DETEXTO

Multiline = True ScrollBars = Both Name = Text 1

BOTON Caption = Iniciar Name = Command 1

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

Page 24: Programaci n Con Visual Bas

Autor: DR. JAVIER DE J. CORTES BRACHO 24

COMENTARIOS Como se comentó en el capítulo 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 línea o cambio de renglón.

PROGRAMA 17: Caja de Texto Multiline con ScrollBars. Este programa es similar a el anterior PROPIEDADES PROPIEDADESFORMA Caption = Caja de Texto Multiline con

ScrollBars CAJA DETEXTO

Multiline = True 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

Page 25: Programaci n Con Visual Bas

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 número de veces. PROGRAMA 18: Caja de Texto Multiline con ScrollBars. Realice ahora una presentación de resultados en una Caja de Texto. PROPIEDADES PROPIEDADESFORMA Caption = Caja de Texto Multiline con

ScrollBars CAJA DETEXTO

Multiline = True ScrollBars = Both Name = Text 1 FontName = Courier

BOTON Caption = Resultados Name = Command 1

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

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

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

Autor: DR. JAVIER DE J. CORTES BRACHO 25

Page 26: Programaci n Con Visual Bas

PROGRAMA 19: Caja de Texto Multiline con ScrollBars. En forma similar al anterior realice este programa. PROPIEDADES PROPIEDADESFORMA Caption = Caja de Texto Multiline con

ScrollBars CAJA DETEXTO

Multiline = True ScrollBars = Both Name = Text 1 FontName = Courier

BOTON Caption = Resultados Name = Command 1

CODIFICACION 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$

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 COMENTARIOS Note que aquí se ha usado la función Format$ que da un formato de salida con un patrón específico. PROGRAMA 20: Caja de Texto Multiline con ScrollBars. Ahora observe en la codificación la función Format$ PROPIEDADES PROPIEDADESFORMA Caption = Caja de Texto Multiline con

ScrollBars CAJA DETEXTO

Multiline = True ScrollBars = Both Name = Text 1 FontName = Courier

BOTON Caption = Resultados Name = Command 1

Autor: DR. JAVIER DE J. CORTES BRACHO 26

Page 27: Programaci n Con Visual Bas

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 COMENTARIOS El símbolo # representa un dígito cualquiera, excepto los ceros no significativos, note al correr el programa que el valor de m4 = 9.345 se ha redondeado a dos cifras después del punto 9.35 (por el formato .##)

PROGRAMA 21: Caja de Texto Multiline con ScrollBars. Compare los formatos de salida de los programas 19 y 20 con el presente programa. PROPIEDADES PROPIEDADESFORMA Caption = Caja de Texto Multiline con

ScrollBars CAJA DETEXTO

Multiline = True ScrollBars = Both Name = Text 1 FontName = Courier

BOTON Caption = Resultados Name = Command 1

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$

Autor: DR. JAVIER DE J. CORTES BRACHO 27

Page 28: Programaci n Con Visual Bas

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 símbolo 0 dentro del Format$ representa un dígito cualquiera, incluyendo los ceros no significativos y además 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 posición donde aparece @ se muestra el caracter, que dará forma, se incluye un espacio en esa posición. En resumen los formatos de salida usados, muestran que:

Patrón Entrada32.1

Entrada 31

Entrada 9.345

Sin Patrón

32.1 31 9.345

##.## 32.1 31. 9.35##.00 32.10 31.00 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 PROPIEDADESFORMA 1 Caption = Caja de Texto Multiline con

ScrollBars FORMA 2 Caption = Resultados CAJA DE Multiline = True

Autor: DR. JAVIER DE J. CORTES BRACHO 28

Page 29: Programaci n Con Visual Bas

TEXTO ScrollBars = Both Name = Text 1 FontName = Courier

BOTON Caption = Resultados Name = Command 1

CODIFICACION Sub Command1_Click () 'Añade 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

COMENTARIOS Comparando la codificación del programa anterior con el presente, observe que se ha añadido dos líneas 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 función Project, seleccione la Forma que desea ver y de un clic en View Form.

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 capítulo 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

Page 30: Programaci n Con Visual Bas

CAPITULO 3 CAJAS DE DIALOGO

INTRODUCCION Cuando un programa en un instante determinado de su aplicación necesita para continuar aceptar nuevos datos o bien visualizarlos, se utilizan las cajas de diálogo, cuando una aplicación visualiza una caja de diálogo que necesita ser finalizada explícitamente para que dicho programa pueda continuar (generalmente haciendo clic en el botón OK o en el botón Cancelar), se dice que es un caso de caja de diálogo modal. Si no es así, se estará en un caso de una caja de diálogo sin modo, que permite al usuario pasar a otra ventana sin cerrar antes la caja de diálogo. En el presente capítulo, se verá el uso de las cajas de diálogo 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 información que debe introducir. CAJAS DE MENSAJE La sentencia MsgBox, visualiza un mensaje en una caja de diálogo, realice el siguiente programa para observar cual es la sintaxis apropiada para este propósito.

PROGRAMA 23: Caja de Mensaje. PROPIEDADES CAPTION NAME TEXT

FORMA Caja de Mensaje ETIQUETA Escriba un número

entre -32768 y 32767

Label 1

BOTON Continuar Command 1 CAJA DE TEXTO

Text 1 Ninguno

CODIFICACION Sub Command1_Click () 'Uso de la función 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

Page 31: Programaci n Con Visual Bas

text1.SetFocus End Sub Al correr el programa aparecerán las siguientes cajas de mensaje:

COMENTARIOS Note que en la sintaxis de la sentencia MsgBox, se encuentra un número entero “tipo” (16, 32, 64), este número describe el tipo de caja de mensaje, el estilo del icono y el botón por defecto. Para ver la totalidad de los valores del entero tipo, vea la ayuda que Visual Basic da para MsgBox o mejor aún, realice el siguiente programa.

PROGRAMA 24: Caja de Mensaje (Función) PROPIEDADES CAPTION NAME TEXT MULTILINE

FORMA Caja de Mensaje (Función)

ETIQUETA Escriba un número

Label 1

BOTON Continuar Command 1 CAJA DE TEXTO 1

Text 1 Ninguno

CAJA DE TEXTO 2

Text 2 Ninguno True

CODIFICACION

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

Autor: DR. JAVIER DE J. CORTES BRACHO

31

Page 32: Programaci n Con Visual Bas

MsgBox msg, (x), "NUMERO" End Sub Sub Form_Load () 'Cada número siguiente tiene un significado o representación de la función MsgBox TEXT2.Text = "Números válidos = 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 COMENTARIOS Al correr el programa escriba en la caja de texto un número de los que aparecen como válidos y al hacer clic en Continuar, se visualizará la caja de mensaje asociada a ese número. De esta manera podrá buscar las cajas de mensaje más apropiadas para sus proyectos. PROGRAMA 25: Caja de Mensaje (Función) Ahora bien, una vez que ha seleccionado que caja de mensaje va ha utilizar, el siguiente paso es asignar codificación a los botones que aparecen en dicha caja de mensaje, se muestra un ejemplo en este programa.

PROPIEDADES CAPTION NAME TEXT MULTILINE

FORMA Caja de Mensaje (Función)

ETIQUETA Escriba un número

Label 1

BOTON Continuar Command 1 CAJA DE TEXTO 1

Text 1 Ninguno

CAJA DE TEXTO 2

Text 2 Ninguno True

CODIFICACION Sub Command1_Click () 'Significado de los valores de botones Sí, No, Cancelar en ' la función MsgBox Dim x As Integer Dim msg As String x = Val(text1.Text) If x > 10 Then msg = "Número mayor que 10" Else msg = "Número menor que 10" End If z = MsgBox(msg, (67), "Número") 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

Page 33: Programaci n Con Visual Bas

End If If z = 2 Then text2.Text = "Seleccionaste Cancelar" End If End Sub COMENTARIOS Al correr el programa al dar un número 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.

Si hace clic en Sí aparecerá un mensaje que indica que este botón fue el seleccionado, observe que el botón “Sí” está asociado a el valor 6, como el botón “No” a el 7 y el botón “Cancelar” a el número 2, de hecho, el valor tomado en la función MsgBox indica cual botón ha sido seleccionado tal como se muestra en el siguiente cuadro:

Valor Significado

1 OK2 Cancelar3 Abortar4 Reintentar5 Ignorar6 Sí7 No

PROGRAMA 26: Letras en una Caja de Mensaje.

Vea en este programa como crear una cadena de caracteres usando un bucle (For...Next) además note al correr el programa como aparece esta serie de caracteres en una caja de mensaje. PROPIEDADES CAPTION NAME TEXT

FORMA Letras en Caja de Mensaje ETIQUETA Haga Clic en cualquier parte

dentro de la Forma. Label 1

CODIFICACION Sub Form_Click () 'Este programa muestra: 'a).- La acción clic en la forma 'b).- El uso de código ANSI en un loop 'c).- Como unir texto usando el símbolo +

Autor: DR. JAVIER DE J. CORTES BRACHO

33

Page 34: Programaci n Con Visual Bas

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

La función InputBox$ visualiza una caja de diálogo con un mensaje que indica al usuario el tipo de información que debe introducir, observe esto en el siguiente programa, en el cual la información que se asigna a la caja de texto es por medio de una caja de entrada. PROGRAMA 27: Caja de Entrada.

PROPIEDADES CAPTION NAME TEXT

FORMA Caja de Entrada BOTON Continuar Command 1

CAJA DE TEXTO

Text 1 Ninguno

CODIFICACION

Sub Command1_Click () 'Uso de la función 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 continuación, escriba su nombre donde aparece el cursor y haga clic en el botón de OK, su nombre aparecerá en la caja de texto. PROGRAMA 28: Caja de Entrada. En la codificación de este programa, vea cual es la manera de asignar a una variable la información de una caja de entrada, note también 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.

Autor: DR. JAVIER DE J. CORTES BRACHO

34

Page 35: Programaci n Con Visual Bas

PROPIEDADES CAPTION NAME TEXTFORMA Caja de

Entrada

BOTON Continuar Command 1 CODIFICACION Sub Command1_Click () 'Uso de la función InputBox, Do...Loop Until y MsgBox Dim Respuesta, valor, msg, titulo msg = "Escriba un Número entre 1 y 3" titulo = "Demostración de InputBox" valor = "1" Do Respuesta = InputBox(msg, titulo, valor) Loop Until Respuesta >= 1 And Respuesta <= 3 MsgBox "El Número Seleccionado es" & Respuesta End Sub

COMENTARIOS

En la codificación se ha usado la sentencia Do...Loop Until que es un bucle el cual repite la ejecución de un conjunto de sentencias mientras una condición dada sea cierta.

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

Autor: DR. JAVIER DE J. CORTES BRACHO

35

Page 36: Programaci n Con Visual Bas

PROPIEDADES CAPTION NAME TEXT

FORMA Incluye una palabra clave ETIQUETA 1 ¿Cual es la palabra clave? Label 1 ETIQUETA 2 Encuéntrala corriendo el

programa Label 2

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

Page 37: Programaci n Con Visual Bas

CAPITULO 4 ACTIVAR O DESACTIVAR OPCIONES

INTRODUCCION El presente capítulo se refiere a el uso de las Casillas de Verificación (CheckBox), las cuales son controles que indican si una opción particular esta activada o desactivada. Cada casilla de verificación es independiente de las demás, ya que cada una de ellas tiene su propio nombre (propiedad Name). El número de opciones representadas de esta forma puede ser cualquiera, y de ellas el usuario puede seleccionar todas las que desee. Se analiza también el uso de Botones de Opción que son controles que indican si una determinada opción esta activada o desactivada. Cada botón de opción al igual que las casillas de verificación es independiente de los demás, ya que también tiene su propio nombre (propiedad Name). El número de opciones representadas puede ser cualquiera y de ellos el usuario solo puede seleccionar una cada vez. Como se ha visto hasta ahora, la ejecución de los programas se realiza sin que el usuario tenga la opción de tomar una decisión, observe un ejemplo en el siguiente programa.

PROGRAMA 30: Mayúsculas en Caja de Texto. PROPIEDADES CAPTION NAME TEXT

FORMA Mayúsculas en Caja de Texto

CAJA DE TEXTO

Text 1 Ninguno

CODIFICACION Sub Text1_KeyPress (keyascii As Integer) 'Este programa transforma minúsculas en mayúsculas '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 función Chr$. En tanto que las funciones Asc(a$) devuelve el valor ASCII del caracter a$ y Ucase(a$), convierte el caracter a$ a mayúsculas.

Autor: DR. JAVIER DE J. CORTES BRACHO

37

Page 38: Programaci n Con Visual Bas

PROGRAMA 31: Código ASCII PROPIEDADES CAPTION NAME TEXT

FORMA NúmeroASCII

ETIQUETA 1 CARACTER Label 1 ETIQUETA 2 CODIGO Label 2

CAJA DE TEXTO

Text 1 Ninguno

CODIFICACION Sub Text1_KeyPress (keyascii As Integer) 'Este programa imprime el código ANSI de la tecla oprimida a$ = " " + Format$(keyascii) text1.Text = a$ End Sub CASILLAS DE VERIFICACION Si en la ejecución de un programa se hace clic en una casilla de verificación, la opción queda seleccionada (⌧). Una opción ya seleccionada puede pasar a no estarlo haciendo clic de nuevo sobre la casilla de verificación ( ). En el siguiente programa utilice la caja de herramientas de Visual Basic para dibujar sobre la forma una casilla de verificación

(CheckBox). y observe la opción de seleccionar. PROGRAMA 32: Mensaje en Caja de Texto. PROPIEDADES CAPTION NAME TEXT VALUE

FORMA Mensaje en Caja de Texto

CHECKBOX Check1 Check1 CheckedCAJA DE TEXTO

Text 1 Ninguno

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

Autor: DR. JAVIER DE J. CORTES BRACHO

38

Page 39: Programaci n Con Visual Bas

COMENTARIOS Note que la codificación 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 codificación que se ha realizado en la forma (Form_Load ()) y corresponde a la opción seleccionada en la casilla de verificación (Check 1) dado que el valor con que inicia esta casilla es Checked ó 1 (asignado en las propiedades).

Compare el siguiente programa con el programa 30, y observe como el usuario tiene la opción de cambiar de minúsculas a mayúsculas mediante una casilla de verificación.

PROGRAMA 33: Convierte a Mayúsculas. PROPIEDADES CAPTION NAME TEXT VALUE

FORMA Convierte aMayúsculas

CHECKBOX convierte amayúsculas

Check1 0

CAJA DE TEXTO

Text1 Ninguno

ETIQUETA Escriba un texto en minúsculas

Label1

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

Page 40: Programaci n Con Visual Bas

keyascii = Asc(car) End If End Sub

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

FORMA Cambia tipode letra

CAJA DE TEXTO

Text 1 Ninguno

CHECKBOX 1 Negritas Check1 Checked CHECKBOX 2 Itálicas Check2

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

Autor: DR. JAVIER DE J. CORTES BRACHO

40

Page 41: Programaci n Con Visual Bas

Autor: DR. JAVIER DE J. CORTES BRACHO

41

BOTONES DE OPCION Si al correr un programa se hace clic sobre un botón de opción, la opción queda seleccionada ( ), la selección de una opción de este tipo provoca que la opción que anteriormente estaba seleccionada pase a no estarlo ( ). Para saber si una determinada opción está seleccionada, hay que verificar el valor de su propiedad (Value). Este valor puede ser falso (False), el circulo aparece vacío, o verdadero (True), el circulo aparece con un . Cuando una opción 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.

Seleccione de la tabla de herramientas los botones de opción que requiera para realizar los siguientes programas. PROGRAMA 35: Suma, Resta, Multiplicación y División. PROPIEDADES CAPTION NAME

FORMA Suma, Resta, Multiplicacióny División

ETIQUETA 1 1er valor Label 1 ETIQUETA 2 2o valor Label 2 ETIQUETA 3 RESULTADO Label 3

CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

CAJA DE TEXTO 3

Text 3

BOTON OPCION 1

SUMA SUMA

BOTON OPCION 2

RESTA RESTA

BOTON OPCION 3

PRODUCTO PRODUCTO

BOTON DIVISION DIVISION

Page 42: Programaci n Con Visual Bas

OPCION 4 BOTON

COMANDO Ejecutar Command 1

CODIFICACION Sub Command1_Click () 'Uso de Botones de Opción; Codificación en Botón 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, Multiplicación y División. A diferencia con el programa anterior, la codificación es en cada botón de opción. PROPIEDADES CAPTION NAME

FORMA Suma, Resta, Multiplicación y División

ETIQUETA 1 1er valor Label 1 ETIQUETA 2 2o valor Label 2 ETIQUETA 3 RESULTADO Label 3

CAJA DE Text 1

Autor: DR. JAVIER DE J. CORTES BRACHO

42

Page 43: Programaci n Con Visual Bas

TEXTO 1 CAJA DE TEXTO 2

Text 2

CAJA DE TEXTO 3

Text 3

BOTON OPCION 1

SUMA SUMA

BOTON OPCION 2

RESTA RESTA

BOTON OPCION 3

PRODUCTO PRODUCTO

BOTON OPCION 4

DIVISION DIVISION

Sub SUMA_Click ()

TEXT3.Text = Format$(Val(TEXT1.Text) + Val(text2.Text))

Sub Text1_KeyPress (keyascii As Integer)

text2.SetFocus

CODIFICACION Sub DIVISION_Click () 'Codificación en Botones de Opción 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

End Sub

If keyascii = 13 Then

End If End Sub PROGRAMA 37: Colores con Botones de Opción. Se presenta en este programa varios botones de opción con su codificación para seleccionar color a una caja de texto que se encuentra dentro de una Caja de Imagen (PictureBox), dibuje esta caja de imagen con:

PROPIEDADES CAPTION NAME TEXT MULTI

LINE FORMA Colores con

Botones de Opción

ETIQUETA 1 BackColor Label 1 ETIQUETA 2 ForeColor Label 2

CAJA IMAGEN

Picture 1

Autor: DR. JAVIER DE J. CORTES BRACHO

43

Page 44: Programaci n Con Visual Bas

CAJA DE TEXTO 1

Text 1 Ejemplode caja de texto dentro de imagen

True

BOTON OPCION 1

AZUL Option 1

BOTON OPCION 2

AMARILLO Option 2

BOTON OPCION 3

ROJO Option 3

BOTON OPCION 4

VERDE Option 4

BOTON OPCION 5

BLANCO Option 5

BOTON OPCION 6

AZUL Option 6

BOTON OPCION 7

AMARILLO Option 7

BOTON OPCION 8

ROJO Option 8

BOTON OPCION 9

VERDE Option 9

BOTON OPCION 10

BLANCO Option 10

BOTON OPCION 11

NEGRO Option 11

BOTON OPCION 12

NEGRO Option 12

CODIFICACION Sub Option1_Click ()

'Cajas de Texto dentro de Imagen y 'Codificación de colores en Botones de Opción (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&

Autor: DR. JAVIER DE J. CORTES BRACHO

44

Page 45: Programaci n Con Visual Bas

Autor: DR. JAVIER DE J. CORTES BRACHO

45

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 código o que se ha importado de algún archivo. En este programa se ha dibujado una caja de texto dentro de la caja imagen.

Page 46: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

46

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 número de los que pueden ser visualizados simultáneamente en el espacio disponible de la Lista, aparecerá automáticamente 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 múltiples columnas (no en una Lista Desplegable). Si el ancho total de las columnas supera al ancho de la Lista, aparecerá automáticamente 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 características 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 además, el usuario puede sugerir otros que no estén en la lista.

PROGRAMA 38: Lista de libros prestados. Dibuje en la forma los controles que se indican a continuación y asigne las propiedades correspondientes a cada uno de ellos. El control Lista (ListBox) dibújelo con el siguiente icono de la caja de herramientas.

PROPIEDADES CAPTION NAME SORTED

FORMA Lista de libros prestados

ETIQUETA 1 AUTOR Label 1 ETIQUETA 2 TITULO Label 2 ETIQUETA 3 NUM. DE LIBROS Label 3

CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

CAJA DE TEXTO 3

Text 3

LISTA PRESTAMO True BOTON 1 AÑADIR Command 1 BOTON 2 REMOVER Command 2

Page 47: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

47

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 añadiendo para conformar la lista, aparecerán clasificados por autor en forma alfabética. Además observe en la codificación los siguientes términos: AddItem: Permite añadir un elemento a una lista. ListCount: Da como resultado el número de elementos que hay en una lista. ListIndex: Da la posición respecto de 0 del elemento seleccionado. RemoveItem: Elimina un elemento de una lista.

Page 48: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

48

Al correr el programa, teclee el nombre en la caja de texto y de un clic en el botón AÑADIR (se ejecutará la sentencia AddItem), si hace subsecuentemente esta operación usted formará una lista de libros. Si de esta lista selecciona con el ratón un elemento (ListIndex) y da un clic en el botón REMOVER, se elimina el elemento de la lista (sentencia RemoveItem), note como cambia la visualización del número de elementos de la lista (ListCount). PROGRAMA 39: Lista de clientes. En este programa se ha realizado la codificación en la Lista. PROPIEDADES CAPTION NAME SORTED

FORMA Lista de clientes ETIQUETA 1 Label 1 ETIQUETA 2 Número de

clientes Label 2

ETIQUETA 3 NOMBRE Label 3 CAJA DE TEXTO

1 Text 1

LISTA Cliente True BOTON 1 AÑADIR Command 1 BOTON 2 REMOVER Command 2 BOTON 3 LIMPIAR Command 3 BOTON 4 CERRAR Command 4

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

Page 49: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

49

End Sub Sub Command4_Click () End End Sub Sub Text1_Change () Command1.Enabled = (Len(text1.Text) > 0) End Sub COMENTARIOS Al correr el programa, después de añadir el primer nombre, el botón AÑADIR aparece deshabilitado y el cursor en la caja de texto esperando un nuevo nombre, al empezar a teclear el nombre, observe como el botón AÑADIR se habilita, esto es posible por la propiedad Enabled. De igual forma si selecciona con un clic un nombre de la lista el botón AÑADIR se deshabilita dejando habilitado a el botón REMOVER. Note también, que si da un doble clic en un nombre de la lista, se ejecutará la acción de REMOVER (procedimiento Cliente_DblClick ()). En este programa también se ha usado el termino Clear que borra el contenido de la Lista. PROGRAMA 40: Dos listas.

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

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 NAME SORTED

FORMA Dos listas LISTA 1 List 1 True LISTA 2 List 2 True

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

Page 50: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

50

Sub Command1_Click () 'Uso de dos ListBox, transferencia de información 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 "Ramírez Juan" List1.AddItem "Aguayo María" List1.AddItem "González Rocío" 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 NAME COLUMNS FORMA Dos listas con dos

columnas

LISTA 1 List 1 2 LISTA 2 List 2 2

BOTON 1 TRANSFERIR Command 1 BOTON 2 LIMPIAR Command 2 BOTON 3 SALIR Command 3 CODIFICACION 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)

Page 51: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

51

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 "María" List1.AddItem "Rocío" List1.AddItem "Catarino" List1.AddItem "Ala" List1.AddItem "Patricia" List1.AddItem "Lucas" List1.AddItem "Juan" List1.AddItem "Umbe" End Sub COMENTARIOS Corra el programa y observe como aparecen dos columnas en la lista uno. Seleccione un nombre y transfiéralo a la lista dos, puede repetir esta operación cuantas veces quiera, note que también se forman dos columnas en la lista dos.

Los programas anteriores del presente capítulo presentan listas fijas, a diferencia de los siguientes programas que involucran listas desplegables, también denominadas cuadros combinados o Combos (ComboBox) los cuales son una combinación de una lista y una caja de texto. Para dibujar un Combo utilice de la caja de herramientas el icono

Page 52: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

52

PROGRAMA 42: Cajas combinadas. PROPIEDADES CAPTION NAME TEXT STYLE

FORMA Cajas combinadas ETIQUETA 1 Destino Label 1 ETIQUETA 2 Preferencia de

asiento Label 2

ETIQUETA 3 Preferencia de comida

Label 3

COMBO 1 Combo 1 País 1 COMBO 2 Combo 2 Ventana 2 COMBO 3 Combo 3 Comida 0 BOTON 1 Aceptar Command 1 BOTON 2 Cancelar Command 2

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

Sub Form_Load () combo1.AddItem "París" combo1.AddItem "Moscú" combo1.AddItem "Nueva York" combo1.AddItem "Comales" combo1.AddItem "Díaz Ordaz" combo1.AddItem "Monterrey" combo1.AddItem "Marín" combo2.AddItem "Pasillo" combo2.AddItem "Ventana" combo2.AddItem "Centro" combo3.AddItem "Pollo" combo3.AddItem "Vegetariano" combo3.AddItem "Dietético" 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 estándar. De esta manera cuando el usuario haga clic en la

Page 53: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

53

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 además en la codificación la sentencia Debug.Print asociada a cada uno de los Combos, lo cual permite escribir directamente sobre una ventana de depuración (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 botón Aceptar, note que aparecen sus elecciones en una ventana de depuración (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 información y en la forma 2 presentar los resultados. PROPIEDADES CAPTION NAME TEXT STYLE

FORMA 1 Cajas combinadas ETIQUETA 1 Destino Label 1 ETIQUETA 2 Preferencia de

asiento Label 2

ETIQUETA 3 Preferencia de comida

Label 3

ETIQUETA 4 Label 4 Label 4 ETIQUETA 5 NOMBRE Label 5

COMBO 1 Combo 1 País 1 COMBO 2 Combo 2 Ventana 0 COMBO 3 Combo 3 Comida 0 BOTON 1 Aceptar Command 1 BOTON 2 Cancelar Command 2 BOTON 3 Resultados Command 3

Page 54: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

54

CAJA DE TEXTO

Text 1

CAPTION NAME MULTILINE SCROLL

BARS FORMA 2 Resultados

ETIQUETA 1 Label 1 Label 1 ETIQUETA 2 Nombre Label 2 ETIQUETA 3 Destino Label 3 ETIQUETA 4 Asiento Label 4 ETIQUETA 5 Comida Label 5

CAJA DE TEXTO Text 1 True Both CODIFICACION Dim a$ Sub Command1_Click () 'El objetivo del programa en mostrar los ComboBox e impresión 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 () 'Impresión de resultados en la Forma 2 form2.Show

End Sub Sub Form_Load () combo1.AddItem "París" combo1.AddItem "Moscú" combo1.AddItem "Nueva York" combo1.AddItem "Comales" combo1.AddItem "Díaz Ordaz" combo1.AddItem "Monterrey" combo1.AddItem "Marín" combo2.AddItem "Pasillo" combo2.AddItem "Ventana" combo2.AddItem "Centro" combo3.AddItem "Pollo" combo3.AddItem "Vegetariano" combo3.AddItem "Dietético" combo3.AddItem "Yonk food" End Sub COMENTARIOS La sentencia Dim a$ con que inicia la codificación esta declarada en General recuerde este aspecto señalado en el programa 6 del capítulo 1. Corra el programa y teclee un nombre y sus elecciones y de un clic en el botón Aceptar. Repita este procedimiento para varios nombres y posteriormente haga clic en el botón Resultados, observe como se presenta una relación de nombres y sus elecciones en la forma dos.

Page 55: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

55

PROGRAMA 44: Cajas combinadas. Realice este programa que engloba lo visto en el presente capítulo, corra el programa y observe como la presentación de la hoja de resultados se ha mejorado en comparación con el programa anterior mediante la asignación de la información contenida en los ComboBox a los ListBox. PROPIEDADES CAPTION NAME TEXT STYLE

FORMA 1 Cajas combinadas ETIQUETA 1 Destino Label 1 ETIQUETA 2 Preferencia de

asiento Label 2

ETIQUETA 3 Preferencia de comida

Label 3

ETIQUETA 4 Label 4 Label 4 ETIQUETA 5 NOMBRE Label 5

COMBO 1 Combo 1 País 1 COMBO 2 Combo 2 Ventana 0 COMBO 3 Combo 3 Comida 0 BOTON 1 Aceptar Command 1 BOTON 2 Cancelar Command 2 BOTON 3 Resultados Command 3 CAJA DE TEXTO

Text 1

CAPTION NAME

FORMA 2 Resultados ETIQUETA 2 Nombre Label 2 ETIQUETA 3 Destino Label 3

ETIQUETA 4 Asiento Label 4 ETIQUETA 5 Comida Label 5

LISTA 1 List 1 LISTA 2 List 2 LISTA 3 List 3 LISTA 4 List 4

CODIFICACION Dim a$, b$, c$, d$ Sub Command1_Click () 'Asignación de información 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$

Page 56: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

56

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 "París" combo1.AddItem "Moscú" combo1.AddItem "Nueva York" combo1.AddItem "Comales" combo1.AddItem "Díaz Ordaz" combo1.AddItem "Monterrey" combo1.AddItem "Marín" combo2.AddItem "Pasillo" combo2.AddItem "Ventana" combo2.AddItem "Centro" combo3.AddItem "Pollo" combo3.AddItem "Vegetariano" combo3.AddItem "Dietético" combo3.AddItem "Yonk food" End Sub

Page 57: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

57

CAPITULO 6 LECTURA DE UNA SERIE DE DATOS

INTRODUCCION En muchas situaciones, un programa de computadora es usado para realizar cálculos con una serie de valores. El propósito de este capítulo es presentar diferentes maneras de leer los datos que posteriormente serán procesados, se incluye aquí controles y sentencias que se han visto en capítulos anteriores, además de el uso de tablas de información mediante el control Rejilla (Grid) que permitirá visualizar la serie de datos en filas y columnas. PROGRAMA 45: Cálculo de la Media. Realice este programa en el cual mediante dos botones comando, uno para ir añadiendo 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 cálculos con ellos. PROPIEDADES

CAPTION NAME FORMA Cálculo de la Media

ETIQUETA 1 Datos Label 1 ETIQUETA 2 MEDIA Label 2

CAJA DE TEXTO 1 Text 1

CAJA DE TEXTO 2 Text 2 BOTON 1 Añadir Dato Command 1 BOTON 2 Calcular Command 2

CODIFICACION 'Declaración 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 () 'Cálculo 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

Page 58: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

58

COMENTARIOS Observe en la codificación referente a la declaración de variables en general, la proposición Dim X(20), que especifica el número máximo de elementos (en este caso 20) del arreglo de la variable (X), que en términos matemáticos 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 añadido con el botón comando para que sea considerado en el cálculo de la media. El procedimiento de cálculo se ejecuta en el botón comando Calcular.

PROGRAMA 46: Cálculo de la Media. Calcule nuevamente la media de una serie de observaciones, pero ahora usando una caja de texto y un botón comando. PROPIEDADES

CAPTION NAME FORMA Cálculo de la Media

ETIQUETA 1 Datos Label 1 ETIQUETA 2 MEDIA Label 2

CAJA DE TEXTO 1 Text 1 CAJA DE TEXTO 2 Text 2

BOTON 2 Calcular Command 2 CODIFICACION 'Declaración de variables en General Dim X(20) Dim i, n As Integer Dim a$ Sub Command2_Click () 'Cálculo 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)

Page 59: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

59

End Sub 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 COMENTARIOS Corra el programa y teclee un valor en la caja de texto. Para que este valor sea considerado en el cálculo, 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 botón Calcular para obtener la media de las observaciones. PROGRAMA 47: Cálculo de la Media. Ahora defina el número total de observaciones al correr el programa.

PROPIEDADES

CAPTION NAME FORMA Cálculo de la Media

ETIQUETA 1 Datos Label 1 ETIQUETA 2 MEDIA Label 2 ETIQUETA 3 Total de datos, N= Label 3

CAJA DE TEXTO 1 Text 1 CAJA DE TEXTO 2 Text 2 CAJA DE TEXTO 3 Text 3

BOTON 2 Calcular Command 2 CODIFICACION 'Declaración de variables en General Dim X(20) Dim i, N As Integer Dim a$ Sub Command2_Click () 'Cálculo 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

Page 60: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

60

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 () 'Número de observaciones End Sub

PROGRAMA 48: Cálculo 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 NAME FORMA Cálculo de la Media

ETIQUETA 1 Label 1 ETIQUETA 2 MEDIA Label 2 ETIQUETA 3 N= Label 3

CAJA DE TEXTO 1 Text 1 CAJA DE TEXTO 2 Text 2 CAJA DE TEXTO 3 Text 3

BOTON 2 Calcular Command 2 CODIFICACION 'Declaración de variables en General Dim X(20) Dim I, N As Integer Dim a$ Sub Command2_Click () 'Cálculo de la Media Dim media, sum As Variant N = Val(Text3.Text) sum = 0 For I = 1 To N

Page 61: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

61

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 leídos" command2.SetFocus label1.Caption = "" End If End If End Sub Sub Text3_KeyPress (KEYASCII As Integer) 'Número 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 número 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 leídos), calcule la media de las observaciones presionando ENTER o haciendo clic en el botón Cálculo.

Page 62: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

62

PROGRAMA 49: Cálculo 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 NAME STYLE FORMA Cálculo de la Media

ETIQUETA 1 Valor de Label 1 ETIQUETA 2 Número de Observaciones Label 2 ETIQUETA 3 Media de las Observaciones Label 3 ETIQUETA 4 X Label 4 ETIQUETA 5 ¿Desea el cálculo de una nueva

serie de datos? Label 5

CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

COMBO Datos 1 BOTON 1 Cálculo de la Media Command 1 BOTON 2 SI Command 2 BOTON 3 NO Command 3

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

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 () 'Cálculo 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 = ""

Page 63: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

63

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 leídos" 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 están visibles (recuerde lo visto en el programa 42 del capítulo anterior).

Page 64: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

64

El siguiente programa es una forma más completa de leer una serie de datos, dado que no solamente se puede visualizar y controlar toda la serie, sino que también es posible su manipulación, 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 información o Rejilla (Grid). PROGRAMA 50: Cálculo de la Media. Dibuje sobre la Forma el control Marco o Caja de Grupo (Frame)

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 Botón Comando y una Rejilla (Grid), para esta última utilice de la barra de herramientas el icono y asigne las siguientes propiedades. PROPIEDADES

CAPTION NAME OTROS FORMA Cálculo de la

Media

ETIQUETA 1 N= Label 1 ETIQUETA 2 Valor de la

Media Label 2

FRAME Leer Datos Frame 1 GRID Grid 1 Cols 2;

Rows10 CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

BOTON 1 Continuar Command 1 BOTON 2 Calcular Command 2

Page 65: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

65

CODIFICACION 'Declaración de variables en General Dim Z$ Dim n As Integer Sub Command1_Click () 'Asignación 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) 'Asignación 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

Page 66: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

66

Sub Grid1_RowColChange () Z$ = "" End Sub COMENTARIOS Observe las propiedades de la Rejilla (Grid) en relación a el número de columnas (Cols 2) y al número de hileras (Rows 10) y note como al correr el programa, el cursor aparece esperando el número total de datos (N), si este valor supera a el número de hileras definido en las propiedades, automáticamente 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 diseñado 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 información en celdas. Una celda es la región formada por la intersección 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 ejecución se puede actuar con el ratón sobre las filas o columnas y modificar el tamaño de las celdas. Para ello, sitúe

el cursor del ratón sobre cualquier línea divisoria y cuando cambie su aspecto, pulse el botón derecho y arrastre. Con el uso de una Rejilla y la codificación apropiada, es posible corregir fácilmente un valor erróneo, simplemente selecciónelo con el ratón o con las flechas de movimiento de cursor y oprima la tecla BakeSpace, luego escriba el nuevo valor.

PROGRAMA 51: Cálculo 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.

Page 67: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

67

PROPIEDADES

CAPTION NAME OTROS FORMA Cálculo de la Media

ETIQUETA 1 N= Label 1 ETIQUETA 2 Valor de la Media Label 2 ETIQUETA 3 Si desea dar el nombre de la

variable haga Label 3

FRAME Leer Datos Frame 1 FRAME Doble Clic aquí Frame 2 GRID Grid 1 Cols 2;

Rows10 CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

BOTON 2 Calcular Command 2

CODIFICACION 'Declaración 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"

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 Grid1_KeyPress (keyascii As Integer) 'Asignación 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

Page 68: Programaci n Con Visual Bas

Autor:Dr. Javier de Jesús Cortés Bracho

68

Z$ = "" Grid1.Clip = Z$ End If End Sub Sub Grid1_RowColChange () Z$ = "" End Sub Sub Text1_KeyPress (keyascii As Integer) 'Asignación 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 dentro de la codificación la propiedad ColWidth que determina el ancho de la columna especificada.

Page 69: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 69

CAPITULO 7

PROCEDIMIENTOS Y FUNCIONES INTRODUCCIÓN Visual Basic provee funciones con las que se pueden hacer operaciones aritméticas y comparaciones, tal es el caso de los formatos de fechas y horas. Además se ha visto que la base de una aplicación en Visual Basic, la forman sus procedimientos conducidos por sucesos (recuerde que un procedimiento conducido por un suceso es el código 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 código común en un procedimiento general, que será invocado desde cada procedimiento por un suceso que necesite ejecutar dicho código. De esta forma se elimina la necesidad de duplicar código. Un procedimiento general es invocado cuando se hace una llamada explícita al mismo. Un procedimiento general puede escribirse como procedimiento Sub o como una Función (Function). Un procedimiento conducido por un suceso siempre es un procedimiento Sub. Estos tópicos serán tratados en el presente capítulo iniciando con ejemplos de operaciones con funciones, principalmente de los formatos de fechas y horas y posteriormente programas que tienen procedimientos en general.

Programa 52: Diferentes formatos de fechas y horas. En primer lugar, en este programa se usa la función 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 capítulo 1. PROPIEDADES CAPTION NAME

FORMA Diferentes formatos de fechas y horas

BOTON COMANDO Mostrar fecha y hora Command 1 CAJA DE TEXTO 1 Text 1 CAJA DE TEXTO 2 Text 2 CAJA DE TEXTO 3 Text 3 CAJA DE TEXTO 4 Text 4 CAJA DE TEXTO 5 Text 5 CAJA DE TEXTO 6 Text 6 CAJA DE TEXTO 7 Text 7 CAJA DE TEXTO 8 Text 8 CAJA DE TEXTO 9 Text 9

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

Page 70: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 70

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 número a fecha. PROPIEDADES CAPTION NAME

FORMA Número convertido a fecha BOTON COMANDO Cambiar el número a fecha Command 1

ETIQUETA 1 Escriba un número Label 1 ETIQUETA 2 Fecha Label 2

CAJA DE TEXTO 1 Text 1 CODIFICACION Sub Command1_Click () 'CvDate regresa la fecha de un número dado a = CvDate(text1.Text) text2.Text = Format(a) End Sub COMENTARIOS: En este programa se utilizó la función CvDate, la cual convierte un valor a fecha. El valor en la caja de texto representa el número de días que han transcurrido desde el 31de Diciembre de 1899.

Page 71: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 71

Programa 54: Diferencia entre dos fechas. En muchas áreas de la ciencia es frecuente contabilizar los días entre dos fechas, este programa muestra esta operación con el uso de la función DateDiff. PROPIEDADES CAPTION NAME

FORMA Diferencia entre dos fechas BOTON COMANDO Calcular diferencia Command 1

ETIQUETA 1 Fecha Label 1 ETIQUETA 2 Diferencia en días de la fecha dada

al día de hoy Label 2

CAJA DE TEXTO 1 Text 1 CAJA DE TEXTO 2 Text 2

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.

PROPIEDADES CAPTION NAME

FORMA Cambia la fecha del sistema BOTON COMANDO

1 Si Command 1

BOTON COMANDO 2

No Command 2

ETIQUETA 1 ¿Desea cambiar la fecha del sistema?

Label 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 válida. 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"

Page 72: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 72

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 código que podrá ser usado en otro procedimiento particular. 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

FORMA Ejemplo 1 de un procedimiento o subrutina

BOTON COMANDO 1

Mostrar Command 1

CAJA DE TEXTO Text 1 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”.

Al dar clic en el botón OK aparecerá una ventana con el objeto general y procedimiento “mensaje”. Teclee la codificación que le corresponde.

CODIFICACION

Page 73: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 73

Sub Command1_Click () 'Ejecución 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 COMENTARIOS: Observe al correr el programa como la codificación de la subrutina “mensaje” (Procedimiento general) es ejecutada en el botón comando (procedimiento particular). Programa 57: Ejemplo 2 de un procedimiento o subrutina. PROPIEDADES CAPTION NAME

FORMA Ejemplo 2 de un procedimiento o subrutina

BOTON COMANDO 1

Mostrar Command 1

CAJA DE TEXTO Text 1 ETIQUETA Ejemplo de un procedimiento que

llama a otro procedimiento Label 1

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.

CODIFICACION Sub Command1_Click () 'Ejecución 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

Page 74: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 74

COMENTARIOS: Note en la codificación como la subrutina o procedimiento mensaje se ejecuta en el procedimiento Proc2 y a su vez, el procedimiento Proc2, es ejecutado en el botón comando. 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

1 Mostrar Command 1

CAJA DE TEXTO Text 1 ETIQUETA 1 Ejemplo de un procedimiento que

pasa un parámetro Label 1

ETIQUETA 2 Escriba un entero Label 2 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

Sub Imprime (A) 'Procedimiento creado con New Procedure del menú View For i = 1 To A Print Tab(65); i Next i End Sub COMENTARIOS: Observe como en la codificación en el procedimiento “Imprime” se ha incluido el parámetro A (Imprime (A)), el cual está definido en el código del botón comando. Corra el programa para un parámetro A=20 (asignado en la caja de texto)

Page 75: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 75

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

FORMA Ejemplo 4 de un procedimiento BOTON COMANDO

1 Suma de valores del vector b Command 1

BOTON COMANDO 2

Suma de valores del vector c Command 2

CAJA DE TEXTO Text 1 ETIQUETA 1 Ejemplo de un procedimiento que

pasa un vector Label 1

ETIQUETA 2 B = [3,5,6,8] Label 2 ETIQUETA 3 C = [5,7,3,1] Label 3

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)

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 COMENTARIOS: Observe en el programa como se llama al procedimiento (Suma A()), escribiendo el nombre del procedimiento y el vector con paréntesis abierto y cerrado: Suma b(), Suma c().

Page 76: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 76

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 número calculado mediante una función. PROPIEDADES CAPTION NAME

FORMA Factorial de un número BOTON COMANDO

1 Calcular Command 1

CAJA DE TEXTO 1 Text 1 CAJA DE TEXTO 2 Text 2

ETIQUETA 1 Ejemplo de una función (calcula el factorial de un número)

Label 1

ETIQUETA 2 Escriba un número entero Label 2 ETIQUETA 3 El factorial del número es: Label 3

Para crear la función 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 función: “Fac”. CODIFICACION Sub Command1_Click () 'Ejecución de la Función Fac

Dim A As Variant

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

Page 77: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 77

Z = Z * i Next i Fac = Z End Function COMENTARIOS Note que en la función Fac se encuentra definido el parámetro B como entero (Fac(B As Integer)) y que es usado en el código de la función, dicho parámetro adquiere su valor en el código del Botón Comando mediante la Caja de Texto 1 (Fac(Val(Text1.Text))).

PROGRAMA 61: Función Integral de la Normal Estándar. Es común en Inferencia Estadística encontrar el área que esta integrada hasta un valor dado (Z) bajo la curva de una distribución normal estándar.

Mediante este programa es posible encontrar dicho valor creando la función “Z” PROPIEDADES CAPTION NAME

FORMA Función Integral de la Normal Estándar ETIQUETA 1 Valor de Z Label 1 ETIQUETA 2 Area bajo la curva normal estándar

hasta Z Label 2

ETIQUETA 3 Area bajo la curva normal estándar desde 0 a Z

Label 3

CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

CAJA DE TEXTO 3

Text 3

BOTON COMANDO

Calcular Command1

Page 78: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 78

CODIFICACION

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)

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

Page 79: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 79

CAPITULO 8 ARCHIVOS DE DATOS

INTRODUCCION Muchas aplicaciones requieren almacenar y recuperar datos de una sesión a otra. Los archivos de datos permiten almacenar información que el usuario introduce a través de una caja de diálogo y por lo tanto, son también la fuente de información 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 aplicación. En este capítulo se analizará como guardar y leer archivos de datos de tipo Secuencial y Aleatorio. ARCHIVO SECUENCIAL Es el tipo de acceso más simple a un archivo de datos, puede almacenar registros de cualquier longitud. Cuando la información se escribe registro a registro, estos son clocados uno a continuación 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 información desde el principio hasta el final y se lle de la misma forma. Los archivos abiertos para acceso

secuencial no son los más apropiados para almacenar grandes series de números, porque cada número entero de cinco dígitos ocupa cinco bytes, en lugar de los dos requeridos para un entero. PROGRAMA 62: Cálculo de la Media (Datos en archivo secuencial). PROPIEDADES CAPTION NAME OTROS

FORMA Cálculo de la Media (Datos en archivo secuencial)

ETIQUETA 1 N= Label 1 ETIQUETA 2 Valor de la Media Label 2 ETIQUETA 3 Si desea dar el nombre de la

variable haga Label 3

FRAME 1 Leer Datos Frame 1 FRAME 2 Doble Clic aquí Frame 2

GRID Grid 1 Cols 2; Rows 10

CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

BOTON 2 Calcular Command 2

MENU Grabar datos Grabar

Page 80: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 80

Para crear el objeto MENU haga clic en el icono de la barra de herramientas, aparecerá una ventana de Diseño de Menú (Menu Design Window) escriba las propiedades de Caption y Name. Observe como después de hacer clic en el botón OK de la ventana de Diseño de Menú, aparecerá en la forma “Grabar datos” como menú. De un clic en este nombre para que anote la codificación 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

Page 81: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 81

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) 'Asignación 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) 'Asignación 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

Page 82: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 82

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 Para guardar los datos utilizados en disco después 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 número total de datos (N) y después cada uno de los valores en el orden que tienen en el Grid. PROGRAMA 63: Cálculo 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 Diseño de Menú como se describe en el programa anterior. PROPIEDADES CAPTION NAME OTROS

FORMA Cálculo de la Media (Datos en

archivo secuencial) ETIQUETA 1 N= Label 1 ETIQUETA 2 Valor de la Media Label 2 ETIQUETA 3 Si desea dar el nombre de la

variable haga Label 3

FRAME 1 Leer Datos Frame 1 FRAME 2 Doble Clic aquí Frame 2

GRID Grid 1 Cols 2; Rows 10

CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

BOTON 2 Calcular Command 2

MENU Grabar datos Grabar MENU Leer datos Leer

CODIFICACION

Page 83: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 83

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) 'Asignación 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$ = ""

Page 84: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 84

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) 'Asignación 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 información que guardo en el programa anterior es leída y asignada a el Grid en este programa. PROGRAMA 64: Cálculo 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

Page 85: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 85

CAPTION NAME OTROS

FORMA Cálculo de la Media (Datos en archivo secuencial)

ETIQUETA 1 N= Label 1 ETIQUETA 2 Valor de la Media Label 2 ETIQUETA 3 Si desea dar el nombre de la

variable haga Label 3

FRAME 1 Leer Datos Frame 1 FRAME 2 Doble Clic aquí Frame 2

GRID Grid 1 Cols 2; Rows 10

CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

BOTON 2 Calcular Command 2 MENU Grabar datos Grabar

COMMON DIALOG

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

Page 86: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 86

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) 'Asignación 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) 'Asignación 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 codificación del procedimiento o subrutina grabar_Click () como el CmDialog permite dar un nombre de archivo, sugiriendo la extensión .dat. Si da clic en el menú “Grabar datos”, aparecerá una ventana o caja de dialogo para que el usuario no solamente

Page 87: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 87

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

PROGRAMA 65 : Cálculo de la Media (Datos en archivo secuencial). En este programa realice los menús Grabar y Leer datos y utilice el CmDialog para dar el nombre y ruta del archivo a grabar o leer. PROPIEDADES CAPTION NAME OTROS

FORMA Cálculo de la Media (Datos en archivo secuencial)

ETIQUETA 1 N= Label 1 ETIQUETA 2 Valor de la Media Label 2 ETIQUETA 3 Si desea dar el nombre de la Label 3

variable haga FRAME 1 Leer Datos Frame 1 FRAME 2 Doble Clic aquí Frame 2

GRID Grid 1 Cols 2; Rows 10

CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

BOTON 2 Calcular Command 2 MENU Grabar datos Grabar MENU Leer datos Leer

COMMON DIALOG

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

Page 88: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 88

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, "Precaución" Exit Sub End Sub Sub Grid1_KeyPress (keyascii As Integer) 'Asignación 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

Page 89: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 89

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 leídos", 64, "Intente de nuevo" Exit Sub End Sub Sub Text1_KeyPress (keyascii As Integer) 'Asignación 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 codificación 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.

Page 90: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 90

PROGRAMA 66: Cálculo 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 OTROS

FORMA Cálculo de la Media (Datos en archivo secuencial)

ETIQUETA 1 N= Label 1 ETIQUETA 2 Valor de la Media Label 2

FRAME 1 Leer Datos Frame 1 GRID Grid 1 Cols 2;

Rows 10 CAJA DE TEXTO 1

Text 1

CAJA DE TEXTO 2

Text 2

BOTON 2 Calcular Command 2

MENU &Grabar datos Grabar MENU &Leer datos Leer

COMMON DIALOG

CmDialog 1

SSCOMMAND 1

Command 3D1

Picture = Icon

SSCOMMAND Command Picture =

2 3D2 Icon

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

Page 91: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 91

'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, "Precaución" 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 leídos", 64, "Intente de nuevo" Exit Sub End Sub

Page 92: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 92

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, "Precaución" Exit Sub

End Sub Sub Grid1_KeyPress (keyascii As Integer) 'Asignación 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

Page 93: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 93

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 leídos", 64, "Intente de nuevo" Exit Sub End Sub Sub Text1_KeyPress (keyascii As Integer) 'Asignación 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 menús Grabar datos y Leer datos, como se ha insertado el símbolo & 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 simultáneamente 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 número y puede ser leído, escrito o actualizado. En vista de que en los programas siguientes sobre archivos aleatorios se han utilizado Módulos que son archivos que

Page 94: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 94

contienen los procedimientos que son compartidos por dos o más formularios de una aplicación, se hace imprescindible mostrar en primer lugar este aspecto. Así en el siguiente programa, se verá el uso de un Módulo. PROGRAMA 67: Uso de Módulo. PROPIEDADES CAPTION NAME UBICACION

FORMA 1 Asignación de valor FORMA 2 Operación y Resultado

ETIQUETA RESULTADO Label 1 En Forma 2 CAJA DE TEXTO Text 1 En Forma 2

BOTON COMANDO

Operación con la variable

Command 1

En Forma 2

BOTON COMANDO

Asignar valor a la variable

Command 1

En Forma 1

Para declarar la variable “a” y pueda ser usada en los códigos de los objetos de las dos formas, es necesario abrir del Menú File un Módulo New Module y declarar en la codificación 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

Sub Command1_Click () 'Realiza la operación 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 'Declaración de la variable "a" como Global en el Módulo 'solo de esta manera puede ser utilizada esta variable 'tanto en la forma 1 como en la forma 2 COMENTARIOS Observe en la codificación como el valor de la variable a = 20 es asignado en el botón comando (Command 1) de la forma 1 y además este botón permite el acceso a la forma 2 (form2.Show). En esta forma se realiza la operación con la variable “a” (B = a * 5) en el botón 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 declaración en el Módulo (Global a As Integer). Un aspecto muy importante es que al guardar el programa deberá guardar: cada forma, el módulo con extensión .Bas y el proyecto.

Page 95: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 95

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 Guárdelo con el nombre de Prog68.dat en la unidad a.

PROPIEDADES CAPTION NAME

FORMA 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 Abra un Módulo para la declaración 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 Núm. de columnas del archivo más 2 Get #1, 2, Num 'Leerá los valores correspondientes a la segunda hilera Z1 = Val(Num.X)

Page 96: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 96

Z2 = Val(Num.Y) Text1.Text = Format$(Z1) Text2.Text = Format$(Z2) End Sub 'Módulo para la declaración de variables Type datos X As String * 2 Y As String * 5 End Type COMENTARIOS Al correr el programa y hacer clic en el botón 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, Módulo y Proyecto.

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 NAME OTROS

FORMA Lectura de datos de un archivo aleatorio

CAJA DE TEXTO

Text 1 MultiLine = True ScrollBars = 2

BOTON COMANDO

Leer datos Command 1

CODIFICACION Sub Command1_Click () 'Lectura de la serie de datos del archivo "A:prog68.dat" 'Si desea mayor información ver la codificación 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

Page 97: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 97

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 'Declaración de variables en el Módulo Type datos X As String * 2 Y As String * 5 End Type

Page 98: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 98

CAPITULO 9

GRAFICAS INTRODUCCIÓN Visual Basic provee varias formas de producir efectos gráficos de una manera más sencilla que con la programación tradicional. Una figura gráfica se puede insertar en una forma o “picture box”, procedente de un archivo gráfico con extensión wmf, bmp, ico y dib. También se pueden crear gráficas mediante el botón de gráficas en la barra de herramientas (solo disponible en Visual Basic Ver 3.0 profesional y en las utilerías de Visual Basic Ver 6.0 profesional); las gráficas pueden ser de barras, de líneas, etc. Otra forma para la creación de gráficas y figuras es mediante la programación, utilizando comando específicos, tales como Line, Pset, etc. En esta sección se describen algunos programas en donde se utilizan los diferentes tipos para crear gráficas disponibles en Visual Basic. 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 botón [...] aparece una ventana para seleccionar el archivo en donde se encuentra la figura que se desea insertar. Al seleccionar el archivo, la figura

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

FORMA Caption = Figuras de fondo en la forma. Picture = Metafile

ETIQUETA Caption = Es posible tener una figura como fondo en una forma. Name = Label 1

Programa 71: Propiedades de una gráfica. Para construir una gráfica es necesario activar el icono

de gráficas en la barra de herramientas: Dibuje la gráfica en la forma y asigne las siguientes propiedades. PROPIEDADES CAPTION NAME

FORMA Propiedades de una gráfica

Page 99: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 99

GRAFICA Graph1 ETIQUETA1 En las propiedades de la gráfica

modificar GraphStyle, GraphType, LabelText, LeftText, NumSet y BottomTitle.

Label 1

COMENTARIOS Las propiedades más comunes en un gráfico son: FontSize: Tamaño para los títulos. GraphTitle: Titulo superior. LeftTitle: Titulo izquierdo. BottomTitle: Titulo inferior. GraphType: Tipo de gráfico (existen 11 tipos diferentes). GraphStyle: Estilo de la gráfica (existen 6 estilos diferentes).

Consulte la ventana de propiedades de un Graph para que visualice todas las propiedades posibles. PROGRAMA 72: Asignar datos a una Gráfica. PROPIEDADES CAPTION NAME UBICACION

FORMA 1 Asignar datos a una Gráfica

FORMA 2 Gráfica GRAFICA 1 Graph 1 En Forma 2

ETIQUETA 1 Este programa muestra la asignación de datos a una gráfica.

Label 1 En Forma 1

BOTON COMANDO

Asignar. Command 1 En Forma 1

CODIFICACION Sub Command1_Click () 'Asignación de datos a la gráfica 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

Page 100: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 100

Mediante el botón comando “Asignar” de la forma 1, se ejecuta la sentencia Graph1.GrapData que asigna a la gráfica 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.

PROGRAMA 73: Presentación de Gráfica o Texto. En este programa se involucran diferentes aspectos vistos hasta ahora, tales como: dos formas, comandos, menús, gráficas, etc. PROPIEDADES CAPTION NAME UBICACION

FORMA 1 Presentación de Gráfica o Texto

FORMA 2 Form 2 GRAFICA 1 Graph 1 En Forma 2

ETIQUETA 1 Este programa muestra la presentación de una gráfica o un texto

Label 1 En Forma 1

BOTON COMANDO

Asignar. Command 1 En Forma 1

BOTON OPCION 1

Gráfica Option 1 En Forma 1

BOTON OPCION 2

Texto Option 2 En Forma 1

CAJA DE TEXTO

Text 1 En Forma 2 MultiLine

MENU Regresar Regresar En Forma 2 CODIFICACION Sub Command1_Click () 'Asigna valores a la gráfica 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 Presentación de una gráfica o de un texto en la misma forma" End Sub Sub Option1_Click () 'Presenta la gráfica Form2.Graph1.Visible = True Form2.Text1.Visible = False Form2.Show End Sub Sub Option2_Click () 'Presenta el Texto

Page 101: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 101

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: Gráfica de Líneas con la propiedad LineStats. PROPIEDADES PROPIEDADES

FORMA Caption = Gráfica de líneas con la propiedad LineStats. ETIQUETA Caption = La propiedad LineStats gráfica 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

COMENTARIOS La gráfica muestra una dispersión (propiedad GraphType = 9) de 15 puntos al azar (propiedad NumPoints = 15) además de dos líneas, una que muestra el mejor ajuste de los puntos y otra la media de los valores (propiedad LineStats = 9).

PROGRAMA 75: Dibuja líneas y cuadros. En el presente programa se muestra como Visual Basic dispone del método Line para dibujar una línea entre dos puntos y también como este mismo método puede ser usado para dibujar una caja o cuadro añadiendo la opción B. PROPIEDADES CAPTION NAME

FORMA Dibuja una línea y un cuadro en la

Page 102: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 102

Forma y en PictureBox CAJA IMAGEN Picture 1

BOTON COMANDO Dibujar Línea y Cuadro Command 1 CODIFICACION Sub Command1_Click () 'Dibuja línea 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),

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

Picture1.Line Step(100, 100)-Step(1000, 1000), QBColor(4), B End Sub COMENTARIOS 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 codificación como la sintaxis para una línea y un cuadro es similar, la única diferencia es la opción o parámetro B. La palabra Step expresa en forma relativa los valores de las coordenadas (X, Y) de los puntos. Visual Basic también dispone de la función QBColor que tiene un solo argumento entero en el rango de 0 a 15 y corresponde a un color estándar, 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. PROGRAMA 76: Dibuja círculos.

Page 103: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 103

PROPIEDADES CAPTION NAME

FORMA Dibuja Círculos ETIQUETA Haga clic en cualquier parte de la

Forma Label 1

CODIFICACION Sub Form_Click () 'Dibuja círculos concéntricos en la Forma Dim r, c As Integer ScaleHeight = 100 ScaleWidth = 240 For r = 5 To 50 Step 5 'Coordenadas, radio y color del círculo Circle (120, 50), r, QBColor(c) c = c + 1 Next r End Sub COMENTARIOS Para dibujar los círculos se ha utilizado el método Circle, su sintaxis se muestra en la codificación y corresponde a las coordenadas del centro (120, 50), radio ( r ) y color (QBColor).

PROGRAMA 77: Dibuja un punto. PROPIEDADES CAPTION NAME

FORMA Dibuja un punto dentro del PictureBox

CAJA IMAGEN Picture 1 BOTON COMANDO Dibujar Command 1 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)

Page 104: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 104

End Sub COMENTARIOS Visual Basic dispone del método Pset que pone color al píxel de la posición 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). PROGRAMA 78: Dibuja puntos dentro de una PictureBox. PROPIEDADES CAPTION NAME

FORMA Dibuja puntos dentro de una PictureBox

CAJA IMAGEN Picture 1 BOTON COMANDO Dibujar Command 1 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

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

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

Page 105: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 105

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 codificación cada valor de Y es restado de 31.

Page 106: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 106

CAPITULO 10 RESULTADOS IMPRESOS

INTRODUCCION Para obtener resultados impresos, se presentan en este capítulo algunos programas que en su codificación envían objetos y su contenido a impresión, principalmente se han usado métodos como, el Print, Diseño de Menús y la propiedad DrawMode en los gráficos. PROGRAMA 79: Imprimir Contenido de la Caja de Texto Multiline. En este programa la orden de impresión es mediante un botón comando. PROPIEDADES PROPIEDADES

FORMA Caption = Imprimir Contenido de la Caja de Texto Multiline

CAJA DE TEXTO

Multiline = True ScrollBars = Both Name = Text 1

BOTON Caption = Imprimir Name = Command 1

CODIFICACION Sub Command1_Click () 'Ejemplo de Impresión Text1.text = "Ejemplo de impresión de una caja de texto" destino = "prn" Open destino For Output As #1 Print #1, Text1.text Close #1 End Sub

Page 107: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 107

COMENTARIOS Si la impresora está conectada y encendida al hacer clic en el botón comando “Imprimir”, inmediatamente el contenido de la caja de texto es enviado a impresión (Print #1, Text1. text). PROGRAMA 80: Imprimir Contenido de la Caja de Texto Multiline. Aquí la orden de impresión es mediante un menú. PROPIEDADES PROPIEDADES

FORMA Caption = Imprime Contenido de la Caja de Texto Multiline

CAJA DE TEXTO

Multiline = True ScrollBars = Both Name = Text 1

BOTON Caption = Mostrar texto Name = Command 1

MENU 1 Caption = Imprimir Name = Imprimir

MENU 2 Caption = Salir Name = Salir

CODIFICACION Sub Command1_Click () Text1.text = "Ejemplo de impresión de una caja de texto"

End Sub Sub Imprimir_Click () 'Objeto creado con la ventana de diseño de menús (Menu Design Window) 'Donde Caption = Imprimir; Name = Imprimir 'La codificación siguiente manda a impresión 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 Diseño de Menús. End End Sub COMENTARIOS En el capítulo 8 se describió como realizar el Diseño de Menús, en este programa se ha aplicado dicha metodología para definir 2 menús; uno para impresión y otro para salir del programa.

Page 108: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 108

PROGRAMA 81: Imprimir Contenido de una Caja de Texto Multiline y Forma. Ahora mediante un botón comando imprimir la forma y por medio de un menú el contenido de la caja de texto. PROPIEDADES

PROPIEDADES FORMA Caption = Imprime Contenido de Caja de Texto

Multiline y Forma CAJA DE TEXTO

Multiline = True ScrollBars = Both Name = Text 1

BOTON 1 Caption = Mostrar texto Name = Command 1

BOTON 2 Caption = Imprimir forma Name = Command 2

MENU Caption = ImprimirTexto Name = Imprimir

CODIFICACION Sub Command1_Click () 'Texto de la caja de texto 1 Text1.text = "Ejemplo de impresión 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 función es imprimir el contenido de la caja de texto de acuerdo a la siguiente codificación: destino = "prn" Open destino For Output As #1 Print #1, Text1.text Close #1 End Sub

Page 109: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 109

PROGRAMA 82: Imprimir Gráfica. PROPIEDADES CAPTION NAME UBICACION

FORMA 1 Imprimir Gráfica FORMA 2 Form 2

GRAFICA 1 Graph 1 En Forma 2 ETIQUETA 1 Este programa muestra la

asignación de datos a una gráfica

Label 1 En Forma 1

BOTON COMANDO

Asignar. Command 1 En Forma 1

MENU Imprimir Imprimir En Forma 2

CODIFICACION Sub Command1_Click () 'Asignación de datos a la gráfica 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 impresión la gráfica Graph1.DrawMode = 5 End Sub

Page 110: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 110

COMENTARIOS Note en las propiedades de la gráfica 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 gráfica, se cambia el valor de la propiedad DrawMode a 5 (Print) que enviará a impresión la gráfica, note que los colores de las barras de la gráfica son cambiados a un estilo de anchurado.

Page 111: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 111

CAPITULO 11

CAMBIO DE FUENTES Y CREACION DE CONTROLES DURANTE LA EJECUCION

INTRODUCCION En el momento de estar ejecutando un programa, si se ha añadido en la forma el CMDialog y la propiedad Action tiene algún valor, se puede visualizar alguna caja de diálogo tal como: Abrir (Open), Guardar Como (Save As), Imprimir (Print), Fuente (Font) y Color (Color), en el capítulo 8 referente a Archivos de Datos, se mostró las cajas de diálogo Abrir y Guardar Como, corresponde a el presente capítulo ver las cajas de diálogo de Fuente y Color. Además se analizará como añadir (sentencia Load) un nuevo control durante la ejecución de una aplicación y como eliminarlo (sentencia UnLoad) siempre y cuando este control haya sido creado en el tiempo de ejecución. PROGRAMA 83: Caja de Diálogo Fuente. Durante la ejecución del programa, mediante el botón comando “Fuentes”, se mostrará la caja de diálogo con la cual puede cambiar estilo, tamaño, efecto y color de un texto. PROPIEDADES PROPIEDADES

FORMA Caption = Caja de Diálogo Fuente CAJA DE TEXTO

Multiline = True ScrollBars = Vertical

Name = Text 1 BOTON

COMANDO Caption = Fuentes Name = Command 1

COMMON DIALOG

Name = CMDialog 1

ETIQUETA 1 Caption = Escriba un texto Name = Label 1

ETIQUETA 2 Caption = Cambie el estilo, tamaño, efecto y color del texto haciendo clic en el botón “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 diálogo 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

Page 112: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 112

COMENTARIOS Corra el programa y escriba un texto en la caja de texto, luego haga clic en el botón comando “Fuentes” para que aparezca la caja de diálogo Fuente (Action = 4), seleccione una fuente, un estilo, un tamaño, un efecto, y un color, haga clic en el botón “Aceptar” para asignar estas fuentes a su texto.

PROGRAMA 84: Caja de Diálogo Color. Durante la ejecución del programa cambie el color de la forma. PROPIEDADES PROPIEDADES

FORMA Caption = Caja de Diálogo Color BOTON

COMANDO Caption = Cambiar el color de la forma Name = Command 1

COMMON DIALOG

Name = CMDialog 1

CODIFICACION Sub Command1_Click () 'Asigna a la propiedad Flags el valor de una constante 'La constante &H8& causa que aparezca un botón de ayuda en la caja de diálogo CmDialog1.Flags = &H8& 'La Action = 3 visualiza la caja de diálogo 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 botón comando para que aparezca la caja de diálogo Color (Action = 3), seleccione un color y haga clic en el botón “Aceptar” para que el fondo de la forma tenga este color.

Page 113: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 113

En resumen para visualizar alguna de las cajas de diálogo durante la ejecución de la aplicación, 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 diálogo).

PROGRAMA 85: Cajas de Texto con Subíndice. Asignando a la propiedad Index de la caja de texto el valor de 0, añada cajas de texto idénticas durante la ejecución, una vez creadas las puede remover. PROPIEDADES PROPIEDADES

FORMA Caption = Cajas de Texto con Subíndice

Page 114: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 114

CAJA DE TEXTO

Index = 0 Text = Text 1 Name = Text 1

BOTON COMANDO 1

Caption = Añadir Name = Command 1

BOTON COMANDO 2

Caption = Remover Name = Command 2

ETIQUETA 1 Caption = Crea o elimina Cajas de Texto al momento de la ejecución Name = Label 1

CODIFICACION Dim i As Integer Sub Command1_Click () If i >= 9 Then Exit Sub i = i + 1 Load Text1(i) 'Añade 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 más 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 menús, para crear nuevos controles en el tiempo de ejecución 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 también comparten los mismos procedimientos. Los elementos de un array de controles son controles físicamente separados, cada uno con su propio

Page 115: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 115

conjunto de propiedades. Cuando se añade un nuevo elemento a un array de controles, todas las propiedades, excepto Visible, Index y TabIndex son copiadas del elemento más bajo en el array. Esto supone que todos los nuevos controles que se van añadiendo, sean del mismo tamaño y se apilen en el mismo lugar, en este programa las cajas de texto añadidas no se apilan sino que aparecen hacia abajo, por la propiedad Top en la codificación. PROGRAMA 86: Botones de Opción con Subíndice. Programa similar a el anterior, con la diferencia que el control a añadir es un botón opción. Además note en la codificación como cualquier botón opción está asociado a el mismo procedimiento para el tipo de suceso click (Option1_Click). PROPIEDADES PROPIEDADES

FORMA Caption = Botones de Opción con Subíndice BOTON OPCION 1 Caption = Option 1

Name = Option 1 BARRA DE

DESPLAZAMIENTO LargeChange = 1 SmallChange = 1 Min = 0 Max = 12 Name = HScroll 1

BOTON COMANDO 1 Caption = Añadir Name = Command 1

BOTON COMANDO 2 Caption = Remover Name = Command 2

ETIQUETA 1 Caption = Para cambiar el color a la forma, mueva el cursor del ScrollBar y de un clic en un botón opción Name = Label 1

ETIQUETA 2 Caption = Crea o elimina botones de opción al momento de la ejecución Name = Label 2

CODIFICACION Dim i As Integer Sub Command1_Click () If i >= 9 Then Exit Sub i = i + 1 Load Option1(i) 'Añade un control (botón de opción) 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 (botón de opción) de índice i i = i - 1 End Sub Sub Option1_Click (Index As Integer) Form1.BackColor = QBColor(Hscroll1) End Sub

Page 116: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 116

COMENTARIOS Corra el programa, añada varios botones de opción, mueva el cursor de scrollbar a alguna posición y haga clic en cualquier botón de opción, observe como cambia el color de la forma.

Page 117: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 117

CAPITULO 12 ANIMACION

INTRODUCCION En el capítulo anterior se indicó como añadir nuevos controles durante la ejecución, en este capítulo se verá que también durante la ejecución de una aplicación, se puede mover cualquier control a otra posición, lo único que hay que hacer es modificar sus propiedades Left, Top, Width y Height utilizando el método Move. Por otro lado, en la librería de iconos de Visual Basic hay series de dos o más iconos que utilizados conjuntamente producen un efecto de animación. Además, también es posible mediante la programación en Visual Basic, hacer pantallas con notas que muestren información de un tema específico. PROGRAMA 87: Mover y Modificar una Caja de Texto. Por medio del método Move se cambia durante la ejecución del programa las propiedades Left, Top, Width y Height de la caja de texto, lo cual hace dar una nueva posición y aspecto a la caja de texto.

PROPIEDADES CAPTION NAME

FORMA Mover y Modificar una Caja de Texto

CAJA DE TEXTO Text 1 BOTON COMANDO Mover Command 1 CODIFICACION Sub Command1_Click () 'El método Move modifica las propiedades: 'Left, Top, Width, Height Text1.Move 100, 100, 1000, 1000 End Sub

Page 118: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 112

PROGRAMA 88: Animación: Flecha girando. Haga una superposición 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 NAME OTROS

FORMA 1 Animación: Flecha girando

PICTUREBOX 1 Picture 1 Picture = Icon PICTUREBOX 2 Picture 2 Picture = Icon PICTUREBOX 3 Picture 3 Picture = Icon PICTUREBOX 4 Picture 4 Picture = Icon

BOTON COMANDO

¡ Acción ! Command 1

CODIFICACION 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 ()

Page 119: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 113

'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: Animación: Flecha girando. En el programa anterior, la flecha empieza a girar al hacer clic en el botón comando, y se detiene al concluir los bucles de la codificación. 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 codificación esta realizada en un Temporizador (Timer). Para dibujar un Timer, utilice el icono. PROPIEDADES CAPTION NAME OTROS

FORMA 1 Animación: Flecha girando

PICTUREBOX 1 Picture 1 Picture = Icon PICTUREBOX 2 Picture 2 Picture = Icon PICTUREBOX 3 Picture 3 Picture = Icon PICTUREBOX 4 Picture 4 Picture = Icon

TIMER Timer 1 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

Page 120: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 114

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

Page 121: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 115

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 están visibles en la forma antes de correr el programa. PROGRAMA 90: Animación: Semáforo. 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 semáforo mediante el botón comando “Cambiar”. PROPIEDADES CAPTION NAME OTROS

FORMA 1 Animación: Semáforo

PICTUREBOX 1 Rojo Picture = Icon

PICTUREBOX 2 Amarillo Picture = Icon

PICTUREBOX 3 Verde Picture = Icon

BOTON COMANDO

Cambiar Command 1

CODIFICACION Sub Command1_Click ()

'Codificación para el cambio de colores en el semáforo 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 semáforo en color verde verde.Visible = True amarillo.Visible = False rojo.Visible = False End Sub Sub verde_Click () 'PictureBox que contiene al icono trffc10a.ico semáforo en verde End Sub Sub amarillo_Click () 'PictureBox que contiene al icono trffc10b.ico semáforo en amarillo End Sub Sub rojo_Click () 'PictureBox que contiene al icono trffc10c.ico semáforo en rojo

Page 122: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 116

End Sub

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

FORMA 1 Animación: Abrir o Cerrar

PICTUREBOX 1 Abierto Picture = Icon PICTUREBOX 2 Cerrado Picture = Icon

BOTON COMANDO

¿ Abrir o Cerrar ? Command 1

CODIFICACION

Sub Command1_Click () 'Codificación 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 92: Animación: 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 país en la codificación. Al correr el programa y hacer clic en una bandera aparecerá en la caja de texto el país al que pertenece. PROPIEDADES CAPTION NAME OTROS

FORMA 1 Animación: Banderas PICTUREBOX 1 Picture 1 Picture = Icon PICTUREBOX 2 Picture 2 Picture = Icon PICTUREBOX 3 Picture 3 Picture = Icon

Page 123: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 117

PICTUREBOX 4 Picture 4 Picture = Icon . . . . . . . . .

PICTUREBOX 23 Picture 23 Picture = Icon PICTUREBOX 24 Picture 24 Picture = Icon CAJA DE TEXTO Text 1

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

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 = "ESPAÑA" 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"

Page 124: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 118

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 información sobre un tema en la pantalla de su monitor PROPIEDADES PROPIEDADES

FORMA Caption = Fertilización Fosfórica en Maíz BOTON COMANDO 1 Caption = Fin

Name = Command 1 BOTON COMANDO 2 Caption = Continuar >

Name = Command 2 BOTON COMANDO 3 Caption = < Continuar

Page 125: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 119

Name = Command 3 CAJA DE TEXTO 1 FontBold = True

FontName = MS Sans Serif FontSize = 22.5 Multiline = True Name = Text 1

CAJA DE TEXTO 2 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 mayoría de los suelos del noreste de México son calcáreos. Por lo tanto, tienen altos contenidos de carbonato de calcio y altos pH's; generalmente tienen contenidos bajos de materia orgánica y son deficientes en fósforo"

Case 1 N$ = Chr$(13) + Chr$(10) text2.Text = " Fijación del fósforo" text1.Text = N$ + N$ + "El fósforo se fija al precipitar con compuestos de calcio. El calcio reacciona con el fósforo que se aplica como fertilizante para formar compuestos con muy baja solubilidad como fosfato dicálcico, fosfato octacálcico y apatitas." Case 2 N$ = Chr$(13) + Chr$(10) text2.Text = " Epoca de aplicación" text1.Text = N$ + N$ + "En el norte de Tamaulipas los fertilizantes fosfóricos 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 fosfórico se aplica al momento de la siembra" Case 3 N$ = Chr$(13) + Chr$(10) text2.Text = " Forma de Aplicación" text1.Text = N$ + N$ + "La mejor forma de aplicar fósforo 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 más rápidamente" Case 4 N$ = Chr$(13) + Chr$(10) text2.Text = " Fertilizantes" text1.Text = N$ + N$ + "Los fertilizantes más comunes son:" + N$ + N$ + "Superfosfato de calcio triple, el cual contiene 46% de P" + N$ + N$ + "Fosfato diamónico el cual contiene 18% de N y 46% de P2O5 (18-46-0)" Case 5 N$ = Chr$(13) + Chr$(10) text2.Text = "Dosis Recomendada"

Page 126: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 120

text1.Text = N$ + N$ + "En la mayoría de las regiones maiceras de México se recomienda aplicar 40 Kg de P por hectárea." + N$ + N$ + "Sin embargo, para maíz de riego de alta producción (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 mayoría de los suelos del noreste de México son calcáreos. Por lo tanto, tienen altos contenidos de carbonato de calcio y altos pH's; generalmente tienen contenidos bajos de materia orgánica y son deficientes en fósforo" Case 1 N$ = Chr$(13) + Chr$(10) text2.Text = " Fijación del fósforo" text1.Text = N$ + N$ + "El fósforo se fija al precipitar con compuestos de calcio. El calcio reacciona con el fósforo que se aplica como fertilizante para formar compuestos con muy baja solubilidad como fosfato dicálcico, fosfato octacálcico y apatitas." Case 2 N$ = Chr$(13) + Chr$(10) text2.Text = " Epoca de aplicación"

text1.Text = N$ + N$ + "En el norte de Tamaulipas los fertilizantes fosfóricos 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 fosfórico se aplica al momento de la siembra" Case 3 N$ = Chr$(13) + Chr$(10) text2.Text = " Forma de Aplicación" text1.Text = N$ + N$ + "La mejor forma de aplicar fósforo 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 más rápidamente" Case 4 N$ = Chr$(13) + Chr$(10) text2.Text = " Fertilizantes" text1.Text = N$ + N$ + "Los fertilizantes más comunes son:" + N$ + N$ + "Superfosfato de calcio triple, el cual contiene 46% de P" + N$ + N$ + "Fosfato diamónico 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 mayoría de las regiones maiceras de México se recomienda aplicar 40 Kg de P por hectárea." + N$ + N$ + "Sin embargo, para maíz de riego de alta producción (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)

Page 127: Programaci n Con Visual Bas

Autor: Dr. Javier de J. Cortés Bracho 121

N$ = Chr$(13) + Chr$(10) text1.ForeColor = QBColor(12) text1.Text = N$ + " Fertilización Fosfórica en Maíz" + N$ + N$ + " En el Noreste de México" + N$ + N$ + N$ + " por" + N$ + N$ + " Dr. Emilio Olivares Sáenz" text2.Visible = False z = -1 End Sub

COMENTARIOS

Corra el programa presionando F5 y vea la información sobre el tema haciendo clic en los botones comando Continuar, para terminar haga clic en el botón “Fin” y cierre la ventana.