Académique Documents
Professionnel Documents
Culture Documents
Para aquellos que no tienen experiencia en Programación, les sugerimos que se bajen el
archivo Introducción donde encontrarán las explicaciones básicas, para los que tienen
alguna experiencia comenzamos con algunos ejercicios sencillos, luego iremos
agregando otros de mayor complejidad.
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.
End Sub
Label1.caption = "Monitor"
End Sub
End Sub
Label1.caption = "Teclado"
End Sub
Ejercicio Nº 2: Crucigrama.
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:
End
End Sub
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 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).
Else 'Sino
End Sub
Else 'Sino
End Sub
If Text7.Text = "R" And Text8.Text ="A" And Text9.Text ="T" And Text4.Text ="O" And
Text10.Text ="N" then
End Sub
Aquí también usamos el Método Move para desplazar la imagen del Oso.
Option Explicit
End Sub
A=A-1
Picture1.Picture = PictureClip1.GraphicCell(A)
End Sub
Comenzamos con una variable = 9 porque los frames del osito deben disminuir y no
aumentar sino dá la impresión de caminar al revés.
Una propiedad fundamental del PictureClip es la GraphicCell ya que ella automatiza la
división de la grilla(imagen total) en partes(frames).
En este caso en el Move usamos los dos argumentos el Left y el Top de la imagen ,
propiedades que indican la ubicación de ésta en relación al borde izquierdo (coordenada
x) y al borde superior (coordenada y). Lo que permitirá que el oso se mueva en diagonal.
Ejercicio Nº 4: Sumas.
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.
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.
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.
Option Explicit
Dim comenzar
Dim controlar
comenzar = Timer
controlar = Timer
Loop
End Sub
Text1.Text = ""
Label1.Caption = num1
Label2.Caption = num2
Text1.SetFocus ' ubica el foco del cursor en el control Text1
Command2.Enabled = False
End Sub
Command2.Enabled = False
resultado = Val(Text1.Text)
Image1.Picture = Picture1.Picture
Else
Image1.Picture = Picture2.Picture
End If
End Sub
Unload Me
End Sub
Randomize
Text1.Text = ""
Label2.Caption = num2
End Sub
End Sub
Ejercicio Nº 5: Torero.
Este ejercicio muestra una sucesión de Imágenes al estilo un show de diapositivas .Las
imágenes las cargamos en controles Image a la izquierda del formulario invisibles, para
luego convocarlas por código y desplegarlas en la Image central, ésta si con su
propiedad visible = True.
La Label = Reiniciar nos posibilita volver a comenzar sin salir de la aplicación, para esto
inicializa la variable A = 0 y pone el Timer nuevamente en funcionamiento.
Option explicit
Dim A as Integer
A=0
End Sub
A=A+1
If A = 3 then
Image13.Picture= Image1.Picture
ElseIf A = 4 then
Image13.Picture = Image5.Picture
End If
End Sub
Al pasar el puntero del mouse sobre el planeta este cambia por una manito lo que nos
indica que es posible una interacción. Y al clickear sobre el mismo despliega en la Label
inferior el nombre del planeta.
Vamos a centrarnos en las novedades que aporta este ejercicio en relación al Nº1.
Primero : podemos cambiar el puntero del mouse: Para esto en la propiedad
MousePointer y MouseIcon de cada Label transparente haremos cierta modificaciones.
Form1.PrintForm
End Sub
Ejercicio Nº 7: Cubos.
Este ejercicio y los tres siguientes usan en sus procedimientos el Drageo o Drag and
Drop , que significa arrastrar y soltar y nos va a permitir mover un objeto en tiempo de
ejecución de un lugar a otro del formulario. Este tipo de ejercicios es muy útil para los
docentes que trabajan con los más pequeños.
Usamos tres controles Picture cargando en cada uno de ellos un icono que les guste. Y
en la propiedad Dragmode de cada picture elegimos la opción Automatic , la numero 1.
Esto permitirá mover los controles. Pero para que realmente se desplacen debemos
agregar al procedimiento Form_DragDrop el siguiente código:
Source.Move x, y
End Sub
Dentro de los argumentos entre paréntesis vemos Source que quiere decir origen, o sea
el control de origen y esto es muy importante porque quiere decir que no hace falta que
especifiquemos que picture estamos moviendo o arrastrando y soltando , el
procedimiento lo registra de por sí, y lo que debemos actualizarle son las nuevas
coordenadas que leerá el procedimiento a través de x, y. Aquí usamos un método ya
conocido el Move. Al correr el programa podemos clickear sobre una de las figuras y
manteniendo el botón izquierdo del mouse apretado arrastrarla a la nueva posición que
deseamos y luego soltarla.
Este ejercicio de drageo utiliza también imágenes que pueden desplegarse en controles
picture o image . En este caso son Images con su propiedad stretch a true lo que permite
usar iconos y poder agrandarlos.
La Image1 la carita fea tiene la propiedad DragMode en 1 : Automática. Y en la propiedad
DragIcon tiene cargado el mismo icono para que cuando la arrastremos no se vea una
ventana vacía. Pero ahora el procedimiento usado es el DragOver que detecta cuando
pasamos por encima de un control determinado. En este caso es el cesto o la Image2 . Y
el objetivo es que al arrastrar la carita fea sobre el cesto esta desaparezca, simulando
que la estamos tirando dentro del cesto. Entonces el código indicado será:
Image1.visible = False
End Sub
Esto hace que al pasar la Image1 sobre la Image2 la primera se vuelva invisible lo que
simula que la hemos tirado dentro del cesto. En tiempo de ejecución se verá de la
siguiente manera :
En este ejercicio arrastramos las imágenes del teléfono, reloj y filmadora, como si
hiciéramos una compra virtual sobre la calculadora y el valor del total, se va
incrementando haciendo la cuenta de lo que gastamos.
Los controles son cuatro Image , el botón que borra el total a pagar. Una caja de texto
que muestra el total y las demás son Labels indicativas.
End Sub
End if
Text1.text = total
End Sub
Acá vemos la importancia del argumento Source como control de origen, porque nos
permite testear en el condicional a que imagen nos estamos refiriendo.
Este ejercicio usa el Drageo para que los alumnos ordenen los números de Menor a
Mayor.
Tenemos 3 Labels que muestran los números a ordenar y otras 3 Labels que recibirán
los números drageados de las Labels anteriores. Y dos Botones El de Números que a
través del procedimiento Azar elige tres números aleatorios para cada label con la
función Randomize y el Botón Corregir que chequea que estén ordenados realmente de
menor a mayor. La Label7 muestra un "Bien" o un "Mal", de acuerdo a si el orden es
correcto o no. El código es el siguiente:
Label5.caption = ""
Label1.visible = True
Label2.visible = True
End Sub
If N1 <> N2 And N2 <> N3 And N1 <> N3 then 'controla que no haya 2 números iguales.
Usamos los operadores <> y And.
Label2.caption = N2
Label3.caption = N3
Else
Exit Sub ' Si uno de los números se repite sale de la Rutina y vuelve a llamarse al
procedimiento Azar desde el Botón 1.
End If
End Sub
Label7.Caption = "Bien"
Else
Label7.caption= "Mal"
End If
End Sub
Label4.Caption = Source ' La label que recibe el control de Origen toma el caption de
este Origen.
End Sub
Una manera sencilla de desplegar una animación es con el control Animation, este
control no es standard por lo tanto lo debemos traer de Componentes del grupo
Microsoft Windows Common Controls-2 5.0 o 5.0
Y por código le vamos a asociar un archivo Avi sin sonido porque sino no lo carga , en
este caso llamado FileCopy que se encuentra en el mismo directorio del proyecto por
eso usamos App.Path que quiere decir el camino o ruta de la aplicación.
Unload Me
End Sub
Animation1.Stop
Animation1.Close
Animation1.Play
End Sub
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
Printer.FontSize = 12
'Tamaño de la letra
Printer.Print
Printer.Print
'Aquí damos la orden de impresión del caption de la label1 a 15 espacios 'del margen
izquerdo y luego a 30 espacios del margen izquierdo el 'contenido del texto.
Printer.Print
Printer.Print
Printer.Print
Printer.Print
Printer.Print
Printer.Print
Printer.Print
Printer.Print
Printer.Print
Printer.Print
Printer.Print
Printer.EndDoc
End Sub
Este ejercicio nos permite de una manera simple poder distribuir la impresión de forma
personalizada.
Ejercicio Nº 13: Una Barra de Herramientas.
Este ejercicio nos permite mostrar una barra de herramientas al clásico estilo Windows.
Usando el control Toolbar y el control ImageList para desplegar las imágenes en los
botones de la barra de herramientas, también nos permite crear una barra de status con
tres paneles, compuesta por tres paneles. Estos controles forman parte de Microsoft
Windows Common Controls 5.0 que debemos agregar de Componentes en la versión
profesional de Visual Basic 5.
Luego de crear sobre el Formulario la barra de status, con el botón derecho del mouse
seleccionamos propiedades y allí en la pestaña paneles vamos eligiendo cuantos
queremos y cual será su mensaje.
Toolbar1.ImageList = ImageList1
End Sub
Case Is = "camara"
Case Is = "dibujo"
Case Is = "nuevo"
Case Is = "abrir"
Case Is = "imprimir"
End Select
End Sub
Uno de los temas más queridos relacionados con la programación para nosotros es el
tema de las Animaciones. Poco a Poco vamos a ir desarrollando ejercicios que vayan
perfeccionando y mostrando distintas formas de crear animaciones en Visual Basic. Las
que vimos hasta ahora usando el método Move , el control PictureClip, y las secuencias
de images o pictures activadas con un Timer, son las formas más primitivas y sencillas
de animación.
Hoy sumamos el Método PaintPicture que dibuja una imagen sobre un fondo , pero al
combinar mediante las constantes SRCAND y SRCINVERT dos versiones de la imagen:
la máscara y el sprite o animación en sí permite trasparentar el fondo.
En este caso vamos a desplegar la animación sobre un control Picture con una imagen
de fondo, pero podemos hacerlo sobre el formulario y cargar en este una imagen. Lo que
debemos tener en cuenta es que el objeto sobre el que se despliega la animación debe
estar la propiedad ScaleMode en Pixel y no en Twips como lo es por defecto.
Las constantes para desplegar métodos gráficos como SRCAnd y SRCINvert deben
declararse en la parte General del Formulario. Pueden copiarse a mano o a través del
Visor de Apis.
Usamos dos controles PictureClip uno para la máscar y otro para el Sprite (Ver Controles
favoritos: PictureClip). Un Timer para desplegar la secuencia de los frames que
componen la grilla en este caso la imagen completa del perro se compone de 4
columnas y 1 fila. Y un CommandButton que regula el inicio y fin de la animación.
Timer1.Enabled = True
Picture1.Refresh
'esta propiedad Refresh es muy importante ya que refresca el fondo para 'cambiar de
cuadro en la secuencia.
Command1.Caption = "Detener"
Else
Timer1.Enabled = False
Command1.Caption = "Animación"
End If
End Sub
End
End Sub
PictureClip1.Cols = 4
PictureClip1.Rows = 1
PictureClip2.Cols = 4
PictureClip2.Rows = 1
'Es mejor determinar la composición de la grilla por código ya que a veces 'al salir del
programa el control Pictureclip no retiene los valores de la 'ventana de propiedades y
vuele a su 1 a 1 por defecto.
End Sub
Picture1.Refresh
imagenactual = imagenactual + 1
xactual = xactual + 20
End Sub
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.
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.
Ejercicio Nº 16: 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:
WebBrowser1.Navigate Text1.Text
WebBrowser1.Visible = True
End If
End If
End Sub
Command1_Click
End If
End Sub
WebBrowser1.GoBack 'Retrocede
Case "forward"
WebBrowser1.GoForward 'Adelanta
Case "home"
Text1.Text = "http://www.geocities.com/SiliconValley/Garage/6472"
Command1_Click
Case "refresh"
Case "stop"
End Select
End Sub
End Sub
StatusBar1.Panels(1).Text = "Listo"
End Sub
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.
End Sub
If draw Then Line -(X, Y) ' si la variable draw esta a verdadera 'dibuja cada uno de los
puntos.
End Sub
End Sub
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:
Label2.Caption = "Júpiter"
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.
Y el código es:
contar = contar + 1
Label2.Caption = contar
End If
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:
Form3.Show
Form5.Hide
End Sub
Ustedes pueden vincular distintos formularios con distintos ejercicios, imágenes,
animaciones o videos o simplemente información escrita.
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 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.
MMControl2.Command = "Prev"
End Sub
MMControl1.Command = "Prev"
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.
End Sub
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:
Image1.Picture = Picture2.Picture
End Sub
Como vemos el código es muy sencillo. El ejercicio completo lo pueden bajar de Aquí.
Ejercicio Nº 21: 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.
Image1.Visible = True
Image1.Visible = True
Else
End If
Además de darnos el acceso con un saludo despliega una imagen en un control Image,
en caso de no ser la contraseña o el nombre del usuario el indicado nos niega el acceso.
Pueden bajar el ejercicio de Aquí.
El código ejemplo para una de las image que recibe la imagen del cráneo arrastrado es:
Image1.Picture = Image9.Picture
Image9.Visible = False
Label1.Caption = "¡Correcto!"
Label2.Caption = "Craneo"
Beep
Else
Label1.Caption = "¡Incorrecto!"
End If
Call fin
End Sub
El procedimiento fin es el que testea si esta es la última pieza colocada y su código es:
Beep
Label2.Caption = ""
Label1.Caption = "¡Ganaste!"
End If
End Sub
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í:
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:
mnuEntradas.Visible = True
mnuCalientes.Visible = False
mnuPostres.Visible = False
mnuEntradas.Visible = False
Else
mnuEntradas.Visible = False
mnuCalientes.Visible = False
mnuPostres.Visible = True
End If
End Sub
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:
mnuEntradas.Visible = False
mnuCalientes.Visible = False
mnuPostres.Visible = False
End Sub
El mensaje puede ser: lo siento ese color no pertenece al arco iris o, sí este color
pertenece al arco iris. En tiempo de ejecución el programa se ve así:
Beep
colorArco = LCase(color)
Case Else
Print "Lo siento, pero el color "; color; " no está en mí Arco Iris."
End Select
End Sub
El código es el siguiente:
MMControl1.DeviceType = "AVIVideo"
MMControl1.Command = "open"
MMControl1.hWndDisplay = Picture1.hWnd
MMControl1.Command = "play"
End Sub
Call video
End Sub
El código es el siguiente:
End
End Sub
End Sub
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.
Option Explicit
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
alta = Text1(dia).Text
End If
Next dia
Text2.Text = alta
End Sub
For dia = 1 To 6
baja = Text1(dia).Text
End If
Next dia
Text3.Text = baja
End Sub
Private Sub
total = 0
For dia = 0 To 6
Next dia
promedio = total / 7
End Sub
For dia = 0 To 6
Text1(dia).Text = ""
Next dia
Text1(0).SetFocus
End Sub
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.
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:
Dim renglon As String 'Esta variable guardará el tamaño de 'cada renglón del archivo
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.
End Sub
Option Explicit
End
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 _
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.
End Sub
Picture1.Picture = Source
End Sub
Picture2.Picture = Source
Picture3.Picture = Source
End Sub
Private Sub
Picture4.Picture = Source
End Sub
Picture5.Picture = Source
End Sub
Private Sub
Picture6.Picture = Source
End Sub
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í:
Option Explicit
HScroll1_Change()
Text1.Text = HScroll1.Value
Text3.BackColor = QBColor(HScroll1.Value)
End Sub
Private Sub
HScroll1_Scroll()
Text1.Text = HScroll1.Value
Text3.BackColor = QBColor(HScroll1.Value)
End Sub
Private Sub
HScroll2_Change()
Text2.Text = HScroll2.Value
Text3.ForeColor = QBColor(HScroll2.Value)
End Sub
Private Sub
HScroll2_Scroll()
Text2.Text = HScroll2.Value
Text3.ForeColor = QBColor(HScroll2.Value)
End Sub
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:
actualizaprogress Picture1, i
Call pausa 'procedimiento de espera
Next i
End Sub
pb.Cls
pb.ScaleWidth = 100
pb.DrawMode = 10
pb.FontSize = 18
pb.CurrentX = 50 - pb.TextWidth(num$) / 2
End Sub
Dim controlar
Dim comenzar
comenzar = Timer
controlar = Timer
DoEvents
Loop
End Sub
El control Tab o ficha con pestaña debemos traerlo de Componentes y se llama Microsoft
Tabbed Dialog Control 5.0. Este control nos permite ordenar la informacion de una tabla
de una base de datos en distintas fichas, a las que accedemos por la elección de una de
sus pestañas. El formulario se ve así:
Esta aplicación tiene además del Tab control un Data control que conecta con la base de
datos que elijamos, y dentro del control tab tenemos controles Text y Labels para
desplegar la información, como ya hemos hecho en otros ejercicios con Base de Datos.
No hay código escrito, ya que las conecciones a la tabla estan hechas directamente a
través de la ventana Propiedades. Tener en cuenta las propiedades: DataBasename, y los
controles Text que desplieguen los campos elejidos.
Ejercicio Nº 33: Control AniGif. Esta aplicación que hace muy poco, solo
muestra un gato moviendo los ojos y la cola, activa un gif animado usando un Control
llamado AniGif, que conseguí en Internet. Puede conseguirse una demo del control y en
caso de querer adoptarlo hay que comprarlo.
En este ejercicio vamos a usar un ActiveX que permite hacer efctos de transición entre
varias imagenes, es un shareware, bajado de Internet, muy fácil de usar. El form se ve
así:
El código es el siguiente:
Option Explicit
Do
DoEvents
TransFX1.Effect = i
TransFX1.Start
End Sub
Private Sub
Command2_Click()
End
End Sub
pc = 1
i=1
Set TransFX1.PicTarget = LoadPicture(App.Path & "\" &_ CStr(pc) & ".jpg")
End Sub
Las propiedades principales son: PicTarget que es la primera imagen que carga y
PicBuffer las siguientes, como minimo debemos tener 2 imagenes , pero podemos
cargar varias más. Y el método Start que lo inicia, podríamos usar un timer pero en este
caso es un bucle el que repite la operación pasando entre los 15 efectos posibles que
permite el control.
Por cualquier duda incluyo el archivo de Ayuda del creador del activeX. Los archivos con
el control pueden bajarse de Aquí.
Este ejercicio es un juego muy simple que al hacer click en los insectos, si estan
próximos a la rana, ésta simula comerlos y suma un puntaje.
Los insectos se mueven en forma aleatoria mediante un random y los ojos de la ranita
tienen una animación, donde se abren y cierran, además de los controles Images,
tenemos dos labels transparentes, una que muestra el puntaje y otra que resetea la
aplicación. Y el sonido está activado usando la API sndPlaySound de windows.
El código es el siguiente:
Option Explicit
Private a As Integer
Private b As Integer
Private tiempo As Integer
Dim comenzar
Dim controlar
comenzar = Timer
controlar = Timer
DoEvents
Loop
End Sub
Randomize b = 0
End Sub
b = b + 10
Image7.Visible = True
Image8.Visible = True
End If
Call pausa
Image7.Visible = False
Image8.Visible = False
Call ganar
Call perder
End Sub
Unload Me
Me.Show
End Sub
contar = contar + 1
If contar = 1 Then
Image1.Picture = Image3.Picture
Image2.Picture = Image3.Picture
Image1.Picture = Image4.Picture
Image2.Picture = Image4.Picture
Image1.Picture = Image3.Picture
Image2.Picture = Image3.Picture
Image1.Picture = Image5.Picture
Image2.Picture = Image5.Picture
contar = 0
End If
End Sub
Private Sub
Timer2_Timer()
For a = 0 To 9
Next a
End Sub
If b = 100 Then
Label1.Caption = "¡¡GANASTE!!"
End If
End Sub
If tiempo = 60 Then
Timer1.Enabled = False
Timer2.Enabled = False
Timer3.Enabled = False
Label1.Caption = "¡¡Perdiste!!"
End If
End Sub
Private Sub
Call perder
End Sub
Option Explicit
PictureClip1.Rows = 3
PictureClip1.Cols = 3
PictureClip2.Rows = 3
PictureClip2.Cols = 3
End Sub
Form1.Refresh
imagenactual = 3
imagenactual = 2
imagenactual1 = 0
imagenactual1 = 0
xactual = 10
If xactual < 0 Then
xactual = 10
xactual = 1000
xactual1 = 1000
imagenactual = imagenactual + 1
imagenactual1 = imagenactual1 + 1
End Sub
Option Explicit
Dim I As Integer
Dim a As Integer
Dim J As Integer
Dim s As Integer
Randomize
For I = 1 To 20 temparray(I) = I
Next I
Top = 20
For I = 1 To 20
numero(I) = temparray(idxtemp)
temparray(J) = temparray(J + 1)
Next J
Top = Top - 1
'Print numero(I)
Next I
End Sub
If I > 1 Then
Label1.Caption = numero(I - 1)
Call mostrar
I=I-1
Else
Call azar
End If
End Sub
Private Sub
Command3_Click()
End
End Sub
Text1.Text = ""
Text1.SetFocus
End Sub
Private Sub
Form_Activate()
Text1.SetFocus
End Sub
Private Sub
Form_Load()
Randomize
Call azar
Call Command1_Click
End Sub
Case 1
Command2.Picture = Image1(0).Picture
Case 2
Command2.Picture = Image1(1).Picture
Case 3
Command2.Picture = Image1(2).Picture
Case 4
Command2.Picture = Image1(3).Picture
Case 5
Command2.Picture = Image1(4).Picture
Case 6
Command2.Picture = Image1(5).Picture
Case 7
Command2.Picture = Image1(6).Picture
Case 8
Command2.Picture = Image1(7).Picture
Case 9
Command2.Picture = Image1(8).Picture
Case 10
Command2.Picture = Image1(9).Picture
Case 11
Command2.Picture = Image1(10).Picture
Case 12
Command2.Picture = Image1(11).Picture
Case 13
Command2.Picture = Image1(12).Picture
Case 14
Command2.Picture = Image1(13).Picture
Case 15
Command2.Picture = Image1(14).Picture
Case 16
Command2.Picture = Image1(15).Picture
Case 17
Command2.Picture = Image1(16).Picture
Case 18
Command2.Picture = Image1(17).Picture
Case 19
Command2.Picture = Image1(18).Picture
Case 20
Command2.Picture = Image1(19).Picture
End Select
End Sub
Private Sub
Text1_Change()
Call corregir
End Sub
Case 1
puntos = puntos + 1
Case 2
puntos = puntos + 1
Case 3
puntos = puntos + 1
Case 4
If UCase(Text1.Text) = "CAJÓN" Then
puntos = puntos + 1
Case 5
puntos = puntos + 1
Case 6
puntos = puntos + 1
Case 7
puntos = puntos + 1
Case 8
puntos = puntos + 1
Case 9
puntos = puntos + 1
Case 10
puntos = puntos + 1
Case 11
puntos = puntos + 1
Case 12
puntos = puntos + 1
Case 13
Case 14
puntos = puntos + 1
Case 15
puntos = puntos + 1
Case 16
puntos = puntos + 1
Case 17
puntos = puntos + 1
Case 18
puntos = puntos + 1
Case 19
puntos = puntos + 1
Case 20
puntos = puntos + 1
End Select
Label2.Caption = "¡Ganaste!"
End If
End Sub
Esta es una simple animación hecha con un Timer y una secuencia de imágenes, pero
muy simpática que simula una tarjeta animada. Su código es:
Option Explicit
Dim a As Integer
End
End Sub
a=a+1
If a >= 7 Then
a=0
Picture1.Picture = Image1(a).Picture
End Sub
Muchas veces queremos desplegar en un fondo una imagen pequeña repetidas veces.
En este ejercicio vamos a lograrlo creando un procedimiento de tipo público en un
modulo con extensión .bas y luego lo convocamos desde el Formulario en el
procemiento Click de un array de imagenes, que se encuentran dentro de un Frame o
Recuadro para su elección.
El código para el Módulo es:
Option Explicit
Dim Y As Integer
Dim X As Integer 'Ejecuta dos bucles anidados que repiten en el 'fondo la imagen hasta
cubrirla
For Y = 0 To
For X = 0 To
Destination.PaintPicture _ Source.Picture, X, Y
Next 'X
Next 'Y
End Sub
TileBitmap picSource(Index), Me
End Sub
Este ejercicio lo envía una de mis seguidoras de Visual Basic, alumna del profesorado de
Informática: Nora Vila. Gracias. Tenemos en el formulario cinco controles: dos
PictureClip para cargar las grillas del Sprite y su máscara, dos botones que activan y
desactivan el Timer y un Timer para repetir la secuencia del conejo caminando.
El código es el siguiente:
Option Explicit
Const SRCAND = &H8800C6 ' (DWORD) dest = origen AND dest Const SRCINVERT =
&H660046 ' (DWORD) dest = origen XOR 'dest
Dim a As Integer
Timer1.Enabled = False
End Sub
PictureClip1.Cols = 6
PictureClip1.Rows = 1
PictureClip2.Cols = 6
PictureClip2.Rows = 1
End Sub
Picture1.Refresh
Static x, y, i As Integer
cone = cone + 1
x = x + 60
End If
End Sub
Otra manera de realizar una animación transparente es usando el Método Draw. En este
ejercicio usamos una Picture con el paisaje para desplegar dos imagenes del
hombrecito, en distinta posición desplegadas en un Control ImageList, que posee la
propiedad MaskColor y nos va a permitir transparentar el fondo blanco del dibujo, al
superponerse al paisaje.
Timer1.Enabled = True
End Sub
Timer1.Enabled = False
flag = flag + 1
If flag > 2 Then
flag = 1
End If
End Sub
Then flag = 1
End If
Picture1.Refresh
End Sub
El método Refresh refresca la imagen de la Picture donde se ejecuta el Método Draw. Los
argumentos de este método son el controlador de contexto de dispositivo (HDC) del
objeto que lo recibe o sea la Picture1.hDC, su ubicación en las coordenadas x, y, y el
estilo gráfico transparente correspondiente al valor del color de la propiedad MaskColor
del ImageList.
Option Explicit
Label4.Caption = Chr$(HScroll1.Value)
End Sub
El Los controles son: una label que indica que debemos contesar la pregunta y luego
hacer click en la imagen del doctor. Una label que despliega las preguntas que hace el
doctor y una caja de texto enriquecido osea un RichTextBox donde debemos ingresar
nosotros las respuestas. Ademas tenemos oculto un control list que carga la lista de
palabras claves. El código es el siguiente:
Option Explicit
Sub pausa()
Dim comenzar
Dim chequeo
comenzar = Timer
chequeo = Timer
DoEvents
Loop
End Sub
End
End Sub
RichTextBox1.SetFocus
End Sub
Randomize
Call frasedoctor
List1.AddItem "tu"
List1.AddItem "te"
List1.AddItem "pienso"
List1.AddItem "bien"
List1.AddItem "regular"
List1.AddItem "¿que"
List1.AddItem "quiero"
List1.AddItem "deprimido"
List1.AddItem "sin"
List1.AddItem "dificil"
List1.AddItem "esperar"
List1.AddItem "necesito"
List1.AddItem "se"
List1.AddItem "adios"
List1.AddItem "odio"
List1.AddItem "amor"
List1.AddItem "asesino"
List1.AddItem "matar"
List1.AddItem "grosero"
List1.AddItem "fracaso"
List1.AddItem "nunca"
List1.AddItem "infeliz"
'Text1.Text = List1.List(3)
Sub frasedoctor()
frase = Int(Rnd * 8)
Case 0
Case 1
Case 2
Case 3
Case 4
Case 5
Case 6
Case 7
End Sub
palabra = 0
For a = 0 To 24
Next a
End If
'Print pepe
RichTextBox1.Text = ""
Call respuestapaciente
End Sub
Private Sub
Call respuestadoctor
End Sub
Private Sub
RichTextBox1_Click()
RichTextBox1.Text = ""
End Sub
Case "tu"
Case "te"
Case "bien"
Case "regular"
Case "¿que"
Case "quiero"
Case "deprimido"
Case "sin"
Case "dificil"
Case "esperar"
Case "necesito"
Case "se"
Case "odio"
Case "amor"
Case "matar"
Case "grosero"
Case "fracaso"
Case "nunca"
Case "infeliz"
Case "adios"
RichTextBox1.Locked = True
Beep
Call pausa
End Case
Else
Call frasedoctor
End Select
End Sub
En el formulario tenemos una label para el título y una picture que muestra el icono de
un reloj, luego dos cajas de texto donde debemos ingresar la hora del aviso y el texto del
mensaje y dos botones uno para cancelar y el otro para activar la aplicación, obvamente
usamos un timer que chequea si la hora ya es la indicada.
El código es :
Option Explicit
Timer1.Enabled = True
Me.WindowState = 1
End Sub
End
End Sub
Private Sub
Form_Activate()
Text1.SetFocus
End Sub
Private Sub
Timer1_Timer()
Beep
Timer1.Enabled = False
Form1.WindowState = 0
End If
End Sub
E este es un ejercicio muy simple que dibuja puntos en un formulario. Vamos a empezar
a ver cierta funciones gráficas de visual basic. Lo importante para que se salgan por
impresora es que la propiedad AutoRedraw del formulario este a True. Sino no se ven los
puntos en la impresión.
Option Explicit
Dim x As Integer
Dim y As Integer
Dim i As Integer
For i = 1 To 20
x = Int(ScaleWidth * Rnd)
y = Int(ScaleHeight * Rnd)
Next
End Sub
Private Sub
Command2_Click()
Cls
End Sub
Form1.PrintForm
End Sub
Randomize
End Sub
Como vemos usamos la función randomize para ubicar los puntos en forma aleatoria en
el formulario y un bucle For/Next que dibuja 20 puntos por cada click que hacemos en el
botón: Puntos, el otro botón borra con Cls lo dibujo o sea limpia el form. El método Pset
(Point Set) dibuja los puntos combinada con QBColor que le asigna un color. El formato
de los puntos es Dot.
Option Explicit
Dim x, y, r As Integer
x1 = Fix(Me.ScaleWidth * Rnd)
y1 = Fix(Me.ScaleHeight * Rnd)
x2 = Fix(Me.ScaleWidth * Rnd)
y2 = Fix(Me.ScaleHeight * Rnd)
Line (x1, y1)-(x2, y2), QBColor(color) 'los dos primeros valores 'establecen un punto
extremo y los otros dos el otro punto extemo, 'entre ambos se dibuja la recta.
End Sub
End Sub
x1 = Fix(Me.ScaleWidth * Rnd)
y1 = Fix(Me.ScaleHeight * Rnd)
x2 = Fix(Me.ScaleWidth * Rnd)
y2 = Fix(Me.ScaleHeight * Rnd)
Randomize FillStyle = 1
'dibuja un cuadro(B)
End Sub
x1 = Fix(Me.ScaleWidth * Rnd)
y1 = Fix(Me.ScaleHeight * Rnd)
x2 = Fix(Me.ScaleWidth * Rnd)
y2 = Fix(Me.ScaleHeight * Rnd)
'dibuja un cuadro(B)
End Sub
Cls
End Sub
x = Fix(Me.ScaleWidth * Rnd)
y = Fix(Me.ScaleHeight * Rnd)
r = Fix(1000 * Rnd)
Randomize
End Sub
x = Fix(Me.ScaleWidth * Rnd)
y = Fix(Me.ScaleHeight * Rnd)
r = Fix(1000 * Rnd)
Randomize
FillStyle = 0
FillColor = QBColor(ccolor)
End Sub
Randomize
x = Fix(Me.ScaleWidth * Rnd)
y = Fix(Me.ScaleHeight * Rnd)
End Sub
Para dibujar las Rectas debemos indicarle dos valores de: x, e y para uno de los puntos
extremos y x1, Y1 para el otro luego con el método Line dibuja una recta que une ambos
puntos. Cuando dibuja un rectángulo. También necesita estos valores pero para dibujar
dos líneas rectas que luego repite en espejo para formar una Box o Caja, y así aparece el
cuadrado o rectángulo. Cuandoq uqeremos que ese rectángulo este relleno la indicación
será BF o sea Box Fill, o Caja rellena. Para esto la propiedad FillStyle debe estar a True. Y
con el Círculo necesitamos un valor para x, y otro para y para establecer un punto que
será el centro de la circunferencia y un valor para el radio. Para determinar los colores lo
hacemos usando un Randome y la función QBColor. El ejercicio completo puede bajarse
de Aquí.
Este ejercicio tiene un código familiar para ustedes ya que hemos trabajado en ejercicios
anteriores el método DragDrop pero lo incluí por lo vistoso de las imágenes, es una
versión en Visual Basic de una aplicación hecha en Flash de Macromedia.
El código es el siguiente:
'Source.Move X, Y
End Sub
El código es el siguiente:
Option Explicit
Dim a As Integer
Dim n1 As Integer
Dim n2 As Integer
Dim n3 As Integer
Source.Visible = False
End Sub
Timer1.Enabled = True
Command4.Enabled = True
End Sub
Unload Me
End Sub
'Detiene la animación. Inhabilita el botón Jugar y llama al procedimiento 'que elige al azar
los números
Timer1.Enabled = False
Command2.Enabled = False
Command4.Enabled = False
End Sub
Randomize
End Sub
a = a + 1 If a = 1 Then
Image1.Picture = Picture1(0).Picture
Image2.Picture = Picture1(1).Picture
Image3.Picture = Picture1(2).Picture
End If
If a = 2 Then
Image1.Picture = Picture1(1).Picture
Image2.Picture = Picture1(2).Picture
Image3.Picture = Picture1(0).Picture
End If
If a = 3 Then
Image1.Picture = Picture1(2).Picture
Image2.Picture = Picture1(0).Picture
Image3.Picture = Picture1(1).Picture
a=0
End If
End Sub
n1 = Int(Rnd * 3) + 1
n2 = Int(Rnd * 3) + 1
n3 = Int(Rnd * 3) + 1
Timer1.Enabled = False
Select Case n1
Case 1
Image1.Picture = Picture1(0).Picture
Case 2
Image1.Picture = Picture1(1).Picture
Case 3
Image1.Picture = Picture1(2).Picture
End Select
n1 = n1
Select Case n2
Case 1
Image2.Picture = Picture1(0).Picture
Case 2
Image2.Picture = Picture1(1).Picture
Case 3
Image2.Picture = Picture1(2).Picture
End Select
n2 = n2
Select Case n3
Case 1
Image3.Picture = Picture1(0).Picture
Case 2
Image3.Picture = Picture1(1).Picture
Case 3
Image3.Picture = Picture1(2).Picture
End Select
n3 = n3
'Llama al procedimiento que controla si los tres numeros elegidos al azar son iguales.
Call ganar
End Sub
'Procedimiento que controla si los tres números al azar son iguales ganó, sino perdió
Dim m As Integer
For m = 0 To 6
Image4(m).Visible = True
Next m
Else
Label1.Caption = "¡¡Perdiste!!"
End If
Call dinero
End Sub
End If
End Sub
Como vemos en esta aplicación tenemos varios procedimientos creados : Azar, ganar y
dinero que eligen los tres numeros al azar que cargan las imágenes, ganar que controla
si las tres imagenes son iguales y dinero que controla que las monedas de 1$ se
agotaron. Y un Select Case que elige que imagen corresponde a cada numero.
Este ejercicio muestra como hacer un protector de pantalla simple, que desplaza un
corazón en la pantalla. Este archivo lo vamos a hacer en VB y lo vamos a grabar con
extension .scr, para luego copiarlo en el directorio de Windows.
Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
puntero = ShowCursor(-1)
End
End Sub
puntero = ShowCursor(-1)
End
End Sub
puntero = ShowCursor(-1)
End
End Sub
If App.PrevInstance Then
End
puntero = ShowCursor(0)
movimiento = 3
End Sub
Private Sub
If X1 = 0 And Y1 = 0 Then
X1 = x
Y1 = y
Exit Sub
End If
X1 = x Y1 = y
Exit Sub
End If
puntero = ShowCursor(-1)
End
End Sub
Case 1
movimiento = 2
movimiento = 4
End If
Case 2
movimiento = 1
movimiento = 3
End If
Case 3
movimiento = 4
movimiento = 2
End If
Case 4
movimiento = 3
movimiento = 1
End If
End Select
End Sub
Para esta aplicación vamos a usar una API de window para mostrar y ocultar el puntero
del mouse, SHOWCURSOR, y tambien vamos a registrar un pequeño movimiento del
mouse para que se cierre el programa, asi como tocar una tecla. La animacion controla
en cuatro movimientos el desplazamiento del corazón en diagonal hasta llegar al borde,
y allí cambia la dirrección.
Option Explicit
MousePointer = 0
Picture1.Visible = True
End If
MousePointer = 0
Picture2.Visible = True
End If
MousePointer = 0
Picture3.Visible = True
End If
End Sub
Private Sub
Label1_Click()
Label1.Caption = "Tarea"
End If
Label1.Caption = ""
Label1.BackColor = vbYellow ' fondo de la label amarillo
End If
Label1.Caption = ""
Label1.BackColor = VBred
End If
End Sub
MouseIcon = Picture1.Picture
MousePointer = 99
Picture1.Visible = False
End Sub
MousePointer = 99
Picture2.Visible = False
End Sub
MousePointer = 99
Picture3.Visible = False
End Sub
Option Explicit
Dim i As Integer
Label1.Tag = "si"
Label2.Tag = "no"
Label3.Tag = "no"
Timer1.Enabled = True
End Sub
Label5.Visible = True
End If
End Sub
Private Sub
Label7_Click()
Label5.Visible = True
End If
End Sub
Label5.Visible = True
End If
End Sub
Label5.Visible = True
End If
End Sub
If paso = 1 Then
Picture2.Move Picture2.Left - 100, Picture2.Top ElseIf paso = 2 Then Picture2.Move
Picture2.Left - 100, Picture2.Top ElseIf paso = 3 Then Picture2.Move Picture2.Left - 150,
Picture2.Top ElseIf paso = 4 Then Picture2.Move Picture2.Left - 150, Picture2.Top ElseIf
paso = 5 Then Picture2.Move Picture2.Left - 150, Picture2.Top ElseIf paso = 6 Then
Picture2.Move Picture2.Left - 150, Picture2.Top ElseIf paso = 7 Then Picture2.Move
Picture2.Left - 150, Picture2.Top ElseIf paso = 8 Then Picture2.Move Picture2.Left - 150,
Picture2.Top ElseIf paso = 9 Then Picture2.Move Picture2.Left - 150, Picture2.Top ElseIf
paso = 10 Then Picture2.Move Picture2.Left - 150, Picture2.Top ElseIf paso = 11 Then
Picture2.Move Picture2.Left - 150, Picture2.Top ElseIf paso = 12 Then Picture2.Move
Picture2.Left - 150, Picture2.Top ElseIf paso = 13 Then Picture2.Move Picture2.Left - 150,
Picture2.Top ElseIf paso = 14 Then Picture2.Move Picture2.Left - 150, Picture2.Top ElseIf
paso = 15 Then Picture2.Move Picture2.Left - 150, Picture2.Top ElseIf paso = 16 Then
Picture2.Move Picture2.Left - 150, Picture2.Top ElseIf paso = 17 Then Picture2.Move
Picture2.Left - 58, Picture2.Top
Label4.Caption = tramo1
End Sub
Pongo los condicionales en un solo renglon para ahorrar espacio, ustedes corrigan la
sintaxis y tambien pueden abreviar codigo creando procedimientos que se repiten.
Este es un típico jueguito de disparar o Shoot. con el mouse debemos derribar los patos
y esto hace que incrementemos el puntaje. He omitido los sonidos para que el archivo
no sea tan pesado pero ustedes pueden agregar los que gusten. El código es:
Option Explicit
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim e As Integer
Dim f As Integer
Dim g As Integer
Dim h As Integer
Dim i As Integer
Dim j As Integer
Randomize
End Sub
mniDía.Checked = True
mnuNoche.Checked = False
Form1.Picture = Image1.Picture
Timer1.Enabled = True
Timer3.Enabled = True
Timer5.Enabled = True
Timer7.Enabled = True
Timer9.Enabled = True
Timer4.Enabled = False
Timer2.Enabled = False
Timer6.Enabled = False
Timer8.Enabled = False
Timer10.Enabled = False
Picture6.Visible = False
Picture7.Visible = False
Picture1.Visible = False
Picture8.Visible = False
Picture9.Visible = False
mniDía.Checked = False
mnuNoche.Checked = True
Form1.Picture = Image2.Picture
Timer2.Enabled = True
Timer4.Enabled = True
Timer6.Enabled = True
Timer8.Enabled = True
Timer10.Enabled = True
Timer1.Enabled = False
Timer3.Enabled = False
Timer5.Enabled = False
Timer7.Enabled = False
Timer9.Enabled = False
Picture6.Visible = False
Picture7.Visible = False
Picture1.Visible = False
Picture8.Visible = False
Picture9.Visible = False
End Sub
Picture1.Top = 480
Picture6.Left = 1560
Picture6.Top = 1440
Picture7.Left = 480
Picture7.Top = 2760
Picture8.Left = 2400
Picture8.Top = 240
Picture9.Left = 2880
Picture9.Top = 2160
Picture1.Visible = True
Picture8.Visible = True
Picture6.Visible = True
Timer1.Enabled = True
Timer3.Enabled = True
Timer5.Enabled = True
Timer7.Enabled = True
Timer9.Enabled = True
Timer2.Enabled = True
Timer4.Enabled = True
Timer6.Enabled = True
Timer8.Enabled = True
Timer10.Enabled = True
End If
End Sub
End Sub
Timer1.Enabled = False
Picture1.Picture = Picture3.Picture
Call pausa
Picture1.Visible = False
patosin = patosin + 1
Call final
Picture1.Picture = Picture2(0).Picture
Timer2.Enabled = False
Picture1.Picture = Picture5.Picture
Call pausa
Picture1.Visible = False
patosin = patosin + 1
Call final
Picture1.Picture = Picture4(0).Picture
End If
End Sub
Timer5.Enabled = False
Picture6.Picture = Picture3.Picture
Call pausa
Picture6.Visible = False
patosin = patosin + 1
Call final
Picture6.Picture = Picture2(0).Picture
Timer6.Enabled = False
Picture6.Picture = Picture5.Picture
Call pausa
Picture6.Visible = False
patosin = patosin + 1
Call final
Picture6.Picture = Picture4(0).Picture
End If
End Sub
Timer9.Enabled = False
Picture7.Picture = Picture3.Picture
Call pausa
Picture7.Visible = False
patosin = patosin + 1
Call final
Picture7.Picture = Picture2(0).Picture
Timer10.Enabled = False
Picture7.Picture = Picture5.Picture
Call pausa
Picture7.Visible = False
patosin = patosin + 1
Call final
Picture7.Picture = Picture4(0).Picture
End If
End Sub
Timer3.Enabled = False
Picture8.Picture = Picture3.Picture
Call pausa
Picture8.Visible = False
patosin = patosin + 1
Call final
Picture8.Picture = Picture2(0).Picture
Timer4.Enabled = False
Picture8.Picture = Picture5.Picture
Call pausa
Picture8.Visible = False
patosin = patosin + 1
Call final
Picture8.Picture = Picture4(0).Picture
End If
End Sub
Timer7.Enabled = False
Picture9.Picture = Picture3.Picture
Call pausa
Picture9.Visible = False
patosin = patosin + 1
Call final
Picture9.Picture = Picture2(0).Picture
Timer8.Enabled = False
Picture9.Picture = Picture5.Picture
Call pausa
Call final
Picture9.Picture = Picture4(0).Picture
End If
End Sub
a=a+1
If a = 3 Then
a=0
Picture1.Picture = Picture2(a).Picture
Picture1.Visible = True
Dim r As Integer
r = Int(Rnd * 20)
End Sub
Private SubTimer10_Timer()
j = j + 1 If j = 3 Then
j=0
Picture7.Picture = Picture4(c).Picture
Picture7.Visible = True
Dim r As Integer
r = Int(Rnd * 30)
End Sub
b = b + 1 If b = 3 Then b = 0
Picture1.Picture = Picture4(b).Picture
Picture1.Visible = True
Dim r As Integer
r = Int(Rnd * 20)
End Sub
Dim comenzar
Dim controlar
comenzar = Timer
controlar = Timer
DoEvents
Loop
End Sub
c=c+1
If c = 3 Then
c=0
Picture8.Picture = Picture2(c).Picture
Picture8.Visible = True
End Sub
d = d + 1 If d = 3 Then
d=0
Picture8.Picture = Picture4(d).Picture
Picture8.Visible = True
End Sub
e=e+1
If e = 3 Then
e=0
Picture6.Picture = Picture2(c).Picture
Picture6.Visible = True
End Sub
f=f+1
If f = 3 Then
f=0
Picture6.Picture = Picture4(c).Picture
Picture6.Visible = True
End Sub
Private Sub Timer7_Timer()
g=g+1
If g = 3 Then
g=0
Picture9.Picture = Picture2(c).Picture
Picture9.Visible = True
Dim r As Integer
r = Int(Rnd * 30)
End Sub
h=h+1
If h = 3 Then
h=0
Picture9.Picture = Picture4(c).Picture
Picture9.Visible = True
Dim r As Integer
r = Int(Rnd * 30)
End Sub
i=i+1
If i = 3 Then
i=0
Picture7.Picture = Picture2(c).Picture
Picture7.Visible = True
Dim r As Integer
r = Int(Rnd * 30)
Picture7.Move Picture7.Left + 200, Picture7.Top - r
End Sub
If patosin = 10 Then
Form2.Show 1
Form2.Show 1
Form2.Show 1
Form2.Show 1
End If
End Sub
Option Explicit
Dim comenzar
Dim controlar
comenzar = Timer
controlar = Timer
DoEvents
Loop
End Sub
End
End Sub
Picture1.Top = -300
Picture5.Top = -100
Picture9.Top = -100
Picture10.Top = -200
Picture11.Top = -300
Picture12.Top = -100
End Sub
Picture3.Picture = Picture7.Picture
Timer1.Interval = 600
Call pausa
Picture3.Picture = Picture6.Picture
Timer1.Interval = 0
Picture4.Visible = False
Picture5.Visible = False
Picture9.Visible = False
Picture10.Visible = False
Picture11.Visible = False
Picture12.Visible = False
Call pausa
Call pausa
Call pausa
Picture3.Picture = Picture7.Picture
Timer3.Enabled = False
Image1.Left = 1200
Timer1.Enabled = True
Timer1.Interval = 400
Picture1.Top = 1200
Picture1.Visible = True
Picture2.Top = 2880
Picture2.Visible = True
Picture4.Top = 2760
Picture4.Visible = True
Picture5.Top = 1680
Picture5.Visible = True
Picture9.Top = 120
Picture9.Visible = True
Picture10.Top = 0
Picture10.Visible = True
Picture11.Top = 4200
Picture11.Visible = True
Picture12.Top = 4440
Picture12.Visible = True
Call pausa
Picture3.Picture = Picture8.Picture
Timer1.Interval = 150
Call pausa
End Sub
End Sub
Este ejercicio nos muestra como usar el objeto Printer, para darle salida por la impresora
a una imagen. El código del botón Imprimir es:
Private Sub Command1_Click()
With Printer
.ScaleMode = vbTwips
alto = .ScaleHeight
ancho = .ScaleWidth
End With
Printer.EndDoc
End Sub
En este ejercicio vamos a crear un procedimiento llamado Pausa para poder hacer una
interrupción en la ejecución del código de una Aplicación. Así se verá una animación que
muestra la aparición de las letras con un intérvalo. Usamos un bucle que toma el tiempo
desde el reloj del sistema. El código es:
Private Sub pausa()
Dim comenzar
Dim chequeo
comenzar = Timer
chequeo = Timer
Loop
End Sub
Label1.Visible = True
Call pausa
Label2.Visible = True
call pausa
Label3.Visible = True
Call pausa
Label4.Visible = True
Call pausa
Label5.Visible = True
End Sub
Option Explicit
End Sub
Option Explicit
Const MaxSlider1 = 6
Const MinSlider1 = 1
Moviendo = False
lblMin = MinSlider1
lblMax = MaxSlider1
lblValor = MinSlider1
End Sub
Anterior = Cursor.X
Moviendo = True
Call GetCursorPos(Cursor)
imgPuntero.Left = Cursor.X
End If
Call mostrar
DoEvents
Loop Until
Moviendo = False
End
Moviendo = False
End Sub
Picture1.Picture = Image1(0).Picture
Picture1.Picture = Image1(1).Picture
Picture1.Picture = Image1(2).Picture
End If
End Sub
Modulo:
Option Explicit
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
End Sub
End Sub
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
Para que muestre solo los archivos MP3 en la propiedad Pattern del FileListBox:
ingresamos "*.MP3"
En este ejercicio vamos a retomar el objeto Printer, que alguna vez ya habiamos
trabajado para darle salida por impresora, a un texto determinado.
Ahora veremos modificaciones del tipo de letra, estilo y algunos métodos graficos, como
líneas, rectángulos arcos y círculos. En el procedimiento Click del boton ingresamos el
siguiente código:
Option Explicit
Dim smensaje As String
Dim HWidth As Integer
Dim HHeight As Integer
El código es:
Option Explicit
Private Sub Command1_Click()'boton de número al azar
Dim azar As Integer
Randomize
azar = Int(10 * Rnd) + 1
Label3.Caption = azar
End Sub
En este ejercicio vamos a crear una función que nos permite calcular un interes
compuesto, de una suma inicial de acuerdo al porcentaje de interés ingresado y la
cantidad de cuotas en que se devuelva el mismo.
Usamos tres labels informativas, y tres cajas de texto para ingresar los valores, un boton
para ejecutar la función y una label para que nos devuelva el cálculo hecho. El código
es:
Option Explicit
Dim capital As Currency
Dim interesmensual As Single
Dim cuotas As Long
imgConejo.Visible = False
Check2.Caption = ""
Check2.Value = 0
imgOsito.Visible = False
Check3.Caption = ""
Check3.Value = 0
imgPato.Visible = False
Check4.Caption = ""
Check4.Value = 0
imgGato.Visible = False
Check5.Caption = ""
Check5.Value = 0
imgBug.Visible = False
Check6.Caption = ""
Check6.Value = 0
imgNiña.Visible = False
Check7.Caption = ""
Check7.Value = 0
imgOso.Visible = False
Check8.Caption = ""
Check8.Value = 0
imgAlce.Visible = False
Check9.Caption = ""
Check9.Value = 0
imgViejito.Visible = False
End Sub
Check2.Caption = ""
Check2.Value = 0
imgOsito.Visible = False
Check3.Caption = ""
Check3.Value = 0
imgPato.Visible = False
Check4.Caption = ""
Check4.Value = 0
imgGato.Visible = False
Check5.Caption = ""
Check5.Value = 0
imgBug.Visible = False
Check6.Caption = ""
Check6.Value = 0
imgNiña.Visible = False
Check7.Caption = ""
Check7.Value = 0
imgOso.Visible = False
Check8.Caption = ""
Check8.Value = 0
imgAlce.Visible = False
Check9.Caption = ""
Check9.Value = 0
imgViejito.Visible = False
End Sub
If flag1 = 1 And flag2 = 2 Then 'Chequea si estan colocados los dos numeros
Check9.Caption = "Correcta"
Check9.Value = 1
imgViejito.Visible = True
End If
For I = 1 To 20
Beep
Next I
Call ganar
ElseIf img0.Tag = "vacia" And Source.Tag <> "cero" Then
MsgBox "Esa suma es incorrecta", vbCritical
End If
End If
End Sub
Check1.Caption = "Correcta"
Check1.Value = 1
Check1.Visible = True
imgConejo.Visible = True
For I = 1 To 20
Beep
Next I
Call ganar
ElseIf img1.Tag = "vacia" And Source.Tag <> "dos" Then
MsgBox "Esa suma es incorrecta"
End If
End If
End Sub
If flag1 = 1 And flag2 = 2 Then 'Chequea si estan colocados los dos numeros
Check9.Caption = "Correcta"
Check9.Value = 1
imgViejito.Visible = True
End If
For I = 1 To 20
Beep
Next I
Call ganar
ElseIf img9.Tag = "vacia" And Source.Tag <> "uno" Then
MsgBox "Esa suma es incorrecta", vbCritical
End If
End If
End Sub
Con esta aplicación simulamos la animación de llenar y vaciar un Tanque de Agua. Para
que funcione correctamente este ejercicio, deben tener el control Gauge32 habilitado en
su sistema de Windows.
El código es el siguiente:
Private Sub Form_Load()
VolumenInicial = 0
'Inicializar el volumen
Text1.Text = 0
End Sub
del = (b ^ 2 - 4 * a * c)
If del >= 0 Then 'Si las raíces son reales e iguales
x1 = (-b + Sqr(del)) / (2 * a)
x2 = (-b - Sqr(del)) / (2 * a)
txtX1.Text = Format(x1, "###,##0.00")
txtX2.Text = Format(x2, "###,##0.00")
Else 'Si son complejas
x1 = Format((-b) / (2 * a), "###,##0.00")
x2 = Format((Sqr(-del)) / (2 * a), "###,##0.00")
txtX1.Text = x1 & " + " & x2 & " i"
txtX2.Text = x1 & " - " & x2 & " i"
End If
End Sub
Put #1, , x1
Put #1, , x2
Close (1)
End Sub
'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
If optPedido2.Value Then
'Inicializar las variables.
CantidadHotDog = 1
CantidadGaseosa = 1
CantidadPapasFritas = 1
CantidadHamburguesa = 0
CantidadSandwich = 0
CantidadRefresco = 0
If optPedido3.Value Then
'Inicializar las variables
CantidadSandwich = 1
CantidadGaseosa = 1
CantidadPapasFritas = 1
CantidadHamburguesa = 0
CantidadHotDog = 0
CantidadRefresco = 0
Este ejercicio de Arrastrar y Soltar muestra otra posibilidad de ejercitación visual para
niños. Las figuras vienen incluidas en el archivo zipeado, para facilitarles el trabajo.El
código es el siguiente:
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.
Sub Rombo()
Call Limpiar
picFigura.DrawStyle = 0 'Dibujar con líneas continuas.
'Dibuja las 4 líneas.
picFigura.Line (500, 850)-(1050, 100)
picFigura.Line -(1700, 850)
picFigura.Line -(1050, 1600)
picFigura.Line -(500, 850)
picFigura.DrawStyle = 2 'Dibujar la diagonales con líneas discontinuas.
'Dibujar diagonales
picFigura.Line (500, 850)-(1700, 850)
picFigura.Line (1050, 100)-(1050, 1600)
'Colocar los letreros de altura.
picFigura.CurrentX = 1200
picFigura.CurrentY = 650
picFigura.Print "d1"
'Colocar los letreros de la base.
picFigura.CurrentX = 1100
picFigura.CurrentY = 1050
picFigura.Print "d2"
'Situar la fórmula
picFormula.CurrentX = 60
picFormula.CurrentY = 500
picFormula.FontBold = True
picFormula.FontSize = 12
picFormula.Print "Área = (d1 x d2) / 2 "
End Sub
Sub OcultarH() 'Oculta lblH y txtH.
lblH.Visible = False
txtH.Visible = False
End Sub
Sub MostrarH() 'Muestra lblH y txtH.
lblH.Visible = True
txtH.Visible = True
End Sub
Sub Cuadrado()
Call Limpiar
Call CambiarLabels
picFigura.DrawStyle = 0 'Dibujar con líneas continuas.
'Dibuja las 4 líneas.
Sub Paralelogramo()
Call Limpiar
Call CambiarLabels
picFigura.DrawStyle = 0 'Dibujar con líneas continuas
'Dibuja las 4 líneas.
picFigura.Line (300, 1400)-(500, 300)
picFigura.Line -(2100, 300)
picFigura.Line -(1900, 1400)
picFigura.Line -(300, 1400)
'Dibujar la altura.
picFigura.DrawStyle = 2 'Dibujar con líneas punteadas la altura.
picFigura.Line (500, 300)-(500, 1400)
'Colocar los letreros de altura.
picFigura.CurrentX = 550
picFigura.CurrentY = 700
picFigura.Print "h"
'Colocar los letreros de la base.
picFigura.CurrentX = 1100
picFigura.CurrentY = 1450
picFigura.Print "b"
'Situar la fórmula
picFormula.CurrentX = 300
picFormula.CurrentY = 500
picFormula.FontBold = True
picFormula.FontSize = 12
picFormula.Print " Área = b x h "
End Sub
Sub Rectangulo()
Call Limpiar
picFigura.DrawStyle = 0 'Dibujar con líneas continuas
Call CambiarLabels
'Dibuja las 4 líneas.
picFigura.Line (300, 1400)-(300, 300)
picFigura.Line -(2100, 300)
picFigura.Line -(2100, 1400)
picFigura.Line -(300, 1400)
'Colocar los letreros de altura.
picFigura.CurrentX = 100
picFigura.CurrentY = 700
picFigura.Print "h"
'Colocar los letreros de la base.
picFigura.CurrentX = 1100
picFigura.CurrentY = 1450
picFigura.Print "b"
'Situar la fórmula
picFormula.CurrentX = 300
picFormula.CurrentY = 500
picFormula.FontBold = True
picFormula.FontSize = 12
picFormula.Print " Área = b x h "
End Sub
Sub Limpiar()
picFigura.Cls 'Limpiar el PictureBox para las figuras.
picFormula.Cls 'Limpiar PictureBox para la fórmula.
End Sub
Sub OcultarB1() 'Oculta lblB1 y txtB1.
lblB1.Visible = False
txtB1.Visible = False
End Sub
Este ejercicio es una nueva versión del juego de memoria que busca dos imágenes
iguales, para que vayan desapareciendo. Le hemos hecho una presentación (falta, está
en la pg. WEB) y luego el juego en sí. El código es el siguiente:
Option Explicit
Dim a As Integer
Dim tiempo As Integer
If tiempo = 30 Then
Form1.Show
Unload Form2
End If
Picture7 = Picture8(a)
Picture7.Move Picture7.Left + 200, Picture7.Top + 100
If a >= 2 Then a = 0
Picture6 = Picture5(a)
Picture6.Move Picture6.Left - 200, Picture6.Top + 100
If a >= 2 Then a = 0
Picture1 = Picture2(a)
Picture1.Move Picture1.Left - 200, Picture1.Top - 100
If a >= 2 Then a = 0
Picture3 = Picture4(a)
Picture3.Move Picture3.Left + 200, Picture3.Top - 100
If a >= 2 Then a = 0
If tiempo = 5 Then
Label5.Visible = True
ElseIf tiempo = 7 Then
Label6.Visible = True
ElseIf tiempo = 11 Then
Label1.Visible = True
ElseIf tiempo = 13 Then
Label2.Visible = True
ElseIf tiempo = 15 Then
Label3.Visible = True
ElseIf tiempo = 16 Then
Label4.Visible = True
End If
a=a+1
End Sub
Option Explicit
Public Bandera As Long 'Para contar las veces que se hace click
'sobre las figuras.
Dim Figura(8) As String 'Para guardar las figuras concordantes.
Dim Chequear As String 'Para contar las figuras durante la reconstrucción.
Dim ctlPrimeraFigura As Control 'Variables de control para la primera
Dim ctlSegundaFigura As Control 'y el segunda figura.
Dim UnoMostrado As Boolean 'Para llevar la cuenta de los mostrados.
Dim AmbosMostrados As Boolean
Dim Pares As Integer 'Lleva la cuenta de los pares.
Dim Segundos As Long 'Para llevar el tiempo.
Dim Puntuacion As Integer 'Para llevar la puntuación.
Dim Inicio As Date
Dim I As Integer
Sub FigurasVisibles()
'Hace todas las Figuras visibles
For I = 1 To 16
picFigura(I - 1).Visible = True
Next I
End Sub
Sub VoltearImagen()
'Voltea las imagenes cargando al Picture picVoltear.
For I = 1 To 16
picFigura(I - 1).Picture = picVoltear.Picture
Next I
End Sub
Sub HabilitarTodos()
'Habilita todas las Figuras.
For I = 1 To 16
picFigura(I - 1).Enabled = True
Next I
End Sub
AmbosMostrados = True
End If
End Sub
Sub ChequearFigura() 'Chequea si es la primera o segunda figura que se volteado.
If UnoMostrado Then 'si una figura esta visible.
Set ctlSegundaFigura = Screen.ActiveControl 'Activa la variable control.
Call Verificar
UnoMostrado = False
Else
Set ctlPrimeraFigura = Screen.ActiveControl 'Activa la variable control.
ctlPrimeraFigura.Enabled = False
UnoMostrado = True
End If
End Sub
MezclarFiguras = iNumero
End Function
UnoMostrado = False
Puntuacion = 30000 'Como máxima a alcanzar.
picFigura(8).Tag = Figura(MezclarFiguras())
picFigura(9).Tag = Figura(MezclarFiguras())
picFigura(10).Tag = Figura(MezclarFiguras())
picFigura(11).Tag = Figura(MezclarFiguras())
picFigura(12).Tag = Figura(MezclarFiguras())
picFigura(13).Tag = Figura(MezclarFiguras())
picFigura(14).Tag = Figura(MezclarFiguras())
picFigura(15).Tag = Figura(MezclarFiguras())
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.
If N > 1 Then ReDim Preserve Nota(1 To N) 'Reajustando la dimensión del arreglo notas
Text2.Text = ""
End If
End Sub
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
End Sub
Este ejercicio es muy simple y nos muestra como hacer un arreglo o matríz de controles.
en este caso un array de botones. Nos sirve de introducción al próximo ejercico donde
usaremos un array de cajas de texto. El código es el siguiente:
Este ejercicio nos permite imprimir texto respetando el corte de línea. El formulario
contiene una caja de texto con la propiedad ScrollBar en vertical y la propiedad Multiline
en True. Y dos botones uno para dar salida por impresora y el otro para cerrar el
programa. El código es el siguiente:
Option Explicit
Dim i As Integer
Este ejercicio nos permite ordenar los registros de una tabla en forma ascendente o
descendente. Los registros se despliegan en una grilla, y también podemos seleccionar
la cantidad de registros que queremos mostrar. Obviamente necesitaremos conexión
con una base de datos, para lo que usaremos un control data. El código es:
End Sub
Este ejercicio nos permite redondear un número decimal, con la cantidad de decimales
que deseemos. El código es el siguiente:
Este ejercicio muestra el uso de un control llamado TreeView, que debemos traer de
componentes del conjunto Microsoft controles. Combinado con un mapa de la Isla de
Cuba, para mostrar el nombre de cada provincia y su ubicación. El código es: Option
Explicit
'Dibuja el nombre de Cuba en Relieve en el Formulario.
Function EnRelieve(nombre As Form, A$, x, y)
nombre.CurrentX = x
nombre.CurrentY = y
nombre.ForeColor = QBColor(15)
nombre.Print A$
nombre.CurrentX = x + 8
nombre.CurrentY = y + 10
nombre.ForeColor = QBColor(2)
nombre.Print A$
Form1.Show
End Function
Private Sub Form_Activate()
'Para dibujar en relieve en el formulario el nombre de Cuba.
Call EnRelieve(Form1, "Cuba", 6500, 400)
End Sub
End Select
End Sub
x = x1 'Inicializando la x.
Do Until x >= x2
m = (y1 - y2) / (x1 - x2) 'pendiente de la recta.
y = y1 + m * (x - x1) 'Ecuación de la recta.
l = x - w / 2 'Valor que toma image1.left
t = y - h / 2 'Valor que toma image1.top
x = x + delta 'Incrementando la x.
Loop
Next I
Image1.Enabled = False 'Inhabilitarla para impedir que regrese a la posición inicial.
End Sub
Call Mover
End Sub
En este ejercicio vamos a realizar por código, ciertos efectos especiales aplicados a una
imágen, durante el proceso de carga de la misma en un control Picture. Para estos
efectos usamos el método PaintPicture. El código es el siguiente:
End Sub
Picture2.Cls
stripewidth = 10
stripes = Fix(Picture1.ScaleWidth / stripewidth)
For i = 1 To Picture1.ScaleWidth / 2
Picture2.PaintPicture Picture1.Picture, (Picture1.ScaleWidth - pw) / 2, 0, pw, ph,
(Picture1.ScaleWidth - pw) / 2, 0, pw, ph, &HCC0020
pw = pw + 2
Next i
End Sub
En esta aplicación usando el método Line vamos a dibujar rectas, a partir de un apretar
el botón izquierdo del mouse, en el formulario arrastramos el mouse y hacemos un soltar
el botón izquierdo del mouse, con lo que se dibujara una línea entre los dos puntos,
marcados. En las labels se muestran los valores de las coordenadas, de a cuerdo a la
ubicación del puntero. Dim CX As Integer
Dim CY As Integer
End Sub
End Sub
En esta aplicación vamos a crear una pequeña aventura gráfica. Consta de dos
formularios. En el primero vamos a hacer Click sobre ciertos objetos que guardamos en
el Inventario y luego en el segundo formulario, hacemos Click en los objetos del
Inventario y los colocamos en la segunda pantalla, en los lugares correctos. El código
del primer formulario es: Option Explicit
Option Explicit
En este ejercicio vamos a usar una pequeña rutina de control de Errores. El objetivo es
buscar en la Unidad A, un archivo determinado, en este caso un .wmf, si no lo encuentra
despliega un mensaje, codificado en la rutina de Error.
El código es:
Este ejercicio permite abrir archivos WAV, ejecutados con el control Multimedia y
seleccionados de las carpetas del los distintos dispositivos. El Multimedia control debe
traerse desde proyecto, Componentes para ser agregado a la Caja de Herramientas.
En este ejercicio vamos a calcular un interés de tipo financiero, para esto vamos a crear
un Módulo con una función específica llamada: CalcPago. Para crear el Módulo vamos a
proyecto : agregar Módulo y allí codificamos y luego lo grabamos con la extensión .bas.
Desde esta aplicación vamos a usar un objeto OLE que convoque a la aplicación Excel,
del Office. El código del formulario es el siguiente:
Option Explicit
Option Explicit
repararerror:
' determina el tipo de error
Select Case Err.Number
Case 429
MsgBox "Imposible crear un Aplicación OLE con Excel." + vbCrLf + " Está seguro de
tener una Versión de Excel superior a la 5, y bien instalada?", vbCritical, "Cálculo de
pago de Cuotas"
Case Else
MsgBox "Error #" + Str(Err.Number) + ":" + Err.Description + ".", vbCritical, "Cálculo de
pago de Cuotas"
End Select
Screen.MousePointer = vbDefault
End Function
En este ejercicio, vamos a hacer un efecto de texto en tres dimensiones, creando dos
procedimientos: recuadro y texto3d, usando las coordenadas y el método Print. El
código es:
Option Explicit
En este ejercicio vamos a trabajar con arreglos , simularemos un juego de cartas de dos
caras, la matriz o arreglo consta de 10 valores. No olvidena al ejecutarlo seleccionar una
opción para mostrar las cartas, o secuencial o aleatorio. El código es el siguiente:
En Option Explicit
Dim ladoA(1 To 10) As String
Dim ladoB(1 To 10) As String
Dim numcarta As Integer
Dim indice As Integer
Este ejercicio es una nueva versión del juego "Agárrame si puedes". Donde debemos
hacer Clic en una carita que se desplaza aleatoriamente por el formulario, dejando un
recuadro de color a su paso. El código es el siguiente:
Option Explicit
'Variables Globales
Dim puntaje As Integer
Dim contador As Integer
Dim dificultad As Integer
Dim menuchekeado As Menu