Sei sulla pagina 1di 48

Tutoriales Programación 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 Programación 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 código sería muy complejo
pero usando el control Label en su modo transparente 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 sobre el monitor, todavía opaca como viene
por defecto, luego sobre el gabinete está transparente pero con el Caption , también 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 tamaño deseado. Y cuatro Labels, tres transparentes para subdividir la
Image y una opaca para mostrar la parte seleccionada, 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 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 Programación 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. También a partir de aquí podríamos 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 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 que se cargaran con imágenes 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 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 condicional 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() 3

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 si se escribió una de las palabras

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

correctas. Ciudado con los 'nombres de los Controles 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\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 Programación Kazak_anjes
Rif: V-12789240-3

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 mediante 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 un 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 sumando de nuestra cuenta. Para que
realmente sea aleatorio debemos incorporar la sentencia Randomize en el Procedimiento
Load del Formulario.

Otra función que utilizamos es Val que transforma una 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 pausa 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 llamado Pausa. Incluido dentro de los
procedimientos del objeto General. Luego lo llamaremos desde otra parte del programa con
la sentencia Call. 5

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

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

Command2.Enabled = False

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

End Sub
6
Private Sub Command2_Click()

Command2.Enabled = False

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 botón 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 Programación Kazak_anjes
Rif: V-12789240-3

Imprimiendo con Printer.

En este formulario desplegamos datos en cajas de texto 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 controlar 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); Text1.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
8
Printer.Print Tab(15); Label2.Caption; Tab(30); Text2.Text

Printer.Print

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 impresión

End Sub

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

Internet

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

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 página 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 inútiles 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 dirección 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 código 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 Programación 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 búsqueda

End Select
11
End Sub

Private Sub WebBrowser1_DownloadBegin()

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

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 tiempo de ejecución. 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 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 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) 12


draw = False 'la variable draw a falsa detiene el dibujo

End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

Relacionar varios formularios. A pedido de varios seguidores de nuestra página


vamos a integrar en un solo proyecto varios formularios. El proyecto se compone de 5
formularios: Presentación, Planetas, Información, Evaluació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 botones o labels que nos vinculan a los otros
formularios:

La label Planetas nos muestra el formulario del ejercicio Nº7 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 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 convocada 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


13
Label2.Caption = "Júpiter"

Form2.Data1.Recordset.MoveFirst 'mueve el puntero al comienzo

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 imágenes: la Tierra y Júpiter.

La posición 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 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 planeta 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?", "Planetas")

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

contar = contar + 1

Label2.Caption = contar

End If
14
satelite = InputBox("¡Cuántos satélites tiene?", "Planetas")

If satelite = "16" Then

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

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 guardan 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. Ejemplo:

Private Sub Label1_Click()

Form3.Show

Form5.Hide

End Sub

Ustedes pueden vincular distintos formularios con distintos ejercicios, imágenes,


animaciones o videos o simplemente información 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 15
botón Wave escuchamos los gritos de Tarzan por encima de la música de fondo que se
sigue ejecutando. Esto nos resulta útil para ciertas aplicaciones donde queremos dejar una
música de fondo, o entretenimientos que combinan sonidos.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

Private Sub Command2_Click() 'Botón 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() ' Botón 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 código 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.

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

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 ejecución 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, también 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 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 que use una contraseña
para entrar a un programa. Aquí va un ejemplo. Vamos 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 Sistema es el siguiente:

Dim nombreusuario As String


17
Dim contraseña As String

nombreusuario = InputBox("Introduzca su Nombre")

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

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

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

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

Image1.Visible = True

ElseIf UCase(nombreusuario) = "MIRTA" And LCase(contraseña) = "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 características de windows. Para poder activarlo debemos estar en la ventana
de formulario u objeto, no en la de código. Mediante 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, calientes y postres. El programa ejecutado se
vé así:

18

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 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 integrante del menú responde a un solo
evento que es el Click. Para probarlo podemos agregar el siguiente código en el evento click
de cada menú:

MnuFiambres_Click()

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

End Sub.

Esto no está incluído en el ejercicio, pero puede agregarle cualqier evento para testear el
funcionamiento. En relación al código que hace visible u oculta un tipo de menú ,
agregamos un botón que aplica o ejecuta la opción de 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 = 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 Programación Kazak_anjes
Rif: V-12789240-3

este código relaciona mediante un condicional el menú 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 arranque al trabajo y preguntarle a nuestros


colegas, o compañeros si Está conforme con el sueldo que gana. Como damos por
supuesto que la mayoría va a contestarnos que No, hicimos un pequeño chiste , ya que al
querer hacer Click en el Botón de No, este se nos escapará.

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 Argentinos!!"

End Sub

Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As 20


Single)

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


Command2.Height))

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

End Sub

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

Temperaturas.

En este ejercicio, simplemente entramos en tiempo de ejecución una temperatura para cada
día de la semana y luego haciendo click en los botones: Alta, Media y Baja , devuelve los
valores en otras cajas de texto. El código 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 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 21

Next dia

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

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 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 Programación Kazak_anjes
Rif: V-12789240-3

Text1(0).SetFocus

End Sub

Private Sub Command5_Click()

End

End Sub

Usando estructuras de repetición For Next, calculamos 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 directamente 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 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
tamaños o sea más 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 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 Text1 y un RichTextBox1, y dos botones
en cuyos eventos Click se desplegarán por código 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 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ódigo de cada botón es el siguiente:
23
Option Explicit 'Esta expresión 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 Programación 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 tamañ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 significa 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 repite 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 del 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 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 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 24

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

End

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 código '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 vacía 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 = 25
PictureClip1.GraphicCell(4) Image1(5).Picture = PictureClip1.GraphicCell(2)

End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 estarán
asociados a la ubicación de la pestaña del Scroll y se mostrarán en dos cajas de texto.
26

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 aplicación se así:

Aquí también debemos prestar atención a la propiedad 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 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 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 27

Private Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 Botón que activa el proceso y una picture que va
cambiando su color a medida que el porcentaje aumenta.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 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 Programación 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 aplicación '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 Programación Kazak_anjes
Rif: V-12789240-3

Este es un control slider común donde codificamos los 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 = " & Format(Slider1.Value, "#.00")

End Sub

Private Sub Slider1_Scroll()

Label1.Caption = "Medida en Centímetros = " & 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 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 30
End Sub

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

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 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 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 Programación Kazak_anjes
Rif: V-12789240-3

Clave de Seguridad

Hay muchas maneras de incluir en un ejercicio cierto control de seguridad a través de una
clave, o password, en esta aplicación se hace utilizando 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", 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 32
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

Servicio

Este ejercicio utiliza Botones de Opción y fue realizado a partir del pedido de un alumno por
mail. También integra: labels, caja de textos, botones 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) + (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 Programación 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
34
'Inicializar la caja de texto.
txtHamburguesa.Text = CantidadHamburguesa
txtGaseosa.Text = CantidadGaseosa
txtPapasFritas.Text = CantidadPapasFritas

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 = "" 35
End If
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 36
End If
If IsNumeric(txtHamburguesa.Text) Then 'Si es numérico.
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


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

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 37
Exit Sub
End If
If IsNumeric(txtHotDog.Text) Then 'Si es numérico.
If txtHotDog.Text > 0 Then 'Si es positivo.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 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érico.
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 38
Exit Sub
End If
If IsNumeric(txtRefresco.Text) Then 'Si es numérico.
If txtRefresco.Text > 0 Then 'Si es positivo.

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 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 asigna 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

39

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

Este ejercicio usa las funciónes Mod y Format que nos 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, 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 Programación Kazak_anjes
Rif: V-12789240-3

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 siguiente 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 para pasar al tercero.",


vbInformation, "Instrucciones"

Cancel = True

End If
41
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 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.

42

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 código 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 todavía no termina, seguir aumentando Value
hasta 100

With Progreso

If .Value < .Max Then

.Value = .Value + 1

Else 'Termino 43

MsgBox "Proceso Terminado", , "Barra de Progreso" 'Deshabilitamos el Timer


Timer1.Enabled = False

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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 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 correspondiente.

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 derecho sobre el control y alli podemos
configurar los distintos paneles.

Pestañas.

44

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

Es común usar el control TabStrip para mostrar aplicaciones con pestañas, sin embargo es
mucho más potente el control Tabbed Dialog ya que cada 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 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

SSTab1.Tab = 2 45

End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

Como vemos lo importante es la propiedad Tab y la asignació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 formulario usamos cuatro botones, dos cajas de
texto, y un ListBox, un frame y tres Labels. El código 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 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 número de notas por ser borrada una.

If N > 1 Then ReDim Preserve Nota(1 To N) 'Reajustando la dimensión del arreglo notas 46
Text2.Text = ""
End If
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación 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)) '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 47
Text1.SelLength = Len(Text1.Text)
End Sub

Ing. Sistemas Anjes Cordanov | kazak_anjes@mail.ru


Tutoriales Programación Kazak_anjes
Rif: V-12789240-3

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 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 numérico 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

Potrebbero piacerti anche