48
Tutoriales Programación Kazak_anjes Rif: V-12789240-3 Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru 1 Primeros pasos en Visual BASIC 6.0 Ejercicios importantes para aprender a programar

Aprende a Programar Con Vb 6.0

Embed Size (px)

DESCRIPTION

Aprender a programar con visual basic 6.0 no es cosa de otro mundo, aqui os dejo un buen tutorial para principiantes. Si gustan saber mas de este programa pueden ver en videos en http://www.youtube.com/kazakanjes

Citation preview

Page 1: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

1

Primeros pasos en Visual BASIC 6.0

Ejercicios importantes para aprender a programar

Page 2: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

2

Partes de la Computadora.

Abrimos el programa Visual Basic seleccionamos Nuev o proyecto y comenzamos a trabajar. Este ejercicio muestra un truco muy sencillo pero d e gran utilidad. A veces tenemos una imagen total que queremos particionar, en este caso la computadora, que nos permite subdividirla en tres partes : monitor, teclado, gab inete. Esto por código sería muy complejo pero usando el control Label en su modo transparent e y con el Caption vacío, o sea sin etiqueta nos permite subdividir la imagen y que sus partes respondan a el evento Click por separado, provocando una respuesta distinta.

En el formulario podemos ver la Label dibujada sobr e el monitor, todavía opaca como viene por defecto, luego sobre el gabinete está transpare nte pero con el Caption , también por defecto en este caso : Label2. Y en el teclado dond e está posicionado el cursor en cambio está transparente. De acuerdo a la parte que selecc ionemos: en una cuarta Label se nos mostrará el texto correspondiente, en el caso del f ormulario : "Teclado".

En este ejercicio tenemos una Image, con su Propied ad Stretch a True, lo que nos permite agrandar un icono al tamaño deseado. Y cuatro Label s, tres transparentes para subdividir la Image y una opaca para mostrar la parte seleccionad a, y un Botón de Salida.

El Código de este ejercicio es el siguiente:

Private Sub Command1_Click()

End ' Cierre de la aplicación

End Sub

Private Sub Label2_Click() 'El evento Click modific a el titulo de 'label1

Label1.caption = "Monitor"

End Sub

Private Sub Label3_Click()

Label1.caption = "Gabinete"

End Sub

Page 3: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

3

Private Sub Label4_Click()

Label1.caption = "Teclado"

End Sub

Crucigrama.

Comenzamos un nuevo proyecto.

Con este ejercicio queremos sugerir una ejemplo de crucigrama que cada uno podrá adaptar a los contenidos requeridos. También a partir de aq uí podríamos elaborar un Ahorcado.

El crucigrama está armado con cuadros de texto o se a controles Text, encerrados dentro de un control frame, este control tiene la única final idad de agrupar y contener otros controles, ordenando la interactividad de una manera visual. O tros dos controles Frame agrupan las opciones vertical y horizontal. Conteniendo control es CheckBox que al ser seleccionados hacen la corrección de las letras ingresadas en las cajas de texto. El ingreso de las mismas se hace en tiempo de ejecución a través del teclado .

A la derecha vemos unos controles Picture vacíos qu e se cargaran con imágenes que muestren por ejemplo una cara sonriente si la palab ra es correcta o seria si no lo es, o cualquier otro tipo de imagen .Podemos llamar a est a imagen con la función LoadPicture desde cualquier parte de nuestro disco rígido. Y un botón con el icono de Hijitus indica la Salida y cierre del programa.

Acá tendremos que crear por código una estructura c ondicional que controle si la entrada de datos es correcta o no.

El código es el siguiente:

Private Sub Command1_Click()

End

End Sub

Private Sub Check1_Click()

If Text1.Text = "L" And Text2.Text = "O" And Text3. Text= "R" And Text4.Text ="O" then ' este código debe ir todo en un mismo reglón y 'chequea s i se escribió una de las palabras

Page 4: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

4

correctas. Ciudado con los 'nombres de los Controle s porque seguramente Ustedes no tendrán la 'misma numeración que yo. (Otra aclaraci ón cuando usamos el carácter ' 'indicamos que todo lo que sigue es un comentario, por lo tanto la 'computadora no lo ejecuta lo saltea, no es código).

Image1. Picture = LoadPicture(c:\vb\Icons\Misc\Face 03.ico) 'carita linda

Else 'Sino

Image1. Picture = LoadPicture(c:\vb\Icons\Misc\Face 01.ico) 'carita fea

End Sub

Private Sub Check2_Click()

If Text2.Text = "O" And Text5.Text ="R" And Text9.T ext ="O" then

Image2.Picture = LoadPicture(c:\vb\Icons\Misc\Face0 3.ico) 'carita linda

Else 'Sino

Image2. Picture = LoadPicture(c:\vb\Icons\Misc\Face 01.ico) 'carita fea

End Sub

Private Sub Check3_Click()

If Text7.Text = "R" And Text8.Text ="A" And Text9.T ext ="T" And Text4.Text ="O" And Text10.Text ="N" then

Image3. Picture = LoadPicture(c:\vb\Icons\Misc\Face 03.ico) 'carita linda Else 'Sino

Image3. Picture = LoadPicture(c:\vb\Icons\Misc\Face 01.ico) 'carita fea

End Sub

Sumas.

Page 5: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

5

Este ejercicio elige en forma Aleatoria dos números y los despliega en dos Labels para que el alumno luego, introduzca el valor correcto de la suma de ambos en un TextBox . Si está bien le aparecerá la carita sonriente y sino la de disgusto. Luego volverán a aparecer otros dos números para que siga sumando.

El botón Aplicar permite hacer la corrección median te un Condicional. Algunos de estos temas son comunes a otros ejercicios. Por lo tanto nos centraremos en las funciones nuevas.

La función Rnd nos permite cargar en una variable u n número aleatorio que en este caso definimos como entero Int (de Integer) y de 0 a 10.

Num1 = int( Rnd * 10)

Repetimos el procedimiento para Num2, el segundo su mando de nuestra cuenta. Para que realmente sea aleatorio debemos incorporar la sente ncia Randomize en el Procedimiento Load del Formulario.

Otra función que utilizamos es Val que transforma u na cadena de caracteres, en este caso el contenido de un Text en un valor numérico.

Resultado = Val ( Text1.Text)

Y luego con un condicional y el operador de suma + controlamos si el resultado es correcto:

If resultado = Int(num1) + Int(num2) then...

En el caso de resolver bien la cuenta pasa a cargar otros dos números , iniciando una nueva cuenta. Pero necesitamos una espera en la aplicació n. Esto lo hacemos por código con un bucle que asociado al reloj del sistema crea una pa usa en la aplicación. Para esto creamos un Procedimiento llamado Pausa. Posicionados en la ventana de código , vamos a Tools/ Herramientas, Add Procedure/ Agregar Procedimiento, y en la ventana que se nos abre elegimos un Name para el mismo en este caso = Pausa y luego con los botones de opción seleccionamos: Sub y Private. Damos el Aceptar y se cierra la ventana. Ahora veremos en nuestra ventana de código un nuevo Procedimiento ll amado Pausa. Incluido dentro de los procedimientos del objeto General. Luego lo llamare mos desde otra parte del programa con la sentencia Call.

Page 6: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

6

Para mayor claridad vamos al código:

Option Explicit

Dim num1, num2, resultado As Integer

Private Sub pausa() ' este el procedimiento creado por nosotros

Dim comenzar

Dim controlar

comenzar = Timer

Do Until controlar > = comenzar + 1.5 ' este es el bucle de espera

controlar = Timer

DoEvents ' esta sentencia evita un bucle egoista

Loop

End Sub

Private Sub Command1_Click()

num1 = Int(Rnd * 10) 'elige un número aleatorio

num2 = Int(Rnd * 10) 'elige un número aleatorio

Text1.Text = ""

Label1.Caption = num1

Label2.Caption = num2

Text1.SetFocus ' ubica el foco del cursor en el con trol Text1

Command2.Enabled = False

Image1.Picture = Nothing 'vacía el contenido de la imagen

End Sub

Private Sub Command2_Click()

Command2.Enabled = False

Page 7: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

7

resultado = Val(Text1.Text)

If resultado = Int(num1) + Int(num2) Then

Image1.Picture = Picture1.Picture

Call pausa ' llama al procedimiento que creamos com o Pausa

Call Command1_Click 'este procedimiento llama a otr a suma

Else

Image1.Picture = Picture2.Picture

End If

End Sub

Private Sub Command3_Click()

Unload Me

End Sub

Private Sub Form_Load()

Randomize

num1 = Int(Rnd * 10)'al cargarse el programa ya apa rece una cuenta

num2 = Int(Rnd * 10)

Text1.Text = ""

Label1.Caption = num1'se vuelcan las variables en l as Labels

Label2.Caption = num2

Command2.Enabled = False'el botón aplicar está desa ctivado

End Sub

Private Sub Text1_Change()

Command2.Enabled = True'al cambiar el texto se acti va Aplicar

End Sub

Page 8: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

8

Imprimiendo con Printer.

En este formulario desplegamos datos en cajas de te xto y a través del Boton Imprimir vamos a darle salida a estos datos por la Impresora que el sistema tenga por defecto. Para esto usamos el objeto Printer, que nos permite cont rolar el texto, cambiar su aspecto, tamaño, tipo y color de la fuente y coordenadas. Private Sub Command1_Click()

Printer.Orientation = 1

' La orientación del papel es vertical

Printer.FontSize = 12

'Tamaño de la letra

Printer.Print

'Un renglón en blanco o salto de carro

Printer.Print

Printer.Print

Printer.Print Tab(15); Label1.Caption; Tab(30); Tex t1.Text

'Aquí damos la orden de impresión del caption de la label1 a 15 espacios 'del margen izquerdo y luego a 30 espacios del margen izquierdo el 'contenido del texto.

Printer.Print

Printer.Print

Printer.Print Tab(15); Label2.Caption; Tab(30); Tex t2.Text

Printer.Print

Page 9: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

9

Printer.Print

Printer.Print Tab(15); Label3.Caption; Tab(30); Tex t3.Text

Printer.Print

Printer.Print

Printer.Print

Printer.Print Tab(15); Label4.Caption; Tab(30); Tex t4.Text

Printer.Print

Printer.Print

Printer.Print Tab(15); Label5.Caption; Tab(30); Tex t5.Text

Printer.Print

Printer.Print

Printer.Print Tab(15); Label6.Caption; Tab(30); Tex t6.Text

Printer.EndDoc

'damos por terminada la impresión

End Sub

Este ejercicio nos permite de una manera simple pod er distribuir la impresión de forma personalizada.

Internet

Este ejercicio nos permite mediante un evento click sobre un botón conectarnos con un sitio web determinado, incorporando el control WebB rowser, este control no es estándar y lo debemos traer de Componentes, Microsoft Internet Control.

Page 10: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

10

Private Sub Command1_Click()

WebBrowser1.Navigate "http://www.yahoo.com"

'WebBrowser1.GoHome

End Sub

La propiedad Navigate del control WebBrowser es el nos permite navegar hacia un sitio web, estando conectados a nuestro servidor, obviame nte, la otra propiedad alternativa GoHome nos conecta con la página predeterminada de Inicio.

Este control nos resulta muy útil cuando queremos q ue los alumnos consulten determinados sitios, antes visitados por nosotros, y así evitamos navegaciones inútiles o peligrosas por sus contenidos.

Un Navegador.

Otro ejercicio usando el control WebBrowser, en est e caso creamos un Navegador muy simple. Con el control Toolbar asociado al ImageLis t creamos una barra de herramientas, esto ya lo hemos visto en otros ejercicios. Por lo tanto nos centraremos en otras propiedades del WebBrowser.

Una caja de texto contiene la URL o dirección del s itio a visitar. Y una barra de estado o StatusBar dividida en tres paneles despliega: un me nsaje, la hora y la fecha respectivamente.

El código es el siguiente:

Private Sub Command1_Click() ' este control está oc ulto

If Text1.Text <> "" Then

WebBrowser1.Navigate Text1.Text

If WebBrowser1.Visible = False Then

WebBrowser1.Visible = True

End If

Page 11: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

11

End If

End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then 'equivale a la tecla Enter

Command1_Click

End If

End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As Co mctlLib.Button)

Select Case Button.Key

Case "back" 'se identifica por la Key

On Error Resume Next

WebBrowser1.GoBack 'Retrocede

Case "forward"

On Error Resume Next

WebBrowser1.GoForward 'Adelanta

Case "home"

Text1.Text = "http://www.geocities.com/SiliconValle y/Garage/6472"

Command1_Click

Case "refresh"

WebBrowser1.Refresh 'actualiza o refrezca

Case "stop"

WebBrowser1.Stop 'detiene la búsqueda

End Select

End Sub

Private Sub WebBrowser1_DownloadBegin()

Page 12: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

12

StatusBar1.Panels(1).Text = "Cargando Página..."

End Sub

Private Sub WebBrowser1_DownloadComplete()

StatusBar1.Panels(1).Text = "Listo"

End Sub

Dibujar

Con este ejercicio podrán los alumnos dibujar en ti empo de ejecución. Podemos agregarles una paleta de colores similar al Paint.

En caso de imprimir el dibujo es necesario que la p ropiedad del Formulario Autoredraw esté a True para que el formulario se refresque e imprim a el dibujo realizado.

Dim draw As Boolean 'declaramos una variable bulean a

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

draw = True 'estamos dibujando

CurrentX = X' carga en la variable la ubicación en la coordenada X

CurrentY = Y' carga en la variable la ubicación en la coordenada Y

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If draw Then Line -(X, Y) ' si la variable draw est a a verdadera 'dibuja cada uno de los puntos.

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift A s Integer, X As Single, Y As Single)

draw = False 'la variable draw a falsa detiene el d ibujo

End Sub

Page 13: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

13

Relacionar varios formularios. A pedido de varios seguidores de nuestra página vamos a integrar en un solo proyecto varios formula rios. El proyecto se compone de 5 formularios: Presentación, Planetas, Información, E valuación y Créditos.

Retomando un ejercicio simple ya explicado el Nº 7 El Sistema Solar, vamos a agregarle una primera pantalla de presentación con distintos boto nes o labels que nos vinculan a los otros formularios:

La label Planetas nos muestra el formulario del eje rcicio Nº7 con los distintos planetas y el procedimiento Clic de cada label transparente nos v incula a una Base de Datos previamente armada con el Data Jet, el motor para Base de Datos de Visual Basic 5 o con Access, donde tendremos la información referente a cada planeta, en este caso: el nombre del planeta, su distancia al sol en km. y la cantidad de satélites (El proyecto final está incompleto, Uds. pueden completarlo como les resulte más conveniente ).

Al hacer Clic sobre uno de los planetas se nos abre la siguiente pantalla:

El código que nos vincula a la base de datos convoc ada por un control Data que se encuentra invisible en el formulario de Información es el siguiente:

Private Sub Label12_Click() 'Esta label corresponde al planeta 'Júpiter

Label2.Caption = "Júpiter"

Form2.Data1.Recordset.MoveFirst 'mueve el puntero a l comienzo

Page 14: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

14

Form2.Data1.Recordset.Move 1 ' y luego un lugar al registro 'correspondiente en la Base de datos Planetas

Form2.Picture1.Picture = Form2.ImageList1.ListImage s(2).Picture

Form2.Show

End Sub

Para desplegar la imagen del planeta usamos un cont rol ImageList que tiene cargadas, en este caso solo dos imágenes: la Tierra y Júpiter.

La posición del registro depende del orden que le d ieron a los planetas en los registros de la Base de datos.

Ustedes pueden agregar oros campos que desplieguen más información y labels indicativas de dichos campos.

Luego tenemos el Formulario evaluación que a través de la función InputBox le hace al alumno dos preguntas: Una sobre el nombre del plane ta y otra sobre la cantidad de satélites que posee.

El formulario de evaluación se asemeja al siguiente :

Y el código es:

Private Sub Picture1_Click() 'imagen de Júpiter

planeta = InputBox("¿Qué planeta es este?", "Planet as")

If UCase(planeta) = "JÚPITER" Then

contar = contar + 1

Label2.Caption = contar

End If

satelite = InputBox("¡Cuántos satélites tiene?", "P lanetas")

If satelite = "16" Then

Page 15: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

15

contar = contar + 1

Label2.Caption = contar

Picture1.Enabled = False

End If

End Sub

También incluimos una variable contar para que nos sume puntos con las respuestas correctas, y las variables planeta y satélite que g uardan las respuestas del InputBox. Esta variables deben ser declaradas en la parte general del formulario.

Para cerrar tenemos el formulario créditos donde se indica el nombre del programador y el botón Salir que cierra la aplicación. La navegación entre un formulario y otro se realiza mediante los métodos Show: Mostrar y Hide: Ocultar. Primero se muestra el formulario vinculado y luego se oculta el que está activo. Eje mplo:

Private Sub Label1_Click()

Form3.Show

Form5.Hide

End Sub

Ustedes pueden vincular distintos formularios con d istintos ejercicios, imágenes, animaciones o videos o simplemente información escr ita.

Combinando sonidos.

El siguiente ejercicio muestra como usar el control multimedia para desplegar sonidos de tipo Midi o Wave e incluso poder superponer un soni do a otro:

Cuando se abre el formulario se ejecuta el archivo Midi y si nosotros hacemos Clic sobre el botón Wave escuchamos los gritos de Tarzan por enci ma de la música de fondo que se sigue ejecutando. Esto nos resulta útil para cierta s aplicaciones donde queremos dejar una música de fondo, o entretenimientos que combinan so nidos.

Page 16: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

16

Private Sub Command2_Click() 'Botón wave

MMControl2.Command = "Prev"

MMControl2.DeviceType = "WaveAudio" 'establece el t ipo de 'sonido

MMControl2.filename = App.Path & "\Tarzan.wav"' mue stra el 'camino

MMControl2.Command = "Open" 'lo abre

MMControl2.Command = "Play" ' lo ejecuta

End Sub

Private Sub Command3_Click() ' Botón Midi

MMControl1.Command = "Prev"

MMControl1.DeviceType = "Sequencer"' tipo de sonido

MMControl1.filename = App.Path & "\Thefinal.mid" 'c amino

MMControl1.Command = "Open" 'lo abre

MMControl1.Command = "Play" lo ejecuta

End Sub

Debemos traer de Componentes el control Multimedia y poner todos sus botones a falsos e invisibles. Luego asociamos por código a cada contr ol el archivo correspondiente, en este caso uno para el archivo Midi y otro para el Wave. Determinamos que tipo de dispositivo es y explicitamos su camino, lo abrimos y luego ejecut amos. No olvidarse el Open primero y luego el Play.

Private Sub Form_Unload(Cancel As Integer)

MMControl1.Command = "Close" 'lo cierra

MMControl2.Command = "Close" 'lo cierra

End Sub

Al descargar el formulario es fundamental cerrarlos para recuperar recursos del sistema.

Vínculos. Este ejercicio lo hemos armado a pedido de un visit ante colombiano, Luis, docente en Informática. Y nos permite vincular una palabra con una imagen específica dentro del contenido desplegado en una Label.

Page 17: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

17

Usamos como truco una label transparente superpuest a sobre la palabra que recibe el evento click y que se vincula a la imagen. El progr ama en ejecución es similar a esta imagen:

Sobre la palabra comida y animal tenemos superpuest a una label con la letra en azul para que muestre la posible interactividad, también camb iamos el puntero del mouse a una manito cuando pasa por sobre las palabras. Y al hac er click cambia el contenido de la Image en su propiedad picture. El código del evento click de la primer label es:

Private Sub Label2_Click()

Image1.Picture = Picture2.Picture

Label4.Caption = "Una rica hamburguesa"

End Sub

Contraseña. Varios visitantes nos han pedido algún ejercicio qu e use una contraseña para entrar a un programa. Aquí va un ejemplo. Vamo s a usar la función InputBox que al abrir una ventana con una caja de texto nos permite ingresar la contraseña.

Si no queremos usar la función podemos reemplazarla por el uso de un pequeño formulario diseñado a nuestro gusto con una caja de texto. El programa se ve así:

Y el código del evento click del Botón Acceso al Si stema es el siguiente:

Dim nombreusuario As String

Dim contraseña As String

nombreusuario = InputBox("Introduzca su Nombre")

Page 18: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

18

contraseña = InputBox("Introduzca CONTRASEÑA")

If UCase(nombreusuario) = "LAURA" And LCase(contras eña) = "secreto" Then

MsgBox "¡BIENVENIDA LAURA! ¿Preparada para trabajar con tu PC?"

Image1.Visible = True

ElseIf UCase(nombreusuario) = "MIRTA" And LCase(con traseña) = "duende" Then

MsgBox "¿BIENVENIDA MIRTA AL SISTEMA! ¡A trabajar n o te duermas!"

Image1.Visible = True

Else

MsgBox "ACCESO DENEGADO"

End If

Editor de menú.

En este ejercicio vamos a usar el Editor de menú de Visual Basic, que nos permite crear un menú con las características de windows. Para poder activarlo debemos estar en la ventana de formulario u objeto, no en la de código. Mediant e botones de opción vamos a hacer visibles o invisibles los menús que hemos diseñado, en este caso el tema será platos de comida y los menús serán sobre: Platos fríos, calie ntes y postres. El programa ejecutado se vé así:

Page 19: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

19

Posicionados en la ventana formulario activamos el Editor mediante el ícono y cuando se abre la ventana vamos configurado los distintos item del menú como se ve en la siguiente imagen:

Aquí hay dos propiedades muy importantes, el captio n del menú que será el título que aparezca en el menú y el name del menú, el caption puede estar vacío pero el name no, Y vamos anidando los submenús que queremos incorporar , como lo muestra la imagen, para desplegar un submenú hacemos click en next y en la flecha hacia la derecha para hacer una sangría que indica los subtemas del menú. Cada inte grante del menú responde a un solo evento que es el Click. Para probarlo podemos agreg ar el siguiente código en el evento click de cada menú:

MnuFiambres_Click()

MsgBox "haz hecho click en la opción bandeja de Fia mbres"

End Sub.

Esto no está incluído en el ejercicio, pero puede a gregarle cualqier evento para testear el funcionamiento. En relación al código que hace visi ble u oculta un tipo de menú , agregamos un botón que aplica o ejecuta la opción d e opción seleccionada con el siguiente código en el evento click del botón Aplicar:

Private Sub Command1_Click()

If Option1 Then ' mostrar menú de Entradas

mnuEntradas.Visible = True

mnuCalientes.Visible = False

mnuPostres.Visible = False

ElseIf Option2 Then ' mostrar menú Platos Calientes

mnuEntradas.Visible = False

mnuCalientes.Visible = True mnuPostres.Visible = Fa lse

Else

mnuEntradas.Visible = False

mnuCalientes.Visible = False

mnuPostres.Visible = True

End If

End Sub

Page 20: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

20

este código relaciona mediante un condicional el me nú que debe mostrarse y oculta los restantes. En el procedimiento Load del formulario incluimos el siguiente código, que oculta los menús:

Private Sub Form_Load()

mnuEntradas.Visible = False

mnuCalientes.Visible = False

mnuPostres.Visible = False

End Sub

Encuesta Graciosa.

Este ejercicio lo podemos hacer y llevar, su arranq ue al trabajo y preguntarle a nuestros colegas, o compañeros si Está conforme con el sueld o que gana. Como damos por supuesto que la mayoría va a contestarnos que No, h icimos un pequeño chiste , ya que al querer hacer Click en el Botón de No, este se nos e scapará.

El código es el siguiente:

Private Sub Command1_Click()

End

End Sub

Private Sub Command2_Click()

MsgBox "Sufre el mismo mal que millones de Argentin os!!"

End Sub

Private Sub Command2_MouseMove(Button As Integer, S hift As Integer, X As Single, Y As Single)

Command2.Move CInt(Rnd * (Width - Command2.Width)), CInt(Rnd * (Height - Command2.Height))

Page 21: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

21

End Sub

Con el Botón Si: salimos del programa y al querer h acer click en el botón: No, se mueve aleatoriamente a una nueva posición entre las medid as de ancho y alto del formulario.

Temperaturas.

En este ejercicio, simplemente entramos en tiempo d e ejecución una temperatura para cada día de la semana y luego haciendo click en los boto nes: Alta, Media y Baja , devuelve los valores en otras cajas de texto. El código es el si guiente:

Option Explicit

Dim alta As Single

Dim dia As Integer

Dim baja As Single

Dim media As Single

Private Sub Command1_Click() ' mostrar el valor más alto de los textbox() en el text Alta

alta = Text1(0).Text

For dia = 1 To 6

If Text1(dia).Text > alta Then

alta = Text1(dia).Text

End If

Next dia

Page 22: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

22

Text2.Text = alta

End Sub

Private Sub Command2_Click() 'calcular la más baja y lo muestra en el Text1(0).Text

For dia = 1 To 6

If Text1(dia).Text < baja Then

baja = Text1(dia).Text

End If

Next dia

Text3.Text = baja

End Sub

Private Sub

Command3_Click() 'calcula la media de los contenido s de text1()

Dim total As Single

Dim promedio As Single

total = 0

For dia = 0 To 6

total = total + Text1(dia)

Next dia

promedio = total / 7

Text4.Text = Format(promedio, "##.##") 'formato con dos decimales

End Sub

Private Sub Command4_Click()

For dia = 0 To 6

Text1(dia).Text = ""

Next dia

Page 23: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

23

Text1(0).SetFocus

End Sub

Private Sub Command5_Click()

End

End Sub

Usando estructuras de repetición For Next, calculam os los valores de alta y baja, luego para la media sacamos por división el promedio.

Texto y RTF.

En este Ejercicio vamos a ver como hacemos para dir ectamente desplegar un texto ya copiado y grabado en un archivo con extensión TXT, que podemos tipear en cualquier editor como el NotePad, por ejemplo y otro texto con forma to RTF (Rich Text File, o sea archivo de texto enriquecido) . Este formato puede grabarse en el Word, vamos a grabar como... y allí seleccionamos RTF.

Se llama texto enriquecido porque permite incluir d istintos tipos de letras, colores y tamaños o sea más variantes en su formato. Y el con trol que vamos a usar para desplegar este texto con formato RTF es el RichTextBox 8es un control no estándar, por lo tanto debemos traerlo de Componentes), para el texto comú n o sea con formato TXT, usaremos un TextBox de la caja de herramientas estandar. El formulario tendrá el siguiente aspecto:

Tenemos dos controles para desplegar el texto: un T ext1 y un RichTextBox1, y dos botones en cuyos eventos Click se desplegarán por código lo s archivos mencionados en los controles de texto. Primero debemos crear un archiv o en el NotePad o en el Word y grabarlo como TXT y otro con variaciónes en el tipo, color y tamaño de la letra y grabarlo como rtf. Luego abrimos visual y en creamos un nuevo proyecto grabandolo en el mismo directorio y carpeta que tenemos los archivos: txt y rtf. El cód igo de cada botón es el siguiente:

Option Explicit 'Esta expresión nos fuerza a declar ar las variables.

Private Sub Command1_Click() 'Este boton es el que carga el 'archivo TXT

Page 24: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

24

Dim pepe As String 'Declaramos una variable para id entificar el 'archivo

Dim renglon As String 'Esta variable guardará el ta maño de 'cada renglón del archivo

renglon = Chr(13) & Chr(10) ' corta a otra línea

Text1.Text = "" Open App.Path & "\rtf.txt"

For Input As #1' Abre (Open) y da 'entrada (Input) el archivo 'ubicado en el mismo directorio y carpeta en que está la 'aplicación. App.path sign ifica en la ruta actual de la'aplicación. 'Sino hay que indicar cual es el Path.

While Not EOF(1) ' esto realiza un bucle o sea repi te la acción 'hasta que se llegue al final del archivo 1 (End of File)

Line Input #1, pepe$ ' le da entrada a la linea 1 d el archivo Text1.Text = Text1.Text & pepe & renglon 'concatena con & el 'texto del archivo y el tamaño del reglón.

Wend 'repite las ordenes en tanto la condición es v erdadera, en 'este caso hasta tanto no termine el texto del archivo.

Close #1 ' cierra el archivo al terminar de cargarl o.

End Sub

Private Sub Command2_Click()

RichTextBox1.LoadFile (App.Path & "\rtf.rtf") 'como podemos 'ver con el Control RichTextBox es más sencillo el manejo de 'archivos, con la sentencia LoadFile se carga el archivo 'indicando el camino para encontrarlo.

Rompecabezas. En este ejercicio armaremos un rompecabezas con las partes del esqueleto de un gato.

Los procedimientos usados ya son conocidos: Dragear y soltar, uso de un Control PictureClip y de arrays de Imagenes para cargar las partes del rompecabezas.La imagen de la aplicación se parece a la siguiente:

Option Explicit

Private Sub Command1_Click()'el boton Salir cierra el programa

End

Page 25: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

25

End Sub

Private Sub Command2_Click() 'este boton corrige si estan bien 'colocadas las imagenes. Debe escribirse todo el código 'seguido o cortarlo usando el under _

If Picture1.Picture = Image1(2).Picture And Picture 2.Picture = Image1(1).Picture And Picture3.Picture = Image1(5).Picture And Picture4.P icture = Image1(0).Picture And Picture5.Picture = Image1(4) And Picture6.Picture = Image1(3).Picture Then

Picture1.Visible = False

Picture2.Visible = False

Picture3.Visible = False

Picture4.Visible = False

Picture5.Visible = False

Picture6.Visible =

False Image2.Visible = True 'carga otra imagen ocul ta que 'muestra un gato completo

Else 'sino es correcto vacía las imagenes para rein iciar el 'armado del rompecabezas.

Picture1.Picture = Nothing

Picture2.Picture = Nothing

Picture3.Picture = Nothing

Picture4.Picture = Nothing

Picture5.Picture = Nothing

Picture6.Picture = Nothing

End If

End Sub

Private Sub Form_Activate()' al cargarse el form y pasar a estar 'activo carga las celdas o partes en que dividimos la imagen con 'el PictureCl ip.

Image1(0).Picture = PictureClip1.GraphicCell(3) Ima ge1(1).Picture = PictureClip1.GraphicCell(1) Image1(2).Picture = Pic tureClip1.GraphicCell(0) Image1(3).Picture = PictureClip1.GraphicCell(5) Ima ge1(4).Picture = PictureClip1.GraphicCell(4) Image1(5).Picture = Pic tureClip1.GraphicCell(2)

End Sub

Page 26: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

26

Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)

Picture1.Picture = Source

End Sub

Private Sub Picture2_DragDrop(Source As Control, X As Single, Y As Single)

'carga las imagenes de origen al soltarlas

Picture2.Picture = Source

End Sub Private Sub Picture3_DragDrop(Source As Con trol, X As Single, Y As Single)

Picture3.Picture = Source

End Sub

Private Sub

Picture4_DragDrop(Source As Control, X As Single, Y As Single)

Picture4.Picture = Source

End Sub

Private Sub Picture5_DragDrop(Source As Control, X As Single, Y As Single)

Picture5.Picture = Source

End Sub

Private Sub

Picture6_DragDrop(Source As Control, X As Single, Y As Single)

Picture6.Picture = Source

End Sub

Uso del Scrollbar.

Usaremos en este ejercicio dos Scrollbar horizontal es para modificar el valor de la propiedad QBColor que muestra 16 colores, con valor es de 0 a 15, estos valores estarán asociados a la ubicación de la pestaña del Scroll y se mostrarán en dos cajas de texto.

Page 27: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

27

De acuerdo a su valor este determinará el color del fondo del formulario, y del tipo de un terce control Text. La aplicación se así:

Aquí también debemos prestar atención a la propieda d Value, Y a los procedimientos Change y Scroll, que testean cuando se modifica el valor de la barra horizontal. También debemos determinar los valores de las propiedades M in y Max en este caso, a 0 la primera y 15 la segunda y dejamos el LargeChange o sea el lar go del cambio, a 1. El código es el siguiente:

Option Explicit

HScroll1_Change()

Text1.Text = HScroll1.Value

Text3.BackColor = QBColor(HScroll1.Value)

End Sub

Private Sub

HScroll1_Scroll()

Text1.Text = HScroll1.Value

Text3.BackColor = QBColor(HScroll1.Value)

End Sub

Private Sub

HScroll2_Change()

Text2.Text = HScroll2.Value

Text3.ForeColor = QBColor(HScroll2.Value)

End Sub

Private Sub

Page 28: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

28

HScroll2_Scroll()

Text2.Text = HScroll2.Value

Text3.ForeColor = QBColor(HScroll2.Value)

End Sub

Barra de Porcentaje.

Este ejercicio nos permite hacer una Barra de progr eso al estilo windows, donde nos muestra el porcentaje cubierto.El formulario tiene el siguiente aspecto:

Los controles que usamos son un Botón que activa el proceso y una picture que va cambiando su color a medida que el porcentaje aumen ta.El código es el siguiente:

Private Sub Command1_Click()

Picture1.ForeColor = RGB(0, 0, 255) 'color azul

For i = 0 To 100 'un bucle que llama al procedimien to 'actualizaprogress

actualizaprogress Picture1, i

Call pausa 'procedimiento de espera

Next i

End Sub

Private Sub actualizaprogress(pb As Control, ByVal percent)

Dim num$ ' porcentaje

'el autoredraw de la picture debe estar a = true

pb.Cls

pb.ScaleWidth = 100

pb.DrawMode = 10

Page 29: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

29

num$ = Format(percent, "##") + "%" 'calcula el porc entaje

pb.FontSize = 18

pb.CurrentX = 50 - pb.TextWidth(num$) / 2

pb.CurrentY = (pb.ScaleHeight - pb.TextHeight(num$) ) / 2

pb.Print num$ 'imprime en la picture el porcentaje

pb.Line (0, 0)-(percent, pb.ScaleHeight), , BF 'dib uja el 'rectangulo

pb.Refresh 'actualiza la picture

End Sub

Private Sub pausa() 'procedimiento que detiene la a plicación 'un segundo

Dim controlar

Dim comenzar

comenzar = Timer

Do Until controlar >= comenzar + 0.2

controlar = Timer

DoEvents

Loop

End Sub

Slider

Page 30: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

30

Este es un control slider común donde codificamos l os procedimientos Click y Change. Usamos la función Format para darle forma al valor en centímetros. El código es el siguiente:

Option Explicit

Private Sub Slider1_Change()

Label1.Caption = "Medida en Centímetros = " & Forma t(Slider1.Value, "#.00")

End Sub

Private Sub Slider1_Scroll()

Label1.Caption = "Medida en Centímetros = " & Forma t(Slider1.Value, "#.00")

End Sub

Media Player MP3

En este ejercicio vamos a ejecutar archivos MP3 usa ndo el control Media Player. Que debemos traer de componentes, y por supuesto tenerl o instalado en nuestro sistema a una de sus últimas versiones.

Los controles que usamos son: un Media palyer, los tres controles tipicos para manipular archivos : DriveListBox, el DirListBox y el FileLis tBox, dos botones y dos labels con un timer que daran cuenta del tiempo total y parcial d el archivo. El código es:

Option Explicit Dim Min As Integer Dim Sec As Integer Dim Nombrearchivo As String Dim Abrirarchivo As Boolean

Private Sub Command2_Click()'Boton salir End End Sub

Private Sub Command4_Click()'Boton Abrir y cerrar e l archivo MP3

Page 31: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

31

With MediaPlayer1 If Not Abrirarchivo Then .FileName = Nombrearchivo .AutoStart = False Command4.Caption = "Cerrar" Else .FileName = "" Command4.Caption = "Abrir" End If End With End Sub

Private Sub Dir1_Change()'selecciona el directorio File1.FileName = Dir1.Path End Sub

Private Sub File1_Click()'selecciona el archivo MP3 If Right(Dir1.Path, 1) = "\" Then Nombrearchivo = Dir1.Path & File1.FileName Else Nombrearchivo = Dir1.Path & "\" & File1.FileName End If End Sub

Private Sub MediaPlayer1_OpenStateChange(ByVal OldS tate As Long, ByVal NewState As Long)'mide el tiempo total de duración del archivo Min = MediaPlayer1.Duration \ 60 Sec = MediaPlayer1.Duration - (Min * 60) Label7.Caption = "Tiempo Total: " & Format(Min, "0# ") & ":" & Format(Sec, "0#") Abrirarchivo = CBool(NewState) End Sub

Private Sub Timer1_Timer()'con el timer actualiza l a label de tiempo 'transcurrido Min = MediaPlayer1.CurrentPosition \ 60 Sec = MediaPlayer1.CurrentPosition - (Min * 60) If Min > 0 Or Sec > 0 Then Label8.Caption = "Tiempo transcurrido: " & Format(M in, "0#") & ":" & Format(Sec, "0#") Else Label8.Caption = "Tiempo transcurrido: 00:00" End If End Sub

Para que muestre solo los archivos MP3 en la propie dad Pattern del FileListBox: ingresamos "*.MP3"

Page 32: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

32

Clave de Seguridad

Hay muchas maneras de incluir en un ejercicio ciert o control de seguridad a través de una clave, o password, en esta aplicación se hace utili zando la propiedad tag del control Text, donde se ingresa. El código es: Private Sub cmdAceptar_Click() Static Intentos As Integer Dim Espera As Long If UCase(txtPassword.Text) = txtPassword.Tag Then CandadoCerrado.Picture = CandadoAbierto.Picture Image1.Visible = False Refresh Espera = Timer 'Espera 2 seg, muestra el formulario principal While Espera + 2 > Timer Wend 'Descarga esta forma Unload frmClave Form2.Show Else Intentos = Intentos + 1 If Intentos = 3 Then MsgBox "Lo siento...Demasiados intentos", vbCritica l, "Acceso Negado" txtPassword.SetFocus End Else MsgBox "Presione OK e intente otra vez", vbInformat ion, "Clave Incorrecta" txtPassword.SelStart = 0 txtPassword.SelLength = Len(txtPassword) txtPassword.SetFocus End If End If End Sub

Private Sub cmdSalir_Click() End End Sub

Page 33: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

33

Servicio

Este ejercicio utiliza Botones de Opción y fue real izado a partir del pedido de un alumno por mail. También integra: labels, caja de textos, boto nes y calcula el total del valor del pedido de acuerdo a la opción seleccionada y la cantidad. Su código es el siguiente: 'Declaración de las variables para el precio de cada una. Dim Hamburguesa As Single Dim HotDog As Single Dim Sandwich As Single Dim Gaseosa As Single Dim Refresco As Single Dim PapasFritas As Single 'Declaración de variables para la cantidad de cada una. Dim CantidadHamburguesa As Integer Dim CantidadHotDog As Integer Dim CantidadSandwich As Integer Dim CantidadGaseosa As Integer Dim CantidadRefresco As Integer Dim CantidadPapasFritas As Integer

Private Sub cmdCalcular_Click() 'Multiplicando la cantidad por el precio y sumando para hallar el total. Total = (CantidadHamburguesa * Hamburguesa) + (Cant idadHotDog * HotDog) + _ (CantidadSandwich * Sandwich) + (CantidadGaseosa * Gaseosa) + _ (CantidadRefresco * Refresco) + (CantidadPapasFrita s * PapasFritas) lblTotal.Caption = "$ " & Total End Sub

Private Sub cmdSalir_Click() End End Sub

Private Sub Form_Load() 'Inicializar las variables 'Precio de los productos Hamburguesa = 20.5

Page 34: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

34

HotDog = 19.25 Sandwich = 17.5 PapasFritas = 4.5 Refresco = 4 Gaseosa = 5 End Sub

Private Sub optOtroPedido_Click() 'Limpiar el label lblTotal. lblTotal.Caption = ""

'Inicializar las variables. CantidadHamburguesa = 0 CantidadGaseosa = 0 CantidadPapasFritas = 0 CantidadHotDog = 0 CantidadSandwich = 0 CantidadRefresco = 0

'Habilitar todas las cajas de texto para poder entr ar datos en todas. txtHamburguesa.Enabled = True txtHotDog.Enabled = True txtSandwich.Enabled = True txtGaseosa.Enabled = True txtRefresco.Enabled = True txtPapasFritas.Enabled = True

'Limpiar todas las cajas de texto. txtHamburguesa.Text = "" txtHotDog.Text = "" txtSandwich.Text = "" txtGaseosa.Text = "" txtRefresco.Text = "" txtPapasFritas.Text = "" End Sub

Private Sub optPedido1_Click() 'Hamburguesas,Gaseosa y Papas Fritas. 'Limpiar el label lblTotal. lblTotal.Caption = ""

If optPedido1.Value Then 'si esta chequeado. 'Inicializar las variables. CantidadHamburguesa = 1 CantidadGaseosa = 1 CantidadPapasFritas = 1 CantidadHotDog = 0 CantidadSandwich = 0 CantidadRefresco = 0 'Inicializar la caja de texto. txtHamburguesa.Text = CantidadHamburguesa txtGaseosa.Text = CantidadGaseosa txtPapasFritas.Text = CantidadPapasFritas

Page 35: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

35

'Habilitar las cajas de texto. txtHamburguesa.Enabled = True txtGaseosa.Enabled = True txtPapasFritas.Enabled = True 'Deshabilitar las otras cajas de texto. txtHotDog.Enabled = False txtSandwich.Enabled = False txtRefresco.Enabled = False 'Limpiar las otras cajas de texto. txtHotDog.Text = "" txtSandwich.Text = "" txtRefresco.Text = "" End If End Sub

Private Sub optPedido2_Click() 'HotDog,Gaseosa y Papas Fritas. 'Limpiar el label lblTotal. lblTotal.Caption = ""

If optPedido2.Value Then 'Inicializar las variables. CantidadHotDog = 1 CantidadGaseosa = 1 CantidadPapasFritas = 1 CantidadHamburguesa = 0 CantidadSandwich = 0 CantidadRefresco = 0 'Inicializar la caja de texto. txtHotDog.Text = CantidadHotDog txtGaseosa.Text = CantidadGaseosa txtPapasFritas.Text = CantidadPapasFritas 'Habilitar las cajas de texto. txtHotDog.Enabled = True txtGaseosa.Enabled = True txtPapasFritas.Enabled = True 'Deshabilitar las otras cajas de texto. txtHamburguesa.Enabled = False txtSandwich.Text = False txtRefresco.Text = False 'Limpiar las otras cajas de texto. txtHamburguesa.Text = "" txtSandwich.Text = "" txtRefresco.Text = "" End If End Sub

Page 36: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

36

Private Sub optPedido3_Click() 'Sanwich,Gaseosa y Papas Fritas. 'Limpiar el label lblTotal lblTotal.Caption = ""

If optPedido3.Value Then 'Inicializar las variables CantidadSandwich = 1 CantidadGaseosa = 1 CantidadPapasFritas = 1 CantidadHamburguesa = 0 CantidadHotDog = 0 CantidadRefresco = 0 'Inicializar la caja de texto txtSandwich.Text = CantidadSandwich txtGaseosa.Text = CantidadGaseosa txtPapasFritas.Text = CantidadPapasFritas 'Habilitar las cajas de texto txtSandwich.Enabled = True txtGaseosa.Enabled = True txtPapasFritas.Enabled = True 'Deshabilitar las otras cajas de texto. txtHotDog.Enabled = False txtHamburguesa.Enabled = False txtRefresco.Enabled = False 'Limpiar las otras cajas de texto. txtHotDog.Text = "" txtHamburguesa.Text = "" txtRefresco.Text = "" End If End Sub

Private Sub txtHamburguesa_Change() 'Limpiando el lblTotal. lblTotal.Caption = "" End Sub

Private Sub txtHamburguesa_GotFocus() txtHamburguesa.SelStart = 0 txtHamburguesa.SelLength = Len(txtHamburguesa.Text) End Sub

Private Sub txtHamburguesa_LostFocus() If txtHamburguesa.Text = "" Then CantidadHamburguesa = 0 Exit Sub End If If IsNumeric(txtHamburguesa.Text) Then 'Si es numér ico. If txtHamburguesa.Text > 0 Then 'Si es positivo. CantidadHamburguesa = txtHamburguesa.Text 'Entonces asigna el valor a la variable.

Page 37: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

37

Else MsgBox "Entre un valor positivo", vbCritical txtHamburguesa.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtHamburguesa.SetFocus End If End Sub

Private Sub txtGaseosa_Change() lblTotal.Caption = "" End Sub

Private Sub txtGaseosa_GotFocus() 'Para seleccionar el texto(igual en todos). txtGaseosa.SelStart = 0 txtGaseosa.SelLength = Len(txtGaseosa.Text) End Sub

Private Sub txtGaseosa_LostFocus() If txtGaseosa.Text = "" Then CantidadGaseosa = 0 Exit Sub End If If IsNumeric(txtGaseosa.Text) Then 'Si es numérico. If txtGaseosa.Text > 0 Then 'Si es positivo. CantidadGaseosa = txtGaseosa.Text 'Entonces asigna el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtGaseosa.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtGaseosa.SetFocus End If End Sub

Private Sub txtHotDog_Change() lblTotal.Caption = "" End Sub

Private Sub txtHotDog_GotFocus() txtHotDog.SelStart = 0 txtHotDog.SelLength = Len(txtHotDog.Text) End Sub

Private Sub txtHotDog_LostFocus() If txtHotDog.Text = "" Then CantidadHotDog = 0 Exit Sub End If If IsNumeric(txtHotDog.Text) Then 'Si es numérico. If txtHotDog.Text > 0 Then 'Si es positivo.

Page 38: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

38

CantidadHotDog = txtHotDog.Text 'Entonces asigna el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtHotDog.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtHotDog.SetFocus End If End Sub

Private Sub txtPapasFritas_Change() lblTotal.Caption = "" End Sub

Private Sub txtPapasFritas_GotFocus() txtPapasFritas.SelStart = 0 txtPapasFritas.SelLength = Len(txtPapasFritas.Text) End Sub

Private Sub txtPapasFritas_LostFocus() If txtPapasFritas.Text = "" Then CantidadPapasFritas = 0 Exit Sub End If If IsNumeric(txtPapasFritas.Text) Then 'Si es numér ico. If txtPapasFritas.Text > 0 Then 'Si es positivo. CantidadPapasFritas = txtPapasFritas.Text 'Entonces asigna el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtPapasFritas.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtPapasFritas.SetFocus End If End Sub

Private Sub txtRefresco_Change() lblTotal.Caption = "" End Sub

Private Sub txtRefresco_GotFocus() txtRefresco.SelStart = 0 txtRefresco.SelLength = Len(txtRefresco.Text) End Sub

Private Sub txtRefresco_LostFocus() If txtRefresco.Text = "" Then CantidadRefresco = 0 Exit Sub End If If IsNumeric(txtRefresco.Text) Then 'Si es numérico . If txtRefresco.Text > 0 Then 'Si es positivo.

Page 39: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

39

CantidadRefresco = txtRefresco.Text 'Entonces asign a el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtRefresco.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtRefresco.SetFocus End If End Sub

Private Sub txtSandwich_Change() lblTotal.Caption = "" End Sub

Private Sub txtSandwich_GotFocus() txtSandwich.SelStart = 0 txtSandwich.SelLength = Len(txtSandwich.Text) End Sub

Private Sub txtSandwich_LostFocus() If txtSandwich.Text = "" Then CantidadSandwich = 0 Exit Sub End If If IsNumeric(txtSandwich.Text) Then 'Si es numérico . If txtSandwich.Text > 0 Then 'Si es positivo. CantidadSandwich = txtSandwich.Text 'Entonces asign a el valor a la variable. Else MsgBox "Entre un valor positivo", vbCritical txtSandwich.SetFocus End If Else MsgBox "Entre un valor numérico", vbCritical txtSandwich.SetFocus End If End Sub

Función Mod

Page 40: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

40

Este ejercicio usa las funciónes Mod y Format que n os permiten dar formato al valor del tiempo que muestra el cronómetro. Usamos una Label y tres botones para las acciones. El código es: Dim I As Long 'Contador. Dim Tiempo As String 'Tiempo total transcurrido.

Private Sub cmdDetener_Click() Timer1.Interval = 0 End Sub

Private Sub cmdIniciar_Click() I = 0 'Inicializar el contador. Timer1.Interval = 0 'Detener el cronometro lblCronometro.Caption = "" 'Limpiar la etiqueta Timer1.Interval = 1 'Iniciar el cronometro End Sub

Private Sub cmdSalir_Click() End End Sub

Private Sub Timer1_Timer() I = I + 1 Tiempo = Format(Int(I / 36000) Mod 24, "00") & ":" & _ Format(Int(I / 600) Mod 60, "00") & ":" & _ Format(Int(I / 10) Mod 60, "00") & ":" & _ Format(I Mod 10, "00") lblCronometro.Caption = Tiempo End Sub

Calendario.

Estos dos controles: el MonthView y el DTPicker son controles especiales que trae la versión 6 y que podemos traer de Componentes, selec cionando Microsoft Windows Common Controls - 2 6.0, y como vemos nos despliega n hora y fecha y un calendario que podemos recorrer.

Page 41: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

41

Validar un texto.

El control caja de Texto tiene ahora en esta versió n 6 un nuevo procedimiento que nos permite controlar la información que se ingresa, y una vez validada recién pasar al campo de texto siguiente.

Prueben tratar de pasar a la caja de texto siguient e sin ingresar ningún dato con la tecla Tab y verán que no lo permite.

El código es:

Private Sub Text1_Validate(Cancel As Boolean)

If Text1.Text <> "MIRTA" Then

MsgBox "Debes tipear MIRTA en el primer texto para pasar al segundo.", vbInformation, "Instrucciones"

Cancel = True

End If

End Sub

Private Sub Text2_Validate(Cancel As Boolean)

If Text2.Text <> "CONSUDEC" Then

MsgBox "Debes tipear CONSUDEC en el segundo texto p ara pasar al tercero.", vbInformation, "Instrucciones"

Cancel = True

End If

End Sub

Page 42: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

42

Coolbar.

Este control pertenece al grupo Microsoft Windows C ommon Controls 3 6.0, y permite desplegar una barra que contenga otros controles.

En este caso al hacer Click en el icono del Reloj d espliega la hora. Estos controles que se insertan dentro de la Coolbar pueden mantenerse flo tantes o fijos.

El código es:

Private Sub Command1_Click()

Label1.Caption = Time

End Sub

Private Sub Form_Activate()

List1.AddItem "Chocolates"

List1.AddItem "Caramelos"

List1.AddItem "Chupetines"

List1.AddItem "Galletitas"

End Sub

En el caso de la Lista le agregamos distintos Items a través del Método AddItem en tiempo de ejecución.

Page 43: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

43

Barra de progreso.

Este ejercicio nos muestra el uso de una barra de p rogreso que podemos usar mientras se realiza la carga de un archivo o en otro momento de espera hasta que se complete una tarea.

El código es el siguiente:

Option Explicit

Private Sub cmdSalir_Click()

End

End Sub

Private Sub Form_Load() 'Inicializamos el timer par a que este apagado Timer1.Enabled = False

End Sub

Private Sub cmdComenzar_Click() 'Inicializamos la b arra de progreso, y comenzamos el Timer

Progreso.Value = 0

Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer() 'Si el progreso todavía no termina, seguir aumentando Value hasta 100

With Progreso

If .Value < .Max Then

.Value = .Value + 1

Else 'Termino

MsgBox "Proceso Terminado", , "Barra de Progreso" ' Deshabilitamos el Timer Timer1.Enabled = False

Page 44: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

44

End If

End With

End Sub

Aquí usamos with para referirnos al control y no te ner que repetir su nombre. Esto es muy útil cuando debemos modificar los valores de varias propiedades por código de un mismo control.

Barra de estado.

Un ejemplo de como modificar en tiempo de ejecución la Barra de estado. En el formulario tenemos una caja de texto donde ingresamos el texto a desplegar y luego en el click de un botón lo asignamos al panel de la barra correspondi ente.

El código correspondiente es:

Private Sub cmdAceptar_Click()

StatusBar1.Panels("Texto").Text = txtPanel

End Sub

Como vemos es muy sencillo, para asignarle un valor al panel correspondiente debemos identificarlo con el nombre del mismo, determinado en la ventana propiedades, para tener acceso al mismo debemos hacer click con el boton de recho sobre el control y alli podemos configurar los distintos paneles.

Pestañas.

Page 45: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

45

Es común usar el control TabStrip para mostrar apli caciones con pestañas, sin embargo es mucho más potente el control Tabbed Dialog ya que c ada panel puede contener otros controles, esto facilita el diseño y su codificació n.

En el formulario dibujamos un control SStab traido de componentes y luego en su primer pestaña dibujamos varias labels que nos vincularan con las otras pestañas, donde se mostrará en una texto y en la otrs una imagen. El c ódigo es el siguiente:

Option Explicit

Private Sub Form_Load()

SSTab1.Tab = 0 'esto hace que se muestre el primer panel

End Sub

Private Sub

Label1_Click()

Text1.Text = "Aqui podemos cargar un texto con form ato richtextbox, sobre el Tema 1."

SSTab1.Tab = 1

End Sub

Private Sub Label4_Click()

Picture1.Picture = Picture2

SSTab1.Tab = 2

End Sub

Private Sub Label5_Click()

Text1.Text = "Aqui podemos cargar un texto con form ato richtextbox, sobre el Tema 2."

SSTab1.Tab = 1

End Sub

Private Sub Label6_Click()

Picture1.Picture = Picture3

SSTab1.Tab = 2

End Sub

Page 46: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

46

Como vemos lo importante es la propiedad Tab y la a signación del indice del panel de l control que queremos mencionar.

Promedio de Notas

Este ejercicio nos permite ingresar una cantidad de valores, por ejemplo las notas de un alumno, y luego obtener su promedio. En el formular io usamos cuatro botones, dos cajas de texto, y un ListBox, un frame y tres Labels. El cód igo es el siguiente: Option Explicit Dim Nota() As Single Dim N As Integer 'Número total de notas.

Private Sub cmdBorrarNota_Click() Dim i As Integer, NotaInd As Integer NotaInd = List1.ListIndex + 1 'Asigna el orden del elemento de la lista a una variable. If List1.ListIndex = -1 Then 'Si no esta checheada la lista. MsgBox "Haga click en la lista para borrar la nota" Exit Sub Else List1.RemoveItem (List1.ListIndex) 'Borra de la Lis ta la Nota Text1.Text = "" 'Limpia el texto. 'Eliminar la nota de indice (List1.ListIndex+1) y c orrer las notas For i = NotaInd To N - 1 Nota(i) = Nota(i + 1) Next i N = N - 1 'actualizando número de notas por ser bor rada una. If N > 1 Then ReDim Preserve Nota(1 To N) 'Reajusta ndo la dimensión del arreglo notas Text2.Text = "" End If End Sub

Page 47: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

47

Private Sub cmdEntrarNota_Click() If Text1.Text = "" Then 'Si no se han introducido n ota. MsgBox "No se ha introducido una nota" Text1.SetFocus Exit Sub End If N = N + 1 'Inicializa el conteo de las notas entrad as. ReDim Preserve Nota(1 To N) 'Redimesiona el arreglo . Nota(N) = Text1.Text 'Asigna el valor al arreglo. List1.AddItem (Nota(N)) 'Añade la nota a la lista. cmdEntrarNota.Enabled = False End Sub

Private Sub cmdPromedio_Click() Dim Suma As Single Dim Promedio As Single Dim J As Integer If N = 0 Then 'Si el número de notas es cero. MsgBox "No existen valores para promediar" Exit Sub End If Suma = 0 For J = 1 To N 'Suma todas las notas Suma = Suma + Nota(J) Next J Promedio = Suma / N Text2.Text = Promedio End Sub

Private Sub cmdSalir_Click() End End Sub

Private Sub Form_Activate() Text1.SetFocus

End Sub

Private Sub Text1_Change() cmdEntrarNota.Enabled = True Text2.Text = "" End Sub

Private Sub Text1_Click() cmdEntrarNota.Enabled = True End Sub

Private Sub Text1_GotFocus() 'Para Selelccionar el texto al hacer click en él. Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub

Page 48: Aprende a Programar Con Vb 6.0

Tutoriales Programación Kazak_anjes

Rif: V-12789240-3

Ing. Sistemas Anjes Cordanov | [email protected]

48

Private Sub Text1_LostFocus() If IsNumeric(Text1.Text) Then 'Chequea si el valor es numérico. If Text1.Text <= 0 Then 'Chequea si es mayor que ce ro. MsgBox "Valor incorrecto,debe ser mayor que cero", vbCritical Text1.SetFocus 'Situa el foco en el TexBox Text1. End If Else 'Si no es numérico el dato. MsgBox "El valor debe ser mayor que cero", vbCritic al Text1.SetFocus 'Situa el foco en el TexBox Text1. End If End Sub