关于播放列表的循环

用Tstringlist记录播放列表,用一个整形变量储存位置,每播放一首就INC(位置),
当位置>Tstringlist.count时位置=0,其实这种方法很容易想到,
我在初学的时候已经会用这种方法。 delphi_zm2001-9-9 12:45:00
先定义notify事件,在notify事件 判断媒体状态为播放完毕。

procedure TForm1.MediaPlayer1Notify(Sender: TObject);
var i:integer;
   begin
     if mediaplayer1.Position=mediaplayer1.Length then
       inc(i);
       if ListBox1.count = i then
           i := 0; mediaplayer1.FileName:=listbox1.items.strings;
        mediaplayer1.open;
        medipalayer1.play;
     end;
    
     appleman20002002-4-2 19:39:00
     listbox的name是lb1,mediaplayer的name是mp1。
     程序如下:
     procedure TForm1.mp1Notify(Sender: TObject);
        begin if mp1.Position=mp1.Length then
       //放到了最后一首歌结束
       if lb1.Items.Count-1=lb1.ItemIndex then
        begin lb1.ItemIndex:=0; mp1.FileName:=lb1.Items.Strings[lb1.itemindex];
        mp1.Open; mp1.Play;
       end
     else//没有放到最后一首歌
       begin lb1.ItemIndex:=lb1.ItemIndex+1;
       mp1.FileName:=lb1.Items.Strings[lb1.itemindex];
       mp1.Open; mp1.Play;7
       end;
    end;

C++版

//---------------------------------------------------------------------------
void __fastcall TForm_Main::BitBtn1Click(TObject *Sender)
{

// slPlayList->Add("H:\\播放声音\\报警\\报警.wav");
  System::AnsiString MyPath=ExtractFilePath(Application->ExeName);
  slPlayList->Clear();
  slPlayList->Add(MyPath+"\\wav\\1.wav");
  slPlayList->Add(MyPath+"\\wav\\2.wav");
  slPlayList->Add(MyPath+"\\wav\\3.wav");
  slPlayList->Add(MyPath+"\\wav\\4.wav");
  slPlayList->Add(MyPath+"\\wav\\5.wav");
  slPlayList->Add(MyPath+"\\wav\\6.wav");
  count=slPlayList->Count ;

  MediaPlayer1->FileName=slPlayList->Strings[0];
  MediaPlayer1->Open();
  MediaPlayer1->Play();

}
//---------------------------------------------------------------------------

void __fastcall TForm_Main::MediaPlayer1Notify(TObject *Sender)
{ Form_Main->Caption = ModeStr[(int) MediaPlayer1->Mode];
  /* Note we must reset the Notify property to so that we are notified the next time the mode changes */
// MediaPlayer1->Notify = true;

TMediaPlayer * tmpMP = (TMediaPlayer*)Sender;
     if  (tmpMP->Position==tmpMP->Length )
     {
     Memo1->Lines->Add(String(count));
     Memo1->Lines->Add(slPlayList->Strings[0]);
     count--;
     if (count>0)
     {
      slPlayList->Delete(0);
      tmpMP->Close();
      tmpMP->FileName=slPlayList->Strings[0];
      tmpMP->Open();
      tmpMP->Play();
      }
     }

}
//---------------------------------------------------------------------------  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值