我做了一个播放音乐的小程序,但是我想在一个listbox中选中了很多歌曲,想听完一首再听另一首,可是我选了好几首,结果总是只放一首不知道怎么回事?希望帮我看看:
procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
begin
    for i:=0 to listbox1.items.count-1 do
    begin        MediaPlayer1.filename := listbox1.items.Strings[i];
        MediaPlayer1.notify:=true;
        try
            MediaPlayer1.open;
        except
            raise exception.Create('打开文件时出错');
        end;
        with MediaPlayer1    do
        begin
            if Notify then 
                play;
        end;
    application.ProcessMessages;//这句话该如何加,我觉着应该释放系统控制权
    end;
end;

解决方案 »

  1.   

    在MediaPlayer1.filename := listbox1.items.Strings[i];之前先关闭一下吧;
    application.ProcessMessages;这句我觉得不需要
      

  2.   

    要先关闭正在使用的MediaPlayer,同一线程怎么可以运行两个程序呢??是吧!
      

  3.   

    应该在OnNotify事件(播放结束)中修改MediaPlayer1.filename 
    按以上代码,总是放最后一首吧
      

  4.   

    是不是只放最后一首??如果你连续双击几首歌,放的也是最后一首,一样的道理
    我觉得应该把放下一首歌的代码写在MediaPlayer1播放完成的那段代码中
      

  5.   

    同意iamduo(狄奥) 
    记下现在播放的,在onnotify里播放完后播放下一个
      

  6.   

    我觉得应该把listview里面选中的所有文件记录在数组里,用一个全局变量记录当前播放歌曲在数组里的指针,然后在mediaplayer1的onnotify事件里监控播放结束,如果结束将全局变量指针加1,继续播放下一首歌曲。
      

  7.   

    在OnNotify事件(播放结束)中让media播放下一首,而不是用FOR语句来控制它循环播放