Curso Entrega 8:

En nuestra última entrega vamos a trabajar con un Programa Multimedia que nos permita abrir texto, sonido, imagen y video. Una especie de visor de canciones donde podremos ver el texto de una canción, una imagen relacionada, escuchar la canción, o ejecutar un pequeño video relacionada con la misma.

Antes de comenzar a diseñar el formulario lo primero que vamos a hacer es crear en el Bloc de Notas dos archivos, uno con listas de canciones, una imagen asociada a cada canción y un richtextfile grabado en word con la letra de la canción; y otro con lista de videos, y un richtextfile asociado a cada video. El de canciones se verá similar al siguiente texto:

C:\ARCHIVOS DE PROGRAMA\DEVSTUDIO\VB\CURSOMAIL\TANGO.MID,1,C:\ARCHIVOS DE PROGRAMA\DEVSTUDIO\VB\CURSOMAIL\BUENOSA.GIF,Tango,C:\ARCHIVOS DE PROGRAMA\DEVSTUDIO\VB\CURSOMAIL\TANGO.RTF


C:\ARCHIVOS DE PROGRAMA\DEVSTUDIO\VB\CURSOMAIL\GOKURAKU.MID,1,C:\ARCHIVOS DE PROGRAMA\DEVSTUDIO\VB\CURSOMAIL\GOKU.GIF,Gokuraku,C:\ARCHIVOS DE PROGRAMA\DEVSTUDIO\VB\CURSOMAIL\GOKU.RTF


C:\ARCHIVOS DE PROGRAMA\DEVSTUDIO\VB\CURSOMAIL\SENET.MID,1,C:\ARCHIVOS DE PROGRAMA\DEVSTUDIO\VB\CURSOMAIL\SENET.GIF,Senet,C:\ARCHIVOS DE PROGRAMA\DEVSTUDIO\VB\CURSOMAIL\SENET.RTF

Cada párrafo debe ir todo seguido en un mismo región, cuando hacemos un enter es que terminamos de definir todas las características de una canción, los datos a incluir son:

Nombre del Archivo, Tipo, Imagen relacionada, Título de la canción o video, texto relacionado

En nombre del archivo debemos incluir todo la ruta o camino y el nombre del archivo en este caso un Midid, luego separado por comas, en Tipo usaremos 1 para audio y 2 para video. En imagen relacionada también el camino completo a donde está la imagen, en título el que queremos que se muestre en la lista de canciones y en texto relacionado el camino del RTF que contiene la letra de la canción, hecho en Word.

Luego que preparamos las listas, en este caso use dos pero ustedes pueden agregar las que deseen, y que escribimos en el Word los archivos RTF. Pasamos a diseñar el Formulario, que se verá de la siguiente manera:

 

Como vemos en el formulario tenemos un RichTextBox que muestra la letra de las canciones (o sea despliega el archivo RTF, previamente creado en Word), una Imge que despliega la imagen, un ActiveMovie que despliega el video, un control List que despliega la lista de canciones o videos, un commondialog que nos permite seleccionar entre las distintas listas, un control multimedia que nos permite accinar los Midis de las canciones, y cinco botones: el del semáforo equivalente a Ejecutar o Play, el del hombrecito de Pausa, y el Stop de detener. Obvio que estos iconos los elegí rápidamente y no son los más adecuados, pero ustedes podrán mejorar el diseño de este reproductor multimedia, yo me concentre en la construcción de la aplicación y su código, sin esmerarme en el diseño visual. Los otros dos botones son los de Abrir luego de seleccionar un archivo de la lista y el de Salir que cierra el programa. Desde ya que tendrán que buscar dos o tres archivos Midis para activar y otros tantos videos para ejecutar.

El código es:

Option Explicit
Private archivo As String

'creamos una estructura de datos llamada canciones

Private Type Canciones
NombreArchivo As String 'ruta completa del archivo
Tipo As Byte '1para audio y 2 para video
Grafico As String 'si es audio contendra el grafico relacionado
Titulo As String 'titulo de la cancion
Texto As String 'texto relacionado
End Type
Dim ListaLC() As Canciones ' array dinamico
Dim indice As Integer ' variable del array dinamico
Dim a As Integer
Private Sub Command1_Click()
ActiveMovie1.Run
MMControl1.Command = "play"
End Sub

Private Sub Command2_Click()
ActiveMovie1.Pause
MMControl1.Command = "pause"

End Sub

Private Sub Command3_Click()
ActiveMovie1.Stop
MMControl1.Command = "close"
End Sub

Private Sub Command4_Click()

On Error GoTo operacioncancelada
CommonDialog1.CancelError = True
CommonDialog1.Filter = "Listas de canciones (*.txt) |*.txt"
CommonDialog1.FilterIndex = 1
CommonDialog1.Action = 1
archivo = CommonDialog1.filename
If archivo <> "" Then
crearlistacanciones
End If
Exit Sub
operacioncancelada:
archivo = ""

End Sub

Private Sub Command5_Click()
End
End Sub

Private Sub crearlistacanciones()

Open archivo For Input As #1
Do While Not EOF(1)
ReDim Preserve ListaLC(indice)
Input #1, ListaLC(indice).NombreArchivo, ListaLC(indice).Tipo, ListaLC(indice).Grafico, ListaLC(indice).Titulo, ListaLC(indice).Texto
List1.AddItem ListaLC(indice).Titulo
indice = indice + 1
Loop
Close #1
End Sub

Private Sub List1_Click()
MMControl1.filename = ListaLC(List1.ListIndex).NombreArchivo
ActiveMovie1.filename = ListaLC(List1.ListIndex).NombreArchivo
RichTextBox1.filename = ListaLC(List1.ListIndex).Texto
If ListaLC(List1.ListIndex).Tipo = 1 Then
MMControl1.DeviceType = "sequencer"
MMControl1.Command = "open"

Image1.Picture = LoadPicture(ListaLC(List1.ListIndex).Grafico)
ActiveMovie1.Visible = False
ActiveMovie1.Top = 8000 'lo esconde en el formulario
Image1.Visible = True
Else
Image1.Visible = False
ActiveMovie1.Left = 3720
ActiveMovie1.Top = 600
ActiveMovie1.Visible = True
End If
End Sub

Para activar el video usamos un control ActiveMovie, y cuando despliega imágenes lo corremos fuera del formulario para que no moleste y deje visible la Image que muestra la foto asociada a la canción, cuando ejecutamos video lo ubicamos en la posición de la Image y a esta la volvemos invisible.

Para la lista de las listas a desplegar creamos un array dinámico porque no sabemos cuantos ítems va a desplegar.

Y para despedirme les muestro un pequeño programa donde se combinan cambios en el puntero del mouse dando la sensación de agarrar y soltar cosas en distintos sitios, que asociados al evento Click nos permiten crear aventuras gráficas, donde se recogen objetos y luego se ubican en determinado lugar siguiendo una secuencia lógica. Va de ejemplo este pequeñísimo ejercicio. Se ve así:

 

En este formulario tenemos una label y tres pictures la 2 es la goma, la 3 el marcador(en el medio) y la 1 el lápiz.

La idea es que al hacer click en el lápiz quede en el puntero del mouse y así luego hacemos click en la label y aparece la palabra Tarea, como si la hubiésemos escrito, luego dejamos el lápiz haciendo Click en el Formulario, hacemos Click en la goma y luego en la label y se borra la palabra Tarea, y luego hacemos Click en el formulario y dejamos la goma. Y al hacer click en el marcador y tenerlo en el puntero del mouse hacemos Click en la Label y esta se vuelve roja, antes era color amarillo. El código es:

Option Explicit

Private Sub Form_Click()
If MouseIcon = Picture1.Picture Then ' aqui volvemos al puntero estandar
MousePointer = 0
Picture1.Visible = True
End If
If MouseIcon = Picture2.Picture Then
MousePointer = 0
Picture2.Visible = True
End If
If MouseIcon = Picture3.Picture Then
MousePointer = 0
Picture3.Visible = True
End If
End Sub

Private Sub Label1_Click()
If MouseIcon = Picture1.Picture Then ' si el puntero es el lápiz la label muestra la 'palabra Tarea en su caption.
Label1.Caption = "Tarea"
End If
If MouseIcon = Picture2.Picture Then ' si el puntero es la goma borra Tarea.
Label1.Caption = ""
Label1.BackColor = vbYellow ' fondo de la label amarillo
End If
If MouseIcon = Picture3.Picture Then ' si el puntero es el marcador el fondo se vuelve 'rojo
Label1.Caption = ""
Label1.BackColor = vbred

End If
End Sub

Private Sub Picture1_Click()'carga el icono del lapiz
MouseIcon = Picture1.Picture
MousePointer = 99
Picture1.Visible = False

End Sub

Private Sub Picture2_Click()'carga el icono en el puntero de la goma
MouseIcon = Picture2.Picture
MousePointer = 99
Picture2.Visible = False
End Sub

Private Sub Picture3_Click()'carga el icono en el puntero del marcador
MouseIcon = Picture3.Picture
MousePointer = 99
Picture3.Visible = False
End Sub

Bueno y esto es todo por ahora, este curso se volverá a repetir en enero y febrero, porque hay mucha gente que se inscribió luego de comenzado, ustedes son noventa y dos, y ya hay 85 personas más que desean hacerlo. Les agradezco el interés y espero haberles sido útil con alguno de los ejercicios. Nos mantendremos en contacto, ya que tengo pensado para comenzar el 2000, convocarlos a un Concurso de Aplicaciones hechas con Visual Basic y me gustaría que participen. Y también me gustaría conocer vuestra opinión sobre un pequeño curso para el próximo año sobre animaciones con Visual Basic. Ya que ese tema es mi debilidad, y me gratifica enormemente, hacerlas.

Un fuerte abrazo. Hasta siempre, y nuevamente Gracias por acompañarme.

Mirta

 

Entrega 1 - Entrega 2 - Entrega 3 - Entrega 4 - Entrega 5 - Entrega 6 - Entrega 7 - Entrega 8