Boucle avec TmsMediaPlayer

Résolu
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 - 25 oct. 2007 à 12:54
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 - 27 oct. 2007 à 12:05
Bonjour à toutes et à tous,

Voila j'utilise l'ActiveS TmsMediaPlayer.

Ses propriétés sont différentes du mediaplayer classique (play, stop, etc...).

Dans et avec ma procédure pour charger un fichier audio, j'utilise un Tlistbox, je charge une quantité de fichiers audio et le lecteur lit automatiquement le 1er fichier et ne continue pas la liste je ne sais pourquoi.

Voici le code :

procedure TFlecteur.BchargerClick(Sender: TObject);
begin

PlayList.clear;
OpenDialog1.Filter:= 'MP3 (*.mp3)|*.mp3|WAV (*.wav)|*.wav|WMA (*.wma)|*.wma|CDA (*.cda)|*.cda'; //Filtre de mp3 ou wav pour la playlist
   OpenDialog1.InitialDir:=('C:\Documents and Settings\Dez\Mes documents\Ma musique');


   if OpenDialog1.execute then
      begin
         mediaplayer.url := OpenDialog1.FileName;
         playlist.Items.AddStrings(OpenDialog1.Files);
         lbl_nbTitre.Caption:=IntToStr(PlayList.count)+' titres';
      end;
end;

Par contre, je sauve cette liste dans un fichier et quand je charge ce fichier avec ce code :

procedure TFlecteur.BplaylistClick(Sender: TObject);
begin


OpenDialog1.Filter := 'Playlist (*.List)|*.List'; 

OpenDialog1.InitialDir:=('C:\Ma musique');


 if OpenDialog1.Execute then  
  begin


      playlist.Items.LoadFromFile(OpenDialog1.filename); 
      lbl_nbTitre.Caption:=IntToStr(PlayList.count)+' titres';         
 end;
end;

la liste s'affiche mais le lecteur ne démarre pas automatiquement sauf avec ce code dans la propriété Dblclick.

procedure TFlecteur.playlistDblClick(Sender: TObject);
var
  j:integer;
begin


j: =PlayList.ItemIndex;


if j=-1 then
  Exit;
  MediaPlayer.Enabled := True;
  MediaPlayer.Close;
       MediaPlayer.url :=PlayList.Items.Strings[PlayList.ItemIndex];


if   b=1
  then begin
       MediaPlayer.Close;
       MediaPlayer.Enabled := True;
       MediaPlayer.url :=PlayList.Items.Strings[PlayList.ItemIndex];


       end;
      end;

 Si quelqu'un pouvait m'éclairer, ce serait sympa.

@+,

Cincap
[mailto: mailto:]

3 réponses

cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
27 oct. 2007 à 12:05
Bonjour à toutes et à tous,

Dernière question, est t'il possible d'afficher dans le Tlistbox que le nom du fichier audio donc sans le chemin complet.

Car avec ce code, j'obtiens le chemin complet.

if OpDaudio.execute then 
      begin


playlist.Items.AddStrings(OpDaudio.Files);

.............

End;

En vous remerciant,

Cincap
[mailto: mailto:]
3
Utilisateur anonyme
25 oct. 2007 à 16:04
Salut,

Si ce composant fonctionne comme le TMediaPlayer, cela devrait fonctionner (Non tester : z'aime pas ce compo )

Procedure TFlecteur.LoadFromList_BtClick(Sender: TObject);
Begin
  PlayList.clear;
 OpenDialog1.Filter:='MP3 (*.mp3)|*.mp3|WAV (*.wav)|*.wav|WMA (*.wma)|*.wma|CDA (*.cda)|  *.cda';    OpenDialog1.InitialDir:=('C:\Documents and Settings\Dez\Mes documents\Ma musique');
  If OpenDialog1.execute then
      Begin
         Playlist.Items.Items.Text:=OpenDialog1.Files.Text;
         Lbl_nbTitre.Caption:=IntToStr(PlayList.count)+' titres';
      End;
End;

Procedure TFlecteur.LoadFromFile_BtClick(Sender: TObject);
Begin
  OpenDialog1.Filter := 'Playlist (*.List)|*.List';
  OpenDialog1.InitialDir:=('C:\Ma musique');
  If OpenDialog1.Execute then 
    Begin
      Playlist.Items.LoadFromFile(OpenDialog1.filename);
      Lbl_nbTitre.Caption:=IntToStr(PlayList.count)+' titres';        
   End;
End;

Procedure TFlecteur.playlistDblClick(Sender: TObject);
Var
    Index : integer;
Begin
  If PlayList.Count=-1 Then Exit;
  For Index:=0 To PlayList.Count-1 Do
  Begin
    MediaPlayer.Wait;
    MediaPlayer.Enabled := True;
    MediaPlayer.Close;
    MediaPlayer.url :=PlayList.Items.Strings[Index];
    MediaPlayer.Open;
    MediaPlayer.Play;
  End;
End;

Tu manques de régularité dans ton code CinCap : ca se voit au niveau des majuscules/minuscules que tu mets de façon aléatoire .

Donne un nom explicite à tes composants en particulier les boutons.

Ensuite le lancement de la lecture via un double click est une mauvaise idée. L'utilisateur va pas comprendre tout de suite la distinction entre simple et double clique et va dire quelques mots d'oiseaux, et ca va vite lui pomper l'air de se planter une fois sur deux entre le simple et le double.

Ensuite attention à ItemIndex = -1. "Ca ne veut rien dire"

@++
0
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
25 oct. 2007 à 17:12
 Bonjour,

@ Francky23012301, merci avant tout d'avoir répondu, tu as raison au sujet du nom de tous mes composants, mais en cas de prototype, je ne les renommes pas tous, ceux que j'utilisai étaient renommés.

Ceci étant dit, les propriétés open, wait, play ne sont pas actives avec ce composant comme dit d'ailleurs dans ma demande initiale.


Dans ta proposition et dans la procédure "TFlecteur.LoadFromList_BtClick", tu indiques ceci :

 Playlist.Items.Items.Text:=OpenDialog1.Files.Text;

Je suppose qu'il y a un "Items" de trop.

Je ne pense pas que ce soit facile d'avoir une doc sur le composant Tmsmediaplayer, je n'ai rien trouvé sur Google.

@+,

Cincap

[mailto: mailto:]
0
Rejoignez-nous