Вы находитесь на странице: 1из 53

Ejercicio Nº 15: Internet

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.

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.

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:

Private Sub Command1_Click() ' este control está oculto

If Text1.Text <> "" Then

WebBrowser1.Navigate Text1.Text

If WebBrowser1.Visible = False Then

WebBrowser1.Visible = True

End If

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.reocities.com/SiliconValley/Garage/6472"

Command1_Click

Case "refresh"
WebBrowser1.Refresh 'actualiza o refrezca

Case "stop"

WebBrowser1.Stop 'detiene la búsqueda

End Select

End Sub

Private Sub WebBrowser1_DownloadBegin()

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

End Sub

Private Sub WebBrowser1_DownloadComplete()

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

End Sub

Ejercicio Nº 17: 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)

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

End Sub

Los ejercicios Nº 17, 18 y 19 pueden bajarlos de Aquí.

Ejercicio Nº 18: 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


Label2.Caption = "Júpiter"

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

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

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

If satelite = "16" Then

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.

El proyecto final (incompleto) puede bajarse de Aquí.

Ejercicio Nº 19: 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 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.

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.

El ejercicio completo puede bajarse de Aquí

Ejercicio Nº 20: Vínculos.


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

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

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.

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

Dim contraseña As String

nombreusuario = InputBox("Introduzca su Nombre")

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

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

Ejercicio Nº 22: Esqueleto.


Bueno, ustedes ya
conocen el método de
arrastrar y soltar, pero
como a nosotros nos
gusta mucho, hemos
armado este pequeño
ejercicio, para armar un
esqueleto con sus
distintas partes. Espero
los motive para usarlo
adaptándolo a otras
imágenes.
El código ejemplo para una de las image que recibe la imagen del
cráneo arrastrado es:

Private Sub Image1_DragDrop(Source As Control, X As Single, Y As


Single)

If Source = Image9 Then

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:

Private Sub fin()

If Image9.Visible = False And Image10.Visible = False And


Image11.Visible = False And Image12.Visible = False And
Image13.Visible = False And Image14.Visible = False And
Image15.Visible = False And Image16.Visible = False Then

Beep

Label2.Caption = ""

Label1.Caption = "¡Ganaste!"

End If

End Sub

El ejercicio completo puede bajarse de Aquí.

Ejercicio Nº 23: 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í:

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

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:

Private Sub Form_Load()


mnuEntradas.Visible = False

mnuCalientes.Visible = False

mnuPostres.Visible = False

End Sub

El código del ejercicio puede bajarse de Aquí.

Ejercicio Nº 24: Print en el Form.


En este ejercicio usamos un Select case pero de una manera novedosa,
ya que nos permite seleccionar los colores del arco iris, sin enumerar
las opciones válidas, sino poniendo todas en una sola línea de código.
Al hacer click en el formulario se abre un inputBox que nos pregunta
¿qué color compone el arco iris?, y al introducir un texto y hacer click
en aceptar, con la intrucción Print nos da salida por el formulario un
mensaje que incluye al color elegido.
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í:
Private Sub Form_Click()

Dim msg As String, titulo As String

Dim color As String, colorArco As String

Beep

msg = "Introduzca un color."

titulo = " Cuestionario del Arco Iris."

color = InputBox(msg, titulo)

colorArco = LCase(color)

Select Case colorArco

Case "rojo", "naranja", "amarillo", "verde", "azul", "morado"

Print "Sí, el color "; color; " está en mí Arco Iris."

Case Else

Print "Lo siento, pero el color "; color; " no está en mí Arco Iris."

End Select

End Sub
El código del ejercicio completo puede bajarse de Aquí.

Ejercicio Nº 25: Control Multimedia.


Para poder ejecutar un archivo AVI usamos el Control MCI, es un
control multimedia que ya usamos para ejecutar archivos MIDI en otro
ejercicio, y que debemos traer de componentes.

Lo original de este
ejercicio es que el
archivo al ejecutarse no
lo hace en otra ventana,
sino en un control
Picture.

El código es el siguiente:

Private Sub video()

MMControl1.DeviceType = "AVIVideo"

MMControl1.filename = App.Path & "\ugachaka.Avi"

MMControl1.Command = "open"

MMControl1.hWndDisplay = Picture1.hWnd

MMControl1.Command = "play"

End Sub

Private Sub Command1_Click()

Call video

End Sub

Primero creamos un procedimiento llamado video y allí volcamos las


indicaciones de la ejecución, pero ¡Atención! Usamos la propiedad
Handle Window para manipular en que objeto se ejecuta el avi.
Windows identifica así que queremos que se despliegue en la picture, a
traves de la propiedad hWnd del control multimedia y de hWnd del
control Picture.

El código completo sin el AVI puede bajarse de Aquí.

Ejercicio Nº 26: 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 Single)

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


(Height - Command2.Height))

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.

El código del ejercicio pueden bajarlo de Aquí.

Ejercicio Nº 27: 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

Next dia

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

Text1(dia).Text = ""

Next dia

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.

El código completo del ejercicio podemos bajarlo de Aquí.

Ejercicio Nº 28: 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:

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

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


TXT

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.

El código completo puede bajarse de Aquí.

Ejercicio Nº 29: Rompecabezas.


En este ejercicio armaremos un rompecabezas con las partes del
esqueleto de un gato.
Los procedimientos
usados ya son
conocidos: Dragear y
soltar, uso de un
Control PictureClip y de
arrays de Imagenes
para cargar las partes
del rompecabezas.La
imagen de la aplicación
se parece a la siguiente:
Option Explicit

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

End

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 =
PictureClip1.GraphicCell(4) Image1(5).Picture =
PictureClip1.GraphicCell(2)

End Sub

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

El código completo puede bajarse de Aquí.

Ejercicio Nº 30: 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.

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

Private Sub

HScroll2_Scroll()

Text2.Text = HScroll2.Value

Text3.ForeColor = QBColor(HScroll2.Value)

End Sub

El código completo puede bajarse de Aquí.

Ejercicio Nº 31: 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

pb.ScaleWidth = 100

pb.DrawMode = 10

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

El código completo puede bajarse de Aquí.

Ejercicio Nº 32: Control Tab.


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.

La Aplicación puede bajarse de Aquí.

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 el archivo zipeado
de la Aplicación se
incluye el control
Anigif.OCX, Es
conveniente que lo
copien en el System de
Windows, si despues
quieren traerlo desde
Componentes. el
formulario se ve así.
La aplicación con el control pueden bajarse de Aquí.

Ejercicio Nº 34: Transición.

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

Public pc, i As Integer

Private Sub Command1_Click()

Do

DoEvents

TransFX1.Effect = i

TransFX1.Start

Set TransFX1.PicBuffer = LoadPicture(App.Path & "\" &_ CStr(pc) &


".jpg")

pc = pc + 1: If pc > 3 Then pc = 1 i = i + 1: If i = 13 Then i = 1 Loop

End Sub

Private Sub

Command2_Click()

End

End Sub

Private Sub Form_Load()

pc = 1

i=1

Set TransFX1.PicTarget = LoadPicture(App.Path & "\" &_ CStr(pc) &


".jpg")

Set TransFX1.PicBuffer = LoadPicture(App.Path & "\" &_ CStr(pc + 1) &


".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í.
Ejercicio Nº 35: Ranita.

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 Declare Function sndPlaySound Lib "winmm.dll" Alias


"sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As
Long) As Long

Const SND_ASYNC = &H1 ' reproducción asíncrona

Const SND_NODEFAULT = &H2 ' silencio no predeterminado, si no se


encuentra sonido

Private ret As Integer

Private contar As Integer

Private a As Integer

Private b As Integer

Private tiempo As Integer

Private Sub pausa()

Dim comenzar

Dim controlar

comenzar = Timer

Do Until controlar >= comenzar + 1

controlar = Timer
DoEvents

Loop

End Sub

Private Sub Form_Load()

Randomize b = 0

End Sub

Private Sub Image6_Click(Index As Integer) Image6(Index).Visible =


False

b = b + 10

If Image6(Index).Left >= 2600 Then

Image7.Visible = True

ret = sndPlaySound(App.Path & "\Frogs.wav", SND_ASYNC Or


SND_NODEFAULT)

ElseIf Image6(Index).Left <= 2600 Then

Image8.Visible = True

ret = sndPlaySound(App.Path & "\Frogs.wav", SND_ASYNC Or


SND_NODEFAULT)

End If

Call pausa

Image7.Visible = False

Image8.Visible = False

Label1.Caption = "Puntaje =" & b

Call ganar

Call perder

End Sub

Private Sub Label2_Click()

Unload Me

Me.Show
End Sub

Private Sub Timer1_Timer()

contar = contar + 1

If contar = 1 Then

Image1.Picture = Image3.Picture

Image2.Picture = Image3.Picture

ElseIf contar = 2 Then

Image1.Picture = Image4.Picture

Image2.Picture = Image4.Picture

ElseIf contar = 3 Then

Image1.Picture = Image3.Picture

Image2.Picture = Image3.Picture

ElseIf contar = 4 Then

Image1.Picture = Image5.Picture

Image2.Picture = Image5.Picture

contar = 0

End If

End Sub

Private Sub

Timer2_Timer()

Dim x As Integer, y As Integer

For a = 0 To 9

Image6(a).Move CInt(Rnd * (Width - Image6(a).Width)), CInt(Rnd *


(Height - 1600))

Next a

End Sub

Private Sub ganar()


If b = 100 Then

Label1.Caption = "¡¡GANASTE!!"

ret = sndPlaySound(App.Path & "\Fanfare.wav", SND_ASYNC Or


SND_NODEFAULT)

End If

End Sub

Private Sub perder()

If tiempo = 60 Then

Timer1.Enabled = False

Timer2.Enabled = False

Timer3.Enabled = False

Label1.Caption = "¡¡Perdiste!!"

ret = sndPlaySound(App.Path & "\desapa.wav", SND_ASYNC Or


SND_NODEFAULT)

End If

End Sub

Private Sub

Timer3_Timer() tiempo = tiempo + 1

Call perder

End Sub

Como vemos creamos tres procedimientos personalizados, ganar,


perder y pausa. El ejercicio completo puede bajarse de Aquí.

Ejercicio Nº 36: Patos.


Este es otro ejemplo de
animación usando el
método PaintPicture
combinado con el
control pictureClip y
aplicando las
constantes gráficas que
permiten transparentar
el fondo.
Option Explicit
Const SRCAND = &H8800C6

Const SRCINVERT = &H660046

Private Sub Form_Load()

PictureClip1.Rows = 3

PictureClip1.Cols = 3

PictureClip2.Rows = 3

PictureClip2.Cols = 3

End Sub

Private Sub Timer1_Timer()

Form1.Refresh

Dim x As Single, y As Single

Static imagenactual As Integer

Static imagenactual1 As Integer

Static xactual As Integer

Static xactual1 As Integer

If imagenactual > 5 Then

imagenactual = 3

If imagenactual < 2 Then

imagenactual = 2

If imagenactual1 > 2 Then

imagenactual1 = 0

If imagenactual1 < 0 Then

imagenactual1 = 0

If xactual > 1000 Then

xactual = 10

If xactual < 0 Then

xactual = 10
If xactual1 > 1000 Then

xactual = 1000

If xactual1 <= 0 Then

xactual1 = 1000

Form1.PaintPicture PictureClip2.GraphicCell(imagenactual), xactual,


120, , , , , , , SRCAND

Form1.PaintPicture PictureClip1.GraphicCell(imagenactual), xactual,


120, , , , , , , SRCINVERT

Form1.PaintPicture PictureClip2.GraphicCell(imagenactual1), xactual1,


250, , , , , , , SRCAND

Form1.PaintPicture PictureClip1.GraphicCell(imagenactual1), xactual1,


250, , , , , , , SRCINVERT

imagenactual = imagenactual + 1

imagenactual1 = imagenactual1 + 1

xactual = xactual + 100

xactual1 = xactual1 - 100

End Sub

El ejercicio completo puede bajarse de Aquí.

Ejercicio Nº 37: ¿Qué ves?.


Este es un juego de
mesa pero en su
version digital.
Declaramos un array
con un número
determinado de
palabras que seran
elegidas al azar, para
que no se repita
siempre el mismo
orden, la subrutina que
usamos es similar al del
juego memoria, luego
en un control de texto
ingresamos la palabra
indicada y
automáticamente nos
da un punto si es
correcta.
El código es el siguiente:

Option Explicit
Dim numero(1 To 20) As Integer

Dim I As Integer

Dim a As Integer

Dim J As Integer

Dim idxtemp As Integer

Dim s As Integer

Private Sub azar()

Static temparray(1 To 20) As Integer

Randomize

For I = 1 To 20 temparray(I) = I

Next I

Top = 20

For I = 1 To 20

idxtemp = Int(Top * Rnd + 1)

numero(I) = temparray(idxtemp)

For J = idxtemp To Top - 1

temparray(J) = temparray(J + 1)

Next J

Top = Top - 1

'Print numero(I)

Next I

End Sub

Private Sub Command1_Click()

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

Private Sub Command4_Click()

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

Private Sub mostrar()

Select Case Label1

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

Private Sub corregir()

Static puntos As Integer

Select Case Label1

Case 1

If UCase(Text1.Text) = "CARAMBOLA" Then

puntos = puntos + 1

Case 2

If UCase(Text1.Text) = "APRESADO" Then

puntos = puntos + 1

Case 3

If UCase(Text1.Text) = "APRENDER" Then


puntos = puntos + 1

Case 4

If UCase(Text1.Text) = "CAJÓN" Then

puntos = puntos + 1

Case 5

If UCase(Text1.Text) = "CAMPAÑA" Then

puntos = puntos + 1

Case 6

If UCase(Text1.Text) = "CANOSO" Then

puntos = puntos + 1

Case 7

If UCase(Text1.Text) = "CARACÚ" Then

puntos = puntos + 1

Case 8

If UCase(Text1.Text) = "CASINO" Then

puntos = puntos + 1

Case 9

If UCase(Text1.Text) = "CORAZONADA" Then

puntos = puntos + 1

Case 10

If UCase(Text1.Text) = "CUCHARITA" Then

puntos = puntos + 1

Case 11

If UCase(Text1.Text) = "DEMONIO" Then

puntos = puntos + 1

Case 12

If UCase(Text1.Text) = "DEPORTE" Then


puntos = puntos + 1

Case 13

If UCase(Text1.Text) = "DIARIO" Then

puntos = puntos + 1

Case 14

If UCase(Text1.Text) = "DUENDE" Then

puntos = puntos + 1

Case 15

If UCase(Text1.Text) = "AUSTRALIA" Then

puntos = puntos + 1

Case 16

If UCase(Text1.Text) = "FLORENCIA" Then

puntos = puntos + 1

Case 17

If UCase(Text1.Text) = "INGENIO" Then

puntos = puntos + 1

Case 18

If UCase(Text1.Text) = "REINO" Then

puntos = puntos + 1

Case 19

If UCase(Text1.Text) = "VATICANO" Then

puntos = puntos + 1

Case 20

If UCase(Text1.Text) = "SOLDADO" Then

puntos = puntos + 1

End Select

Label2.Caption = "PUNTOS: " & puntos If puntos >= 20 Then


Label2.Caption = "¡Ganaste!"

End If

End Sub

El ejercicio completo puede bajarse de Aquí.

Ejercicio Nº 38: Love.


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

Private Sub Command1_Click()

End

End Sub

Private Sub Timer1_Timer()

a=a+1

If a >= 7 Then

a=0

Picture1.Picture = Image1(a).Picture

End Sub

La aplicación completa puede bajarse de Aquí.

Ejercicio Nº 39: Mosaico de Fondo


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

Public Sub TileBitmap(Source As Object, _ Destination As Object)

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

Destination.ScaleHeight _ Step Source.ScaleHeight

For X = 0 To

Destination.ScaleWidth Step _ Source.ScaleWidth

Destination.PaintPicture _ Source.Picture, X, Y

Next 'X

Next 'Y

End Sub

Usamos el Método PaintPicture ya conocido en nuestras animaciones,


para copiar la imagen en el fondo del formulario. En un bucle anidado
For Next que repite el ancho y el alto de la imagen.

Luego lo convocamos desde el Formulario en el Click de un Array de


imagenes, que muestran distintas opciones de dibujo:

Private Sub picSource_Click(Index As Integer)

'Toma la imagen del array de controles y la copia en el formulario 'como


un mosaico repetido.

TileBitmap picSource(Index), Me

End Sub

Convoca al procedimiento público del Módulo y lo vuelca en el


Formulario activo o sea Me.
El ejercicio completo puede bajarse de Aquí.

Ejercicio Nº 40: Un Conejo Animado.


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 cone As Integer

Dim a As Integer

Private Sub Command1_Click()

Timer1.Enabled = True End

Sub Private Sub Command2_Click()

Timer1.Enabled = False

End Sub

Private Sub Form_Load()

PictureClip1.Cols = 6

PictureClip1.Rows = 1

PictureClip2.Cols = 6

PictureClip2.Rows = 1

End Sub

Private Sub Timer1_Timer()

Picture1.Refresh

Static x, y, i As Integer
cone = cone + 1

If cone >= 6 Then cone = 0

Picture1.PaintPicture PictureClip1.GraphicCell(cone), x, 50, , , , , , ,


SRCAND ' para la mascara Picture1.PaintPicture
PictureClip2.GraphicCell(cone), x, 50, , , , , , , SRCINVERT ' para la
imagen(animación)

x = x + 60

If x >= 570 Then x = 0

End If

End Sub
El ejercicio completo puede bajarse de Aquí. Gracias Nora.

Ejercicio Nº 41: Método Draw.


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.
Esta animación podemos activarla manualmente con el Click de un
botón o, automáticamente con el Click de otro botón que activa a su vez
un Timer. Veamos el código:

Private Sub Command1_Click()'el botón Automático

Timer1.Enabled = True

End Sub

Private Sub Command2_Click()

Static flag As Integer

Timer1.Enabled = False

flag = flag + 1
If flag > 2 Then

flag = 1

End If

Picture1.Refresh ' refresca el fondo de la Picture

' El metodo draw en accion

ImageList1.ListImages(flag).Draw Picture1.hDC, 250, 950,


imlTransparent

End Sub

Private Sub Timer1_Timer()

Static flag As Integer

flag = flag + 1 If flag > 2

Then flag = 1

End If

Picture1.Refresh

' El método draw en acción

ImageList1.ListImages(flag).Draw Picture1.hDC, 250, 950,


imlTransparent

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.
El ejercicio completo puede bajarse de Aquí.

Ejercicio Nº 42: ScrollBar y Código ASCII


Option Explicit

Private Sub
HScroll1_Change()

Label3.Caption =
Format$(HScroll1.Value)

Label4.Caption =
Chr$(HScroll1.Value)

End Sub
El ejercicio completo puede bajarse de Aquí.

Ejercicio Nº 43: Simulación


Este ejercicio de
simulación contiene un
listado de posibles
palabras contenidas
dentro de la respuesta a
las preguntas de un
Psicólogo virtual, y
simula esta relación en
un diálogo entre doctor
y paciente.
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

Dim contar As Integer

Dim palabra As Integer

Dim frase As String

Dim pepe As String

Dim a As Integer Private

Sub pausa()

Dim comenzar

Dim chequeo

comenzar = Timer

Do Until chequeo >= comenzar + 1

chequeo = Timer

DoEvents

Loop

End Sub

Private Sub Command1_Click()

End
End Sub

Private Sub Form_Activate()

RichTextBox1.SetFocus

End Sub

Private Sub Form_Load()

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 "¿por que?"

List1.AddItem "se"

List1.AddItem "adios"

List1.AddItem "odio"

List1.AddItem "amor"

List1.AddItem "asesino"

List1.AddItem "matar"

List1.AddItem "grosero"
List1.AddItem "no puedo"

List1.AddItem "fracaso"

List1.AddItem "nunca"

List1.AddItem "infeliz"

'Text1.Text = List1.List(3)

End Sub Private

Sub frasedoctor()

frase = Int(Rnd * 8)

Select Case frase

Case 0

Label1.Caption = "¿Cómo está Ud.?"

Case 1

Label1.Caption = "¿Cuál es su estado de ánimo?"

Case 2

Label1.Caption = "¿Tuvo Ud. una infancia feliz?"

Case 3

Label1.Caption = "¿Es feliz con el medio que lo rodea?"

Case 4

Label1.Caption = "¿Tiene problemas para relacionarse?"

Case 5

Label1.Caption = "¿Odia Ud. a su padre?"

Case 6

Label1.Caption = "¿Cree que no lo comprenden?"

Case 7

Label1.Caption = "Yo no estoy seguro de entenderlo"

End Select

End Sub
Private Sub respuestadoctor()

palabra = 0

If palabra >= 0 Then

For a = 0 To 24

pepe = List1.List(a) palabra = RichTextBox1.Find(pepe, palabra + 1, , 2)


pepe = RichTextBox1.SelText

Next a

End If

'Print pepe

RichTextBox1.Text = ""

Call respuestapaciente

End Sub

Private Sub

Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y


As Single)

Call respuestadoctor

End Sub

Private Sub

RichTextBox1_Click()

RichTextBox1.Text = ""

End Sub

Private Sub respuestapaciente()

Select Case pepe

Case "tu"

Label1.Caption = "No hablemos de mi."

Case "te"

Label1.Caption = "Dejemos de hablar de mi."

Case "pienso"
Label1.Caption = "¿Por qué piensa eso?"

Case "bien"

Label1.Caption = " Me alegra, cuénteme sobre Ud."

Case "regular"

Label1.Caption = "Entiendo, Cuenteme sobre Ud."

Case "¿que"

Label1.Caption = "¿Por qué pregunta Ud.?"

Case "quiero"

Label1.Caption = "¿Por qué quiere usted eso?"

Case "deprimido"

Label1.Caption = "¿Qué lo deprime?"

Case "sin"

Label1.Caption = "Entiendo. ¿Cree que lo puede remediar?"

Case "¿por que"

Label1.Caption = "Recuerde, la terapia es buena para Ud."

Case "dificil"

Label1.Caption = "No se preocupe, ya cambiarán las cosas."

Case "esperar"

Label1.Caption = "Tenga algo de paciencia."

Case "necesito"

Label1.Caption = "Todos necesitamos cosas."

Case "se"

Label1.Caption = "¿Como sabe Ud. eso?"

Case "odio"

Label1.Caption = "El odio nunca conduce a nada bueno"

Case "amor"

Label1.Caption = "Es importante amar"


Case "asesino"

Label1.Caption = "No me gusta la gente que mata"

Case "matar"

Label1.Caption = "No esta bien matar"

Case "grosero"

Label1.Caption = "¡No esta bien que me hable así!"

Case "no puedo"

Label1.Caption = "No sea negativo, sea positivo"

Case "fracaso"

Label1.Caption = " Debe luchar por el exito"

Case "nunca"

Label1.Caption = "No sea negativo, sea positivo"

Case "infeliz"

Label1.Caption = "¿Por que es infeliz?"

Case "adios"

Label1.Caption = "Le enviaré la factura. Gracias."

RichTextBox1.Locked = True

Beep

Call pausa

End Case

Else

Call frasedoctor

End Select

End Sub

El código completo puede bajarse de AQUÍ.

Ejercicio Nº 44: Alarma


El siguiente ejercicio nos permite crear un recordatorio de tareas,
mientras estamos trabajando con la computadora y tenemos este
programa activado, podemos quedarnos tranquilos de que nos avisa a
determinada hora, si estamos en una clase nos permite programar el
tiempo de tarea de los alumnos, por ejemplo. En tiempo de ejecución se
ve así:
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.
Al cumplirse la condición despliega un MsgBox con el mensaje que
ingresamos, y mientras se mantiene minimizada la aplicación para que
podamos seguir trabjando con otros programas.

El código es :

Option Explicit

Dim recordar As String

Dim horaActual As Date

Private Sub Command1_Click()

Timer1.Enabled = True

Me.WindowState = 1

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub

Form_Activate()

Text1.SetFocus

End Sub

Private Sub

Timer1_Timer()
horaActual = Format(Time, "hh:mm")

If horaActual >= Text1.Text Then

Beep

recordar = MsgBox(Text2.Text, vbInformation, "Alarma")

Timer1.Enabled = False

Form1.WindowState = 0

End If

End Sub

El código completo puede bajarse de AQUÍ.

Ejercicio Nº 45: Artista


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.
El código del ejercicio es:

Option Explicit

Private Sub Command1_Click()

Dim x As Integer

Dim y As Integer

Dim color As Integer

Dim i As Integer

For i = 1 To 20

x = Int(ScaleWidth * Rnd)

y = Int(ScaleHeight * Rnd)

color = Int(16 * Rnd)


PSet (x, y), QBColor(color)

Next

End Sub

Private Sub

Command2_Click()

Cls

End Sub

Private Sub Command3_Click()

Form1.PrintForm

End Sub

Private Sub Form_Load()

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.

El ejercicio completo pueden bajarlo de AQUÍ.

Ejercicio Nº 46: Figuras


En este ejercicio vamos
a ver otros métodos
gráficos de Visual
Basic, que
complementan el Punto
visto es el ejemplo
anterior. Veremos
Círculos, Rectángulos y
Líneas. Abrimos un
nuevo formulario e
insertamos 8 botones:
1)Borrar o Limpiar
Formulario, 2)Rectas,
3)Rectángulos, 4)Rect
Rellenos, 5)Círculos,
6)Círculos Rellenos,
7)Puntos, y 8)Imprimir.
En tiempo de ejecución
se ve así:
La declaración general de variables y el código para cada botón es:

Option Explicit

Dim x, y, r As Integer

Dim x1 As Integer, y1 As Integer

Dim x2 As Integer, y2 As Integer

Dim color As Integer

Dim ccolor As Integer

Private Sub Command1_Click()'Botón Rectas

'puntos extremos y color aleatorio

x1 = Fix(Me.ScaleWidth * Rnd)

y1 = Fix(Me.ScaleHeight * Rnd)

x2 = Fix(Me.ScaleWidth * Rnd)

y2 = Fix(Me.ScaleHeight * Rnd)

color = Fix(16 * Rnd) Randomize

'trazar una recta

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

Private Sub Command2_Click() 'Botón Imprimir por Impresora.

Me.PrintForm

End Sub

Private Sub Command3_Click() 'Botón Rectángulo

x1 = Fix(Me.ScaleWidth * Rnd)

y1 = Fix(Me.ScaleHeight * Rnd)

x2 = Fix(Me.ScaleWidth * Rnd)

y2 = Fix(Me.ScaleHeight * Rnd)

color = Fix(16 * Rnd)'elige al azar un color


Randomize FillStyle = 1

'dibuja un cuadro(B)

Line (x1, y1)-(x2, y2), QBColor(color), B

End Sub

Private Sub Command4_Click() 'Botón Rectángulo relleno

x1 = Fix(Me.ScaleWidth * Rnd)

y1 = Fix(Me.ScaleHeight * Rnd)

x2 = Fix(Me.ScaleWidth * Rnd)

y2 = Fix(Me.ScaleHeight * Rnd)

color = Fix(16 * Rnd)Randomize

'dibuja un cuadro(B)

Line (x1, y1)-(x2, y2), QBColor(color), BF

End Sub

Private Sub Command5_Click() 'Borra o Limpia Formulario

Cls

End Sub

Private Sub Command6_Click() 'Botón Círculo relleno

'coordenadas del Centro, Radio y Color, aleatorias

x = Fix(Me.ScaleWidth * Rnd)

y = Fix(Me.ScaleHeight * Rnd)

r = Fix(1000 * Rnd)

color = Fix(16 * Rnd)

Randomize

FillStyle = 1'rellena el círculo

'dibuja una circunferencia

Circle (x, y), r, QBColor(color)

End Sub
Private Sub Command7_Click() 'Botón Círculo

x = Fix(Me.ScaleWidth * Rnd)

y = Fix(Me.ScaleHeight * Rnd)

r = Fix(1000 * Rnd)

color = Fix(16 * Rnd)

ccolor = Fix(16 * Rnd)

Randomize

FillStyle = 0

FillColor = QBColor(ccolor)

'dibuja una circunferencia

Circle (x, y), r, QBColor(color)

End Sub

Private Sub Command8_Click() 'Botón Puntos

Randomize

x = Fix(Me.ScaleWidth * Rnd)

y = Fix(Me.ScaleHeight * Rnd)

color = Fix(16 * Rnd)

PSet (x, y), QBColor(color) 'Dibuja Puntos

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

Вам также может понравиться