Está en la página 1de 48

Tutoriales Programacin Kazak_anjes

Rif: V-12789240-3

Primeros pasos en Visual BASIC 6.0


Ejercicios importantes para aprender a programar

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

Partes de la Computadora.

Abrimos el programa Visual Basic seleccionamos Nuevo proyecto y comenzamos a trabajar.


Este ejercicio muestra un truco muy sencillo pero de 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, gabinete. Esto por cdigo sera muy complejo
pero usando el control Label en su modo transparente y con el Caption vaco, 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 sobre el monitor, todava opaca como viene
por defecto, luego sobre el gabinete est transparente pero con el Caption , tambin por
defecto en este caso : Label2. Y en el teclado donde est posicionado el cursor en cambio
est transparente. De acuerdo a la parte que seleccionemos: en una cuarta Label se nos
mostrar el texto correspondiente, en el caso del formulario : "Teclado".
En este ejercicio tenemos una Image, con su Propiedad Stretch a True, lo que nos permite
agrandar un icono al tamao deseado. Y cuatro Labels, tres transparentes para subdividir la
Image y una opaca para mostrar la parte seleccionada, y un Botn de Salida.
El Cdigo de este ejercicio es el siguiente:
Private Sub Command1_Click()
End ' Cierre de la aplicacin
End Sub
Private Sub Label2_Click() 'El evento Click modifica el titulo de 'label1
Label1.caption = "Monitor"
End Sub
Private Sub Label3_Click()

2
Label1.caption = "Gabinete"
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-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. Tambin a partir de aqu podramos elaborar un Ahorcado.
El crucigrama est armado con cuadros de texto o sea controles Text, encerrados dentro de
un control frame, este control tiene la nica finalidad de agrupar y contener otros controles,
ordenando la interactividad de una manera visual. Otros dos controles Frame agrupan las
opciones vertical y horizontal. Conteniendo controles CheckBox que al ser seleccionados
hacen la correccin de las letras ingresadas en las cajas de texto. El ingreso de las mismas
se hace en tiempo de ejecucin a travs del teclado.
A la derecha vemos unos controles Picture vacos que se cargaran con imgenes que
muestren por ejemplo una cara sonriente si la palabra es correcta o seria si no lo es, o
cualquier otro tipo de imagen .Podemos llamar a esta imagen con la funcin LoadPicture
desde cualquier parte de nuestro disco rgido. Y un botn con el icono de Hijitus indica la
Salida y cierre del programa.
Ac tendremos que crear por cdigo una estructura condicional que controle si la entrada
de datos es correcta o no.
El cdigo 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
cdigo debe ir todo en un mismo regln y 'chequea si se escribi una de las palabras

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
correctas. Ciudado con los 'nombres de los Controles porque seguramente Ustedes no
tendrn la 'misma numeracin que yo. (Otra aclaracin cuando usamos el carcter '
'indicamos que todo lo que sigue es un comentario, por lo tanto la 'computadora no lo
ejecuta lo saltea, no es cdigo).
Image1. Picture = LoadPicture(c:\vb\Icons\Misc\Face03.ico) 'carita linda
Else 'Sino
Image1. Picture = LoadPicture(c:\vb\Icons\Misc\Face01.ico) 'carita fea
End Sub
Private Sub Check2_Click()
If Text2.Text = "O" And Text5.Text ="R" And Text9.Text ="O" then
Image2.Picture = LoadPicture(c:\vb\Icons\Misc\Face03.ico) 'carita linda
Else 'Sino
Image2. Picture = LoadPicture(c:\vb\Icons\Misc\Face01.ico) 'carita fea
End Sub
Private Sub Check3_Click()
If Text7.Text = "R" And Text8.Text ="A" And Text9.Text ="T" And Text4.Text ="O" And
Text10.Text ="N" then
Image3. Picture = LoadPicture(c:\vb\Icons\Misc\Face03.ico) 'carita linda Else 'Sino
Image3. Picture = LoadPicture(c:\vb\Icons\Misc\Face01.ico) 'carita fea
End Sub

Sumas.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Este ejercicio elige en forma Aleatoria dos nmeros 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 volvern a aparecer otros
dos nmeros para que siga sumando.

El botn Aplicar permite hacer la correccin mediante un Condicional. Algunos de estos


temas son comunes a otros ejercicios. Por lo tanto nos centraremos en las funciones
nuevas.
La funcin Rnd nos permite cargar en una variable un nmero 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 sumando de nuestra cuenta. Para que
realmente sea aleatorio debemos incorporar la sentencia Randomize en el Procedimiento
Load del Formulario.
Otra funcin que utilizamos es Val que transforma una cadena de caracteres, en este caso el
contenido de un Text en un valor numrico.
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 nmeros , iniciando una nueva
cuenta. Pero necesitamos una espera en la aplicacin. Esto lo hacemos por cdigo con un
bucle que asociado al reloj del sistema crea una pausa en la aplicacin. Para esto creamos
un Procedimiento llamado Pausa. Posicionados en la ventana de cdigo , 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 opcin
seleccionamos: Sub y Private. Damos el Aceptar y se cierra la ventana. Ahora veremos en
nuestra ventana de cdigo un nuevo Procedimiento llamado Pausa. Incluido dentro de los
procedimientos del objeto General. Luego lo llamaremos desde otra parte del programa con
la sentencia Call.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

Para mayor claridad vamos al cdigo:


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 nmero aleatorio
num2 = Int(Rnd * 10) 'elige un nmero aleatorio
Text1.Text = ""
Label1.Caption = num1
Label2.Caption = num2
Text1.SetFocus ' ubica el foco del cursor en el control Text1
Command2.Enabled = False
Image1.Picture = Nothing 'vaca el contenido de la imagen
End Sub

6
Private Sub Command2_Click()
Command2.Enabled = False

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
resultado = Val(Text1.Text)
If resultado = Int(num1) + Int(num2) Then
Image1.Picture = Picture1.Picture
Call pausa ' llama al procedimiento que creamos como Pausa
Call Command1_Click 'este procedimiento llama a otra 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 aparece una cuenta
num2 = Int(Rnd * 10)
Text1.Text = ""
Label1.Caption = num1'se vuelcan las variables en las Labels
Label2.Caption = num2
Command2.Enabled = False'el botn aplicar est desactivado
End Sub
Private Sub Text1_Change()
Command2.Enabled = True'al cambiar el texto se activa Aplicar

7
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

Imprimiendo con Printer.

En este formulario desplegamos datos en cajas de texto y a travs 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 controlar el texto, cambiar su aspecto,
tamao, tipo y color de la fuente y coordenadas. Private Sub Command1_Click()
Printer.Orientation = 1
' La orientacin del papel es vertical
Printer.FontSize = 12
'Tamao de la letra
Printer.Print
'Un rengln en blanco o salto de carro
Printer.Print
Printer.Print
Printer.Print Tab(15); Label1.Caption; Tab(30); Text1.Text
'Aqu damos la orden de impresin 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

8
Printer.Print Tab(15); Label2.Caption; Tab(30); Text2.Text
Printer.Print

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Printer.Print
Printer.Print Tab(15); Label3.Caption; Tab(30); Text3.Text
Printer.Print
Printer.Print
Printer.Print
Printer.Print Tab(15); Label4.Caption; Tab(30); Text4.Text
Printer.Print
Printer.Print
Printer.Print Tab(15); Label5.Caption; Tab(30); Text5.Text
Printer.Print
Printer.Print
Printer.Print Tab(15); Label6.Caption; Tab(30); Text6.Text
Printer.EndDoc
'damos por terminada la impresin
End Sub
Este ejercicio nos permite de una manera simple poder distribuir la impresin de forma
personalizada.

Internet

Este ejercicio nos permite mediante un evento click sobre un botn conectarnos con un
sitio web determinado, incorporando el control WebBrowser, este control no es estndar y
lo debemos traer de Componentes, Microsoft Internet Control.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

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, obviamente, la otra propiedad alternativa
GoHome nos conecta con la pgina predeterminada de Inicio.
Este control nos resulta muy til cuando queremos que los alumnos consulten
determinados sitios, antes visitados por nosotros, y as evitamos navegaciones intiles o
peligrosas por sus contenidos.

Un Navegador.

Otro ejercicio usando el control WebBrowser, en este caso creamos un Navegador muy
simple. Con el control Toolbar asociado al ImageList 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 direccin del sitio a visitar. Y una barra de estado o
StatusBar dividida en tres paneles despliega: un mensaje, la hora y la fecha
respectivamente.
El cdigo es el siguiente:
Private Sub Command1_Click() ' este control est oculto
If Text1.Text <> "" Then
WebBrowser1.Navigate Text1.Text
If WebBrowser1.Visible = False Then

10

WebBrowser1.Visible = True
End If

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
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 ComctlLib.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/SiliconValley/Garage/6472"
Command1_Click
Case "refresh"
WebBrowser1.Refresh 'actualiza o refrezca
Case "stop"
WebBrowser1.Stop 'detiene la bsqueda
End Select

11
End Sub
Private Sub WebBrowser1_DownloadBegin()

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
StatusBar1.Panels(1).Text = "Cargando Pgina..."
End Sub
Private Sub WebBrowser1_DownloadComplete()
StatusBar1.Panels(1).Text = "Listo"
End Sub

Dibujar

Con este ejercicio podrn los alumnos dibujar en tiempo de ejecucin. Podemos agregarles
una paleta de colores similar al Paint.
En caso de imprimir el dibujo es necesario que la propiedad del Formulario Autoredraw est
a True para que el formulario se refresque e imprima el dibujo realizado.
Dim draw As Boolean 'declaramos una variable buleana
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 ubicacin en la coordenada X
CurrentY = Y' carga en la variable la ubicacin 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 esta a verdadera 'dibuja cada uno de los puntos.
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
draw = False 'la variable draw a falsa detiene el dibujo
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

12

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

Relacionar varios formularios.

A pedido de varios seguidores de nuestra pgina


vamos a integrar en un solo proyecto varios formularios. El proyecto se compone de 5
formularios: Presentacin, Planetas, Informacin, Evaluacin y Crditos.

Retomando un ejercicio simple ya explicado el N 7 El Sistema Solar, vamos a agregarle una


primera pantalla de presentacin con distintos botones o labels que nos vinculan a los otros
formularios:
La label Planetas nos muestra el formulario del ejercicio N7 con los distintos planetas y el
procedimiento Clic de cada label transparente nos vincula 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 informacin referente a cada planeta, en este caso: el nombre del planeta, su
distancia al sol en km. y la cantidad de satlites (El proyecto final est incompleto, Uds.
pueden completarlo como les resulte ms conveniente).

Al hacer Clic sobre uno de los planetas se nos abre la siguiente pantalla:
El cdigo que nos vincula a la base de datos convocada por un control Data que se
encuentra invisible en el formulario de Informacin es el siguiente:
Private Sub Label12_Click() 'Esta label corresponde al planeta 'Jpiter
Label2.Caption = "Jpiter"
Form2.Data1.Recordset.MoveFirst 'mueve el puntero al comienzo

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

13

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Form2.Data1.Recordset.Move 1 ' y luego un lugar al registro 'correspondiente en la Base de
datos Planetas
Form2.Picture1.Picture = Form2.ImageList1.ListImages(2).Picture
Form2.Show
End Sub
Para desplegar la imagen del planeta usamos un control ImageList que tiene cargadas, en
este caso solo dos imgenes: la Tierra y Jpiter.
La posicin del registro depende del orden que le dieron a los planetas en los registros de la
Base de datos.
Ustedes pueden agregar oros campos que desplieguen ms informacin y labels indicativas
de dichos campos.
Luego tenemos el Formulario evaluacin que a travs de la funcin InputBox le hace al
alumno dos preguntas: Una sobre el nombre del planeta y otra sobre la cantidad de satlites
que posee.

El formulario de evaluacin se asemeja al siguiente:


Y el cdigo es:
Private Sub Picture1_Click() 'imagen de Jpiter
planeta = InputBox("Qu planeta es este?", "Planetas")
If UCase(planeta) = "JPITER" Then
contar = contar + 1
Label2.Caption = contar
End If

14
satelite = InputBox("Cuntos satlites tiene?", "Planetas")
If satelite = "16" Then

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
contar = contar + 1
Label2.Caption = contar
Picture1.Enabled = False
End If
End Sub
Tambin incluimos una variable contar para que nos sume puntos con las respuestas
correctas, y las variables planeta y satlite que guardan las respuestas del InputBox. Esta
variables deben ser declaradas en la parte general del formulario.
Para cerrar tenemos el formulario crditos donde se indica el nombre del programador y el
botn Salir que cierra la aplicacin. La navegacin entre un formulario y otro se realiza
mediante los mtodos Show: Mostrar y Hide: Ocultar. Primero se muestra el formulario
vinculado y luego se oculta el que est activo. Ejemplo:
Private Sub Label1_Click()
Form3.Show
Form5.Hide
End Sub
Ustedes pueden vincular distintos formularios con distintos ejercicios, imgenes,
animaciones o videos o simplemente informacin escrita.

Combinando sonidos.

El siguiente ejercicio muestra como usar el control multimedia para desplegar sonidos de
tipo Midi o Wave e incluso poder superponer un sonido a otro:
Cuando se abre el formulario se ejecuta el archivo Midi y si nosotros hacemos Clic sobre el
botn Wave escuchamos los gritos de Tarzan por encima de la msica de fondo que se
sigue ejecutando. Esto nos resulta til para ciertas aplicaciones donde queremos dejar una
msica de fondo, o entretenimientos que combinan sonidos.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

15

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Private Sub Command2_Click() 'Botn wave
MMControl2.Command = "Prev"
MMControl2.DeviceType = "WaveAudio" 'establece el tipo de 'sonido
MMControl2.filename = App.Path & "\Tarzan.wav"' muestra el 'camino
MMControl2.Command = "Open" 'lo abre
MMControl2.Command = "Play" ' lo ejecuta
End Sub
Private Sub Command3_Click() ' Botn Midi
MMControl1.Command = "Prev"
MMControl1.DeviceType = "Sequencer"' tipo de sonido
MMControl1.filename = App.Path & "\Thefinal.mid" 'camino
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 cdigo a cada control 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 ejecutamos. 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.

Vnculos.
Este ejercicio lo hemos armado a pedido de un visitante colombiano, Luis, docente en
Informtica. Y nos permite vincular una palabra con una imagen especfica dentro del
contenido desplegado en una Label.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

16

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

Usamos como truco una label transparente superpuesta sobre la palabra que recibe el
evento click y que se vincula a la imagen. El programa en ejecucin es similar a esta
imagen:
Sobre la palabra comida y animal tenemos superpuesta una label con la letra en azul para
que muestre la posible interactividad, tambin cambiamos el puntero del mouse a una
manito cuando pasa por sobre las palabras. Y al hacer click cambia el contenido de la Image
en su propiedad picture. El cdigo del evento click de la primer label es:
Private Sub Label2_Click()
Image1.Picture = Picture2.Picture
Label4.Caption = "Una rica hamburguesa"
End Sub

Contrasea. Varios visitantes nos han pedido algn ejercicio que use una contrasea
para entrar a un programa. Aqu va un ejemplo. Vamos a usar la funcin InputBox que al
abrir una ventana con una caja de texto nos permite ingresar la contrasea.

Si no queremos usar la funcin podemos reemplazarla por el uso de un pequeo formulario


diseado a nuestro gusto con una caja de texto. El programa se ve as:
Y el cdigo del evento click del Botn Acceso al Sistema es el siguiente:
Dim nombreusuario As String

17
Dim contrasea As String
nombreusuario = InputBox("Introduzca su Nombre")

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
contrasea = InputBox("Introduzca CONTRASEA")
If UCase(nombreusuario) = "LAURA" And LCase(contrasea) = "secreto" Then
MsgBox "BIENVENIDA LAURA! Preparada para trabajar con tu PC?"
Image1.Visible = True
ElseIf UCase(nombreusuario) = "MIRTA" And LCase(contrasea) = "duende" Then
MsgBox "BIENVENIDA MIRTA AL SISTEMA! A trabajar no 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 caractersticas de windows. Para poder activarlo debemos estar en la ventana
de formulario u objeto, no en la de cdigo. Mediante botones de opcin vamos a hacer
visibles o invisibles los mens que hemos diseado, en este caso el tema ser platos de
comida y los mens sern sobre: Platos fros, calientes y postres. El programa ejecutado se
v as:

18

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

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 caption del men que ser el ttulo que
aparezca en el men y el name del men, el caption puede estar vaco pero el name no, Y
vamos anidando los submens 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
sangra que indica los subtemas del men. Cada integrante del men responde a un solo
evento que es el Click. Para probarlo podemos agregar el siguiente cdigo en el evento click
de cada men:
MnuFiambres_Click()
MsgBox "haz hecho click en la opcin bandeja de Fiambres"
End Sub.
Esto no est includo en el ejercicio, pero puede agregarle cualqier evento para testear el
funcionamiento. En relacin al cdigo que hace visible u oculta un tipo de men ,
agregamos un botn que aplica o ejecuta la opcin de opcin seleccionada con el siguiente
cdigo en el evento click del botn 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 = False
Else
mnuEntradas.Visible = False
mnuCalientes.Visible = False
mnuPostres.Visible = True

19

End If
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
este cdigo relaciona mediante un condicional el men que debe mostrarse y oculta los
restantes. En el procedimiento Load del formulario incluimos el siguiente cdigo, que oculta
los mens:
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 arranque al trabajo y preguntarle a nuestros


colegas, o compaeros si Est conforme con el sueldo que gana. Como damos por
supuesto que la mayora va a contestarnos que No, hicimos un pequeo chiste , ya que al
querer hacer Click en el Botn de No, este se nos escapar.
El cdigo es el siguiente:
Private Sub Command1_Click()
End
End Sub
Private Sub Command2_Click()
MsgBox "Sufre el mismo mal que millones de Argentinos!!"
End Sub
Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As
Single)
Command2.Move CInt(Rnd * (Width - Command2.Width)), CInt(Rnd * (Height Command2.Height))

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

20

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
End Sub
Con el Botn Si: salimos del programa y al querer hacer click en el botn: No, se mueve
aleatoriamente a una nueva posicin entre las medidas de ancho y alto del formulario.

Temperaturas.

En este ejercicio, simplemente entramos en tiempo de ejecucin una temperatura para cada
da de la semana y luego haciendo click en los botones: Alta, Media y Baja , devuelve los
valores en otras cajas de texto. El cdigo es el siguiente:
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 ms 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

21

End If
Next dia

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Text2.Text = alta
End Sub
Private Sub Command2_Click() 'calcular la ms 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 contenidos 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

22
Text1(dia).Text = ""
Next dia

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Text1(0).SetFocus
End Sub
Private Sub Command5_Click()
End
End Sub
Usando estructuras de repeticin For Next, calculamos los valores de alta y baja, luego para
la media sacamos por divisin el promedio.

Texto y RTF.
En este Ejercicio vamos a ver como hacemos para directamente desplegar un texto ya
copiado y grabado en un archivo con extensin TXT, que podemos tipear en cualquier editor
como el NotePad, por ejemplo y otro texto con formato 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 distintos tipos de letras, colores y
tamaos o sea ms variantes en su formato. Y el control que vamos a usar para desplegar
este texto con formato RTF es el RichTextBox 8es un control no estndar, por lo tanto
debemos traerlo de Componentes), para el texto comn 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 Text1 y un RichTextBox1, y dos botones
en cuyos eventos Click se desplegarn por cdigo los archivos mencionados en los
controles de texto. Primero debemos crear un archivo en el NotePad o en el Word y grabarlo
como TXT y otro con variacines en el tipo, color y tamao 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 cdigo de cada botn es el siguiente:

23
Option Explicit 'Esta expresin nos fuerza a declarar las variables.
Private Sub Command1_Click() 'Este boton es el que carga el 'archivo TXT

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Dim pepe As String 'Declaramos una variable para identificar el 'archivo
Dim renglon As String 'Esta variable guardar el tamao de 'cada rengln del archivo
renglon = Chr(13) & Chr(10) ' corta a otra lnea
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 'aplicacin. App.path significa en la ruta actual de la'aplicacin.
'Sino hay que indicar cual es el Path.
While Not EOF(1) ' esto realiza un bucle o sea repite la accin 'hasta que se llegue al final del
archivo 1 (End of File)
Line Input #1, pepe$ ' le da entrada a la linea 1 del archivo Text1.Text = Text1.Text & pepe &
renglon 'concatena con & el 'texto del archivo y el tamao del regln.
Wend 'repite las ordenes en tanto la condicin es verdadera, en 'este caso hasta tanto no
termine el texto del archivo.
Close #1 ' cierra el archivo al terminar de cargarlo.
End Sub
Private Sub Command2_Click()
RichTextBox1.LoadFile (App.Path & "\rtf.rtf") 'como podemos 'ver con el Control
RichTextBox es ms 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 aplicacin se parece a la siguiente:
Option Explicit

24

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


End

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
End Sub
Private Sub Command2_Click() 'este boton corrige si estan bien 'colocadas las imagenes.
Debe escribirse todo el cdigo 'seguido o cortarlo usando el under _
If Picture1.Picture = Image1(2).Picture And Picture2.Picture = Image1(1).Picture And
Picture3.Picture = Image1(5).Picture And Picture4.Picture = 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 oculta que 'muestra un gato completo
Else 'sino es correcto vaca las imagenes para reiniciar 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 PictureClip.
Image1(0).Picture = PictureClip1.GraphicCell(3) Image1(1).Picture =
PictureClip1.GraphicCell(1) Image1(2).Picture = PictureClip1.GraphicCell(0)
Image1(3).Picture = PictureClip1.GraphicCell(5) Image1(4).Picture =
PictureClip1.GraphicCell(4) Image1(5).Picture = PictureClip1.GraphicCell(2)
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

25

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
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 Control, 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 horizontales para modificar el valor de la
propiedad QBColor que muestra 16 colores, con valores de 0 a 15, estos valores estarn
asociados a la ubicacin de la pestaa del Scroll y se mostrarn en dos cajas de texto.

26

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

De acuerdo a su valor este determinar el color del fondo del formulario, y del tipo de un
terce control Text. La aplicacin se as:
Aqu tambin debemos prestar atencin a la propiedad Value, Y a los procedimientos
Change y Scroll, que testean cuando se modifica el valor de la barra horizontal. Tambin
debemos determinar los valores de las propiedades Min y Max en este caso, a 0 la primera y
15 la segunda y dejamos el LargeChange o sea el largo del cambio, a 1. El cdigo 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)

27

End Sub
Private Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
HScroll2_Scroll()
Text2.Text = HScroll2.Value
Text3.ForeColor = QBColor(HScroll2.Value)
End Sub

Barra de Porcentaje.

Este ejercicio nos permite hacer una Barra de progreso al estilo windows, donde nos
muestra el porcentaje cubierto.El formulario tiene el siguiente aspecto:
Los controles que usamos son un Botn que activa el proceso y una picture que va
cambiando su color a medida que el porcentaje aumenta.El cdigo 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 procedimiento '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

28

pb.ScaleWidth = 100
pb.DrawMode = 10

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
num$ = Format(percent, "##") + "%" 'calcula el porcentaje
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 'dibuja el 'rectangulo
pb.Refresh 'actualiza la picture
End Sub
Private Sub pausa() 'procedimiento que detiene la aplicacin 'un segundo
Dim controlar
Dim comenzar
comenzar = Timer
Do Until controlar >= comenzar + 0.2
controlar = Timer
DoEvents
Loop
End Sub

Slider

29

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Este es un control slider comn donde codificamos los procedimientos Click y Change.
Usamos la funcin Format para darle forma al valor en centmetros. El cdigo es el
siguiente:
Option Explicit
Private Sub Slider1_Change()
Label1.Caption = "Medida en Centmetros = " & Format(Slider1.Value, "#.00")
End Sub
Private Sub Slider1_Scroll()
Label1.Caption = "Medida en Centmetros = " & Format(Slider1.Value, "#.00")
End Sub

Media Player MP3

En este ejercicio vamos a ejecutar archivos MP3 usando el control Media Player. Que
debemos traer de componentes, y por supuesto tenerlo 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 FileListBox, dos botones y dos labels con un
timer que daran cuenta del tiempo total y parcial del archivo. El cdigo 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 el archivo MP3

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

30

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
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 OldState As Long, ByVal NewState As


Long)'mide el tiempo total de duracin 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 la 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(Min, "0#") & ":" & Format(Sec, "0#")
Else
Label8.Caption = "Tiempo transcurrido: 00:00"
End If
End Sub
Para que muestre solo los archivos MP3 en la propiedad Pattern del FileListBox: ingresamos
"*.MP3"

31

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

Clave de Seguridad

Hay muchas maneras de incluir en un ejercicio cierto control de seguridad a travs de una
clave, o password, en esta aplicacin se hace utilizando la propiedad tag del control Text,
donde se ingresa. El cdigo 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", vbCritical, "Acceso Negado"
txtPassword.SetFocus
End
Else
MsgBox "Presione OK e intente otra vez", vbInformation, "Clave Incorrecta"
txtPassword.SelStart = 0
txtPassword.SelLength = Len(txtPassword)
txtPassword.SetFocus
End If
End If
End Sub
Private Sub cmdSalir_Click()
End
End Sub

32

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

Servicio

Este ejercicio utiliza Botones de Opcin y fue realizado a partir del pedido de un alumno por
mail. Tambin integra: labels, caja de textos, botones y calcula el total del valor del pedido
de acuerdo a la opcin seleccionada y la cantidad. Su cdigo es el siguiente: 'Declaracin
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
'Declaracin 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) + (CantidadHotDog * HotDog) + _
(CantidadSandwich * Sandwich) + (CantidadGaseosa * Gaseosa) + _
(CantidadRefresco * Refresco) + (CantidadPapasFritas * PapasFritas)
lblTotal.Caption = "$ " & Total
End Sub
Private Sub cmdSalir_Click()
End
End Sub

33

Private Sub Form_Load()


'Inicializar las variables
'Precio de los productos
Hamburguesa = 20.5

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
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 entrar 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

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

34

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

'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

35

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
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 numrico.
If txtHamburguesa.Text > 0 Then 'Si es positivo.
CantidadHamburguesa = txtHamburguesa.Text 'Entonces asigna el valor a la variable.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

36

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Else
MsgBox "Entre un valor positivo", vbCritical
txtHamburguesa.SetFocus
End If
Else
MsgBox "Entre un valor numrico", 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 numrico.
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 numrico", 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 numrico.
If txtHotDog.Text > 0 Then 'Si es positivo.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

37

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
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 numrico", 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 numrico.
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 numrico", 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 numrico.
If txtRefresco.Text > 0 Then 'Si es positivo.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

38

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
CantidadRefresco = txtRefresco.Text 'Entonces asigna el valor a la variable.
Else
MsgBox "Entre un valor positivo", vbCritical
txtRefresco.SetFocus
End If
Else
MsgBox "Entre un valor numrico", 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 numrico.
If txtSandwich.Text > 0 Then 'Si es positivo.
CantidadSandwich = txtSandwich.Text 'Entonces asigna el valor a la variable.
Else
MsgBox "Entre un valor positivo", vbCritical
txtSandwich.SetFocus
End If
Else
MsgBox "Entre un valor numrico", vbCritical
txtSandwich.SetFocus
End If
End Sub

Funcin Mod

39

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

Este ejercicio usa las funcines Mod y Format que nos permiten dar formato al valor del
tiempo que muestra el cronmetro. Usamos una Label y tres botones para las acciones. El
cdigo 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
versin 6 y que podemos traer de Componentes, seleccionando Microsoft Windows
Common Controls - 2 6.0, y como vemos nos despliegan hora y fecha y un calendario que
podemos recorrer.

40

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

Validar un texto.

El control caja de Texto tiene ahora en esta versin 6 un nuevo procedimiento que nos
permite controlar la informacin que se ingresa, y una vez validada recin pasar al campo de
texto siguiente.
Prueben tratar de pasar a la caja de texto siguiente sin ingresar ningn dato con la tecla Tab
y vern que no lo permite.
El cdigo 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 para pasar al tercero.",
vbInformation, "Instrucciones"
Cancel = True
End If

41

End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

Coolbar.

Este control pertenece al grupo Microsoft Windows Common Controls 3 6.0, y permite
desplegar una barra que contenga otros controles.
En este caso al hacer Click en el icono del Reloj despliega la hora. Estos controles que se
insertan dentro de la Coolbar pueden mantenerse flotantes o fijos.
El cdigo 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 travs del Mtodo AddItem en tiempo
de ejecucin.

42

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3

Barra de progreso.

Este ejercicio nos muestra el uso de una barra de progreso que podemos usar mientras se
realiza la carga de un archivo o en otro momento de espera hasta que se complete una
tarea.
El cdigo es el siguiente:
Option Explicit
Private Sub cmdSalir_Click()
End
End Sub
Private Sub Form_Load() 'Inicializamos el timer para que este apagado Timer1.Enabled =
False
End Sub
Private Sub cmdComenzar_Click() 'Inicializamos la barra de progreso, y comenzamos el
Timer
Progreso.Value = 0
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer() 'Si el progreso todava no termina, seguir aumentando Value
hasta 100
With Progreso
If .Value < .Max Then
.Value = .Value + 1

43

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

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
End If
End With
End Sub
Aqu usamos with para referirnos al control y no tener que repetir su nombre. Esto es muy
til cuando debemos modificar los valores de varias propiedades por cdigo de un mismo
control.

Barra de estado.

Un ejemplo de como modificar en tiempo de ejecucin 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
botn lo asignamos al panel de la barra correspondiente.
El cdigo 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 derecho sobre el control y alli podemos
configurar los distintos paneles.

Pestaas.

44

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Es comn usar el control TabStrip para mostrar aplicaciones con pestaas, sin embargo es
mucho ms potente el control Tabbed Dialog ya que cada panel puede contener otros
controles, esto facilita el diseo y su codificacin.
En el formulario dibujamos un control SStab traido de componentes y luego en su primer
pestaa dibujamos varias labels que nos vincularan con las otras pestaas, donde se
mostrar en una texto y en la otrs una imagen. El cdigo 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 formato 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 formato richtextbox, sobre el Tema 2."
SSTab1.Tab = 1
End Sub
Private Sub Label6_Click()
Picture1.Picture = Picture3

45

SSTab1.Tab = 2
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Como vemos lo importante es la propiedad Tab y la asignacin 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 formulario usamos cuatro botones, dos cajas de
texto, y un ListBox, un frame y tres Labels. El cdigo es el siguiente: Option Explicit
Dim Nota() As Single
Dim N As Integer 'Nmero 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 Lista la Nota
Text1.Text = "" 'Limpia el texto.
'Eliminar la nota de indice (List1.ListIndex+1) y correr las notas
For i = NotaInd To N - 1
Nota(i) = Nota(i + 1)
Next i
N = N - 1 'actualizando nmero de notas por ser borrada una.
If N > 1 Then ReDim Preserve Nota(1 To N) 'Reajustando la dimensin del arreglo notas
Text2.Text = ""
End If
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

46

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Private Sub cmdEntrarNota_Click()
If Text1.Text = "" Then 'Si no se han introducido nota.
MsgBox "No se ha introducido una nota"
Text1.SetFocus
Exit Sub
End If
N = N + 1 'Inicializa el conteo de las notas entradas.
ReDim Preserve Nota(1 To N) 'Redimesiona el arreglo.
Nota(N) = Text1.Text 'Asigna el valor al arreglo.
List1.AddItem (Nota(N)) 'Aade 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 nmero 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

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

47

Tutoriales Programacin Kazak_anjes


Rif: V-12789240-3
Private Sub Text1_LostFocus()
If IsNumeric(Text1.Text) Then 'Chequea si el valor es numrico.
If Text1.Text <= 0 Then 'Chequea si es mayor que cero.
MsgBox "Valor incorrecto,debe ser mayor que cero", vbCritical
Text1.SetFocus 'Situa el foco en el TexBox Text1.
End If
Else 'Si no es numrico el dato.
MsgBox "El valor debe ser mayor que cero", vbCritical
Text1.SetFocus 'Situa el foco en el TexBox Text1.
End If
End Sub

48

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru

También podría gustarte