用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();
}
}
}
//---------------------------------------------------------------------------