Ir al contenido


Foto

[MediaPlayer] - ¿Cómo capturar que una canción ha terminado?


  • Por favor identifícate para responder
4 respuestas en este tema

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 12 diciembre 2008 - 08:06

Hola colegas a ver si alguien me ayuda con esto, estoy haciendo una vellonera, y en un DBGrid se va llenando una lista canciones, quisiera lograr lo siguiente, que cuando termine una canción se elimine del DBGrid (siempre es el primer registro) y tocar la siguiente en la lista (al eliminar la anterior ésta se convierte en el primer registro), éste es el código del Play :D :



delphi
  1. procedure TFMain.PngSpeedButton7Click(Sender: TObject);
  2. var Formato: String;
  3.     I: integer;
  4. begin
  5.  
  6. if meList.RecordCount > 0 then
  7.   begin
  8.  
  9. Progreso.MaxValue := 0;
  10.  
  11. meList.First;
  12. MediaPlayer1.Close;
  13. MediaPlayer1.FileName := meListRUTACA.AsString;
  14. Image1.Picture.LoadFromFile(meListIMAGEN.AsString);
  15. Formato := Copy(MediaPlayer1.FileName,Length(MediaPlayer1.FileName)-3,4);
  16. MediaPlayer1.Open;
  17.  
  18.  
  19. if (Formato = '.avi') or (Formato = '.wmv') or (Formato = '.mpg') then
  20.   begin
  21.     FMain.Image1.Visible := False;
  22.     MediaPlayer1.Display := Panel10;
  23.     MediaPlayer1.DisplayRect := Rect(0, 0, Panel10.Width, Panel10.Height);
  24.     MediaPlayer1.Play;
  25.   end else begin
  26.     Image1.Visible := True;
  27.     MediaPlayer1.Play;
  28.   end;
  29.  
  30.     Progreso.MaxValue := MediaPlayer1.Length;
  31.     Timer1.Enabled := True;
  32.  
  33.   end else begin
  34.     //Nada
  35.   end;
  36. end;



Y Aquí en el evento OnNotify del MediaPlayer intenté hacer lo que ando buscando pero no funciona:



delphi
  1. procedure TFMain.MediaPlayer1Notify(Sender: TObject);
  2. begin
  3. if MediaPlayer1.Mode = mpStopped then
  4.   Begin
  5.     MeList.First;
  6.     meList.Delete;
  7.     PngSpeedButton7Click(Sender);
  8.   end;
  9. end;



Saludos.
  • 0

#2 coso

coso

    Member

  • Miembros
  • PipPip
  • 12 mensajes
  • LocationEspaña

Escrito 13 diciembre 2008 - 06:09

Hola, lo primero que se me ocurre :



delphi
  1. MediaPlayer1.FileName := [b]Trim([/b]meListRUTACA.AsString);


  • 0

#3 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 13 diciembre 2008 - 10:35

Muchas gracias Coso, creo que no me hice entender bien, no es lo que busco, lo que trato de determinar es cuando una canción ha terminado y así correr la siguiente canción de la lista.

Saludos.
  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 14 diciembre 2008 - 10:10

Hola de nuevo, ya pude resolver el asunto, cambié el ProgressBar que tenía por un TrackBar, y coloqué este código en su evento OnChange:



delphi
  1. procedure TFMain.ProgresoChange(Sender: TObject);
  2. begin
  3. if Progreso.Position = MediaPlayer1.Length then
  4.   begin
  5.     meList.First;
  6.     meList.Delete;
  7.     meList.Last;
  8.     PngSpeedButton7Click(Sender);
  9.   end;
  10. end;



Me ha funcionado de Pelos, Gracias de nuevo a Chackall ;).

Saludos.
  • 0

#5 cHackAll

cHackAll

    Advanced Member

  • Moderador
  • PipPipPip
  • 598 mensajes

Escrito 14 diciembre 2008 - 08:18

...Me ha funcionado de Pelos, Gracias de nuevo a cHackAll ;)...


Para servirte.

Pido disculpas a la comunidad por no haber dado las ideas respectivas por el foro, sino por otro medio.

Saludos
  • 0