· ¿Cuál es el control utilizado en Visual Basic.net para esta
función?
Dim tiempo As DateTime ' para el tiempo transcurrido
Private Sub frmPlayer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Top = 80 ' posición y del formulario
Me.Left = (Screen.PrimaryScreen.WorkingArea.Width - Me.Width) \ 4 ' posición x del formulario
btPlay.Enabled = False
End Sub
' Para abrir el cuadro de diálogo
Private Sub btAbrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btAbrir.Click
abrirArchivo()
End Sub
' Mostrar información de la canción al cambiar el estado del reproductor (PlayStateChange)
' al tener inicio automático, simplemente con elegir un archivo ya cambia el estado de reproducción
Private Sub ocxPlayer_PlayStateChange(ByVal sender As Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles ocxPlayer.PlayStateChange
tiempo = DateTime.Now ' para empezar a contar el tiempo
' vaciar la información de la canción anterior
lbTitulo.Text = ""
lbTituloa.Text = "Reproducción en curso:"
lbAutor.Text = ""
lbAutora.Text = "Autor"
' dependiendo del estado del reproductor
Select Case e.newState
Case WMPLib.WMPPlayState.wmppsPlaying ' si reproduciendo
btStop.Enabled = True
btPlay.Enabled = False
btPrev.Enabled = True
btNext.Enabled = True
lbTituloa.Text = "Reproducción en curso:"
lbTitulo.Text = ocxPlayer.currentMedia.getItemInfobyType("title", "", 0) ' título
lbAutora.Text = "Autor:"
lbAutor.Text = ocxPlayer.currentMedia.getItemInfobyType("author", "", 0) ' autor
' para mostrar la duración de la canción
Dim minutos As Integer
Dim segundos As Integer
minutos = ocxPlayer.currentMedia.duration \ 60 ' división entera entre la duración en segundos y 60
' resto entre la duración total y el resultado de la división entera anterior
segundos = ocxPlayer.currentMedia.duration - (minutos * 60)
lbTotal.Text = Format(minutos, "00") & ":" & Format(segundos, "00")
Timer1.Enabled = True ' iniciar el temporizador para cronometrar la canción
Timer1.Start()
Case WMPLib.WMPPlayState.wmppsStopped ' si detenido
btStop.Enabled = False ' desactivar botón Stop
btPlay.Enabled = True ' activar botón Play
btPrev.Enabled = False
btNext.Enabled = False
Timer1.Stop() ' detener temporizador
Timer1.Enabled = False
lbTotal.Text = ""
lbTime.Text = ""
End Select
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
' Código para el cronómetro del tiempo del programa
Dim Minutos, Segundos As Integer ' variables para mostrar el tiempo
' variable Segundos = diferencia en segundos entre una hora y la hora actual
Segundos = DateDiff(DateInterval.Second, tiempo, DateTime.Now)
Minutos = Segundos \ 60
Segundos = Segundos - (Minutos * 60) ' para que no supere 59
' presentación formateada del tiempo transcurrido
lbTime.Text = Format(Minutos, "00") & ":" & Format(Segundos, "00")
End Sub
' Botón de Play
Private Sub btPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btPlay.Click
ocxPlayer.Ctlcontrols.play() ' reproducir
End Sub
' Para tocar la canción anterior
Private Sub btPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btPrev.Click
ocxPlayer.Ctlcontrols.previous() ' anterior
End Sub
' Para tocar la siguiente canción
Private Sub btNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btNext.Click
ocxPlayer.Ctlcontrols.next() ' siguiente
End Sub
' Botón que detiene el reproductor
Private Sub btStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btStop.Click
ocxPlayer.Ctlcontrols.stop() ' detener reproducción
End Sub
' Para cerrar el formulario
Private Sub btCerrar_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btCerrar.Click
'End
Close()
End Sub
' --- PROCEDIMIENTO PARA SER UTILIZADO
Private Sub abrirArchivo() ' procedimiento para abrir un archivo
' presentar al usuario un cuadro de diálogo
Dim openFile As New OpenFileDialog
' mostrar solamente archivos M3U y MP3
openFile.Filter = "Listas de canciones (*.m3u)|*.m3u|Archivos Mpeg Layer 3 (*.mp3)|*.mp3"
' si elegimos algún archivo
If openFile.ShowDialog() = DialogResult.OK Then
' abrir el archivo elegido en el reproductor
ocxPlayer.URL = openFile.FileName
End If
End Sub
' Para mostrar el segundo formulario con el código
Private Sub lbCode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbCode.Click
Dim code As New Form2 ' crear una nueva instancia de la clase formulario
code.ShowDialog() ' mostrar el formulario
End Sub
Con este programa reproduzco de manera habitual listas de MP3 creadas desde Winamp o el propio Windows Media Player 9. Las clases utilizadas tienen muchas características no empleadas aquí, entre ellas manejo y edición de Playlists, obtención de mayor información sobre el archivo reproducido, etc. Programadores con más experiencia podrían hacer un programa mucho más completo, aquí solamente se ha intentado mostrar cómo, sin necesidad de tener conocimientos avanzados en Visual Basic .NET, es factible crear aplicaciones a priori tan
complejas como un reproductor de archivos multimedia.
¿Cómo
utilizar el control de Windows Media Player en VB.NET?
Este
código fuente para descargar, usa el control Windows Media para reproducir
archivos de multimedia ( Mp3, Wav, Avi, Mpg etc..)
Tiene
un menú de reproducción para usar los comandos básicos ( Play, Stop, Pause,
Atrás, adelante )
Tiene
otro menú con algunas otras opciones : para establecer el estilo de
visualización del control ( Compacto, invisible, completo, hacer un Stretch del
video ), para establecer el volumen , mute, hacer un Loop.
Tiene
otro formulario para añadir un PlayList o lista de reproducción simple nada del
otro mundo . ( usando los objetos o colecciones currentPlaylist y
mediaCollection )
Lista
También
tiene otro form, que visualiza en un ListView con dos columnas ( Atributo /
valor ), con los datos del archivo de medios que se está reproduciendo
actualmente, por ejemplo :
·
El author ( atributo Author )
·
El título ( Atributo Title )
·
La ruta ( Source Url )
·
La duración ( Duration )
·
El bitrate ( Atributo Bitrate )
·
El tamaño del archivo ( Filesize )
·
El tipo si es Audio / Video (
MediaType )
·
El formato ( FileType )
·
.. varios otros datos
Todos
esta información, accediendo mediante la colección currentMedia, usando los
métodos getAttributeName y getItemInfo para recuperar dichos valores
Por
último, tiene un Statusbar, con dos paneles, en uno se visualiza el estado
actual del archivo que se está Reproduciendo ( si está detenido, si está en
play etc... ), y otro panel para ver el tipo de medio (Audio / vídeo )
Se
le pueden agregar muchas opciones, por ejemplo, agregarle código hacia el playlist , ponerle controles de
reproducción propios, etc..
Nota:
en el ejemplo, para abrir y cargar un archivo para la reproducción, se crea una
lista de reproducción. Pero si no es necesario manejar un playlist , se puede
cargar un archivo y reproducirlo, usando la propiedad Url , e indicándole el
path , por ej :
WindowsMediaPlayer1.URL = "c:\a.mp3"
CONTROL SS- TAB
El
Control Tabbed Dialog, también denominado SStab, que es muy similar al que nos
presenta el cuadro de diálogo de propiedades de pantalla de windows cuando
presionamos el botón derecho en el escritorio, consta de una interface con
"pestañas", en la que cada una de ellas nos sirve para mostrar
una opción determinada.
Cada
pestaña puede contener sus propios controles y es una buena opción para
presentar interfaces de una forma organizada. Cada pestaña actúa como
contenedor de los controles que insertamos
Para
incorporarlo a un proyecto lo debemos agregar o añadir bajo el nombre de Microsoft
Tabbed Dialog control 6.0 desde la opción agregar componentes del
menú de Visual Basic como muestra el siguiente gráfico:
Ventana
de componentes de Visual basic
Una
ves añadido el control , se visualizará con el siguiente ícono:
Página de propiedades
Para
acceder a las propiedades mas importantes del SStab , podemos utilizar el
cuadro de diálogo "Custom" o personalizado, desde la ventana
de propiedades de visual basic.
O
también para acceder a dicha ventana podemos seleccionar el Tabbed Dialog y con
el botón derecho elegir la opción Propiedades
En
cada pestaña del control podemos colocar controles y estos funcionarán de
manera normal, como lo hacen siempre, y al colocarlos en cada pestaña estarán contenidos
dentro de estas.
Para
insertar un control dentro de una pestaña solo hay que dibujarlo dentro y ya
quedará contenido, de igual manera a como se hace en un control PictureBox por
ejemplo.
Apenas
insertamos el TabbedDialog en el formulario, este presenta 3 pestañas por
defecto.
Para agregar o especificar la cantidad de Tabs que queremos utilizar
para el , se puede hacer desde el cuadro de diálogo "Custom" en la
opción "contador" como está en la imagen:
También
se puede especificar las pestañas a utilizar, desde la ventana de propiedades
de Visual Basic en la propiedad "Tabs" indicando un valor
numérico para el mismo.
importanete:
Si nosotros hemos agregado pestañas al control y le hemos insertado controles a
alguna de ellas y luego queremos eliminar alguna pestaña, hay que anteriormente
retirar los controles de las pestañas o eliminarlos, ya que si están contenidos
no lo permite.
3 - Propiedad Orientation y Style
Estas
son dos propiedades importantes referidas al aspecto gráfico del Tabbed Dialog
y a su disposición.
Propiedad Style
Esta
puede tener 2 valores, ssStylePropertyPage o ssStyleTabbedDialog
Una
vista de estas 2 propiedades:
La propiedad Orientation
Establece
la orientación y disposición de las pestañas en el control, es decir la
alineación.
Los
valores que puede tener son ssTabOrientationTop (pestañas arriba),
ssTabOrientationLeft (Izquierda), ssTabOrientationRight (derecha) y
ssTabOrientationBottom (abajo)
Una
vista de estas de estas cuatro opciones:
4 - Otras propiedades del Tabbed Dialog
TabsPerRow
Devuelve
o establece el número de fichas de cada fila de un control SSTab.
Puede
usar esta propiedad junto con la propiedad Tabs en tiempo de diseño para
determinar el número de filas que aparecen en el control. En tiempo de
ejecución, utilice la propiedad Rows.
TabHeight
Devuelve
o establece el alto de todas las fichas de un control SSTab.
TabMaxWidth
Devuelve
o establece el ancho máximo de cada ficha
Nota
: Cuando el valor de la propiedad Style es ssStyleTabbedDialog y el de
TabMaxWidth es cero (0), el control SSTab ajusta automáticamente el tamaño de
las fichas, según el valor de la propiedad TabsPerRow, para ajustarlas por igual
al control.
Si
selecciona el valor ssStylePropertyPage en la propiedad Style, se pasará por
alto la propiedad TabMaxWidth. En este caso, el ancho de cada ficha se ajusta
automáticamente a la longitud del texto de la propiedad TabCaption.
WordWrap
Devuelve
o establece un valor que indica si el texto de cada ficha continúa en la línea
siguiente cuando es demasiado largo y no cabe horizontalmente en una ficha de
un control tabbed dialog.
Comentarios
Puede
usar la propiedad WordWrap para determinar la forma en que el control SSTab
muestra el texto en cada ficha. Por ejemplo, en un cuadro de diálogo con fichas
que se modifica dinámicamente, el texto también puede cambiar. Para asegurarse
de que no se truncará si es demasiado largo, establezca la propiedad WordWrap a
True, la propiedad TabMaxWidth a cero (0) y la propiedad TabHeight a un alto
que permita ver el texto más largo posible.
ShowFocusRect:
Establece
mediante True o False si se dibuja un recuadro punteado en el tab cuando este
tiene el foco
Picture
establece
un gráfico para los Tabs
Comentarios
En
tiempo de diseño puede establecer la propiedad Picture de una ficha si hace
clic en ella y después establece la propiedad en la ventana Propiedades. En
tiempo de ejecución puede establecer la propiedad Picture con la función
LoadPicture o con la propiedad Picture de otro control o de otro objeto Form.
Puede convertir cualquier ficha en la ficha activa si establece la propiedad
Tab.
Al
establecer la propiedad Picture en tiempo de diseño, el gráfico se guarda y se
carga con el objeto Form que contiene el control SSTab. Si crea unarchivo
ejecutable, el archivo contendrá la imagen. Al cargar un gráfico en tiempo de
ejecución, el gráfico no se guarda con laaplicación.
Establecer
la propiedad Picture afecta al valor de la propiedad TabPicture de la ficha
actual y además aparece la imagen correspondiente en la ficha activa.
Ejemplo
Private Sub
Command1_Click()
SSTab1.Picture = LoadPicture("ruta de la
imagen ")
End Sub
TabCaption:
Comentarios
En
tiempo de diseño, puede establecer la propiedad TabCaption si hace clic en una
ficha y establece la propiedad Caption en la ventana Propiedades. También puede
seleccionar (Custom) en la ventana Propiedades y establecer la propiedad
TabCaption en la ficha General del cuadro de diálogo Propiedades.
En
tiempo de ejecución puede leer o cambiar el título de cualquier ficha mediante
la propiedad TabCaption. También puede usar la propiedad Caption para cambiar
la propiedad TabCaption sólo para la ficha activa.
Puede
usar la propiedad TabCaption para asignar a una ficha unatecla de acceso. En el
valor de TabCaption, incluya el símbolo & inmediatamente antes del carácter
que desea designar como tecla de acceso. Ese carácter aparecerá subrayado.
Presione la tecla ALT y el carácter de subrayado para que la ficha pase a ser
la ficha activa. Para incluir un símbolo & en el título sin crear una tecla
de acceso, escriba dos símbolos seguidos (&&). En el título sólo
aparecerá uno y no habrá ningún carácter subrayado.
Tab
Comentarios
La
ficha actual se coloca en primer plano y pasa a ser la ficha activa.
Normalmente,
el usuario de la aplicación hará clic en una ficha para convertirla en la ficha
activa. Sin embargo, puede que tenga que seleccionarla en el código. Por
ejemplo, puede que desee que cierta ficha sea la activa cada vez que se muestre
un cuadro de diálogo determinado en la aplicación. Si abandona el cuadro de
diálogo mediante el método Hide del objeto Form, la última ficha que estaba
activa al ocultar el Form seguirá siendo la ficha activa cuando aparezca de
nuevo el cuadro de diálogo. Puede establecer la propiedad Tab del control SSTab
para que esté activa la misma ficha cada vez que aparezca el cuadro de diálogo.
Ejemplo
Este
ejemplo hace que la ficha activa sea siempre la primera ficha del control SSTab
justo antes de mostrar el formulario que contiene el control. Para probar este
ejemplo, cree dos objetos Form. Coloque un control CommandButton en el Form1 y
un control SSTab en el Form2. Pegue el código en el evento Click del control
CommandButton del Form1 y después ejecute el ejemplo.
Private Sub
Command1_Click()
Form2.SSTab1.Tab = 1
Form2.Show
End Sub
Rows
Devuelve
el número de filas de fichas
Comentarios
El
número de filas del control SSTab se especifica en tiempo de diseño mediante
las propiedades Tabs y TabsPerRow.
TabEnabled
Determina
si el Tab especificado está habilitado o deshabilitado
Comentarios
Cuando
una ficha está desactivada, su texto aparece atenuado y el usuario no puede
seleccionarla.
La
propiedad TabEnabled activa o desactiva una única ficha. Para activar o
desactivar todo el control SSTab, utilice la propiedad Enabled.
TabVisible:
Determina
si el Tab especificado estará visible o no
Comentarios
La
propiedad TabVisible muestra u oculta una única ficha. Puede usar la propiedad
Visible para mostrar u ocultar todo el control SSTab.
Para
establecerle un gráfico a un Tab, solo hay que seleccionar la pestaña que
queremos y desde la ventana de propiedades seleccionar Picture y elegir el
archivo gráfico.
Si
quisiéremos hacerlo en tiempo de ejecución, podríamos hacerlo de esta forma
refiriendonos a la propiedad TabPicture:
Private Sub Command1_Click()
'Le pasamos a la propiedad tabPicture el índice del tab.
El_SSTab.TabPicture(0) = LoadPicture(App.Path & "\imagen.ico")
End Sub
'Le pasamos a la propiedad tabPicture el índice del tab.
El_SSTab.TabPicture(0) = LoadPicture(App.Path & "\imagen.ico")
End Sub
Nota:
también podríamos establecer gráficos a cada Tab en tiempo de ejecución que
están cargados en un control ImageList.
Aquí
cuando se presiona un Command1 se le establece el texto "Datos" al
primer Tab, es decir el tab que tiene el índice número 0.
Private Sub Command1_Click()
'Le pasamos a la propiedad TabCaption el índice del tab y le asignamos un texto
SSTab1.TabCaption(0) = "Datos"
End Sub
'Le pasamos a la propiedad TabCaption el índice del tab y le asignamos un texto
SSTab1.TabCaption(0) = "Datos"
End Sub
Agregar
un Tabbed Dialog llamado SSTab1, Colocar un Command1 y un Text1 en el
formulario.
Luego
cada ves que presiones el Command1, se agregará un nuevo Tab en tiempo de
ejecución con el texto que se haya ingresado en el control Text1
Código
fuente en el formulario
Private Sub Command1_Click()
Call Agregar(Text1)
End Sub
Private Sub
Agregar(Texto_Tab As String)
SSTab1.Tabs = SSTab1.Tabs + 1
SSTab1.TabCaption(SSTab1.Tabs - 1) =
Texto_Tab
End Sub
Private Sub
Form_Load()
SSTab1.Tabs = 1
End Sub
·
Click: Ocurre cuando el usuario
presiona y suelta un botón del mouse sobre el control
·
DblClick: Ocurre al presionar y
soltar un botón del mouse, y volver a presionarlo y soltarlo sobre el control
·
GotFocus: Ocurre cuando el mismo
recibe el enfoque
·
LostFocus: Ocurre cuando el control
pierde el enfoque
·
MouseDown: Ocurre cuando el usuario
presiona el botón del mouse mientras el control tiene el enfoque
·
MouseMove: Se ejecuta cuando se mueve
el mouse sobre el Sstab
·
MouseUp: Se ejcuta al soltar el botón
del mouse cuando tiene el enfoque
·
Validate: Ocurre cuando el control
pierde el enfoque en favor de un control que produce una validación, en este
caso del Sstab
Como
se ve en la descripción anterior, este no posee ningún evento propio, es decir
tiene los eventos comunes que poseen la mayoría de los controles
Lo
único que difiere, es el evento Click, en el cual posee un parámetro extra llamado
PreviousTab
Private Sub
SSTab1_Click(PreviousTab As Integer)
End Sub
End Sub
Al
hacer Click en el control, este parámetro nos devuelve el Tab anterior al cual
se hizo click.
El
siguiente ejemplo obtiene el Caption del Tab en el cual se hizo click ( Tab
Activo ), y lo visualiza en la barra de título del formulario:
Private Sub
SSTab1_Click(PreviousTab As Integer)
'Visualiza en la barra de título del form el
caption _
del Tab
activo
Me.Caption =
SSTab1.TabCaption(SSTab1.Tab)
End Sub
El
siguiente ejemplo, coloca en tiempo de ejecución, un control TextBox que se
encuentra fuera del control SSTab, y lo hace en la ficha activa del mismo,
utilizando la propiedad Container del textBox:
Private Sub Command1_Click()
' Coloca el Text1 en el tab activo
Set Text1.Container = SSTab1
' Redimensiona el control Text1 y lo posiciona
Text1.Move
50, SSTab1.TabHeight + 100, _
SSTab1.Width - 100, _
SSTab1.Height - SSTab1.TabHeight -
200
End Sub
Este
ejemplo, cuando se cambia de tamaño el Form, redimensiona y posiciona el
control Tabbed dialog al ancho y alto que tenga el Form. También se
redimensiona un control TextBox que se encuentra dentro de uno de los Tabs
Colocar
un sstab y un Textbox dentro de un Tab
Private Sub Form_Resize()
' Posiciona y redimensiona el Sstab al ancho y alto
del Fomulario
SSTab1.Move
10, 10, ScaleWidth - 10, ScaleHeight - 10
' Posiciona y
redimensiona el TextBox
Text1.Move
50, SSTab1.TabHeight + 100, _
SSTab1.Width - 100, _
SSTab1.Height - SSTab1.TabHeight -
200
End Sub
_________________________________________________________________________________
_________________________________________________________________________________










No hay comentarios:
Publicar un comentario