我是一个Delphi初学者,刚刚看了一本关于多媒体播放器的书,上面介绍了怎么样利用MediaPlayer来播放音频和视频文件,我试着照书上的例子编写了一个小程序,但是我想实现播放多个文件的播放,希望各位高手帮忙解决,谢谢。附上书上的代码和自己添加的一些代码:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  MPlayer, ExtCtrls, Buttons, ComCtrls, StdCtrls, CheckLst;type
  TForm1 = class(TForm)
    Panel1: TPanel;//视频显示区域
    MediaPlayer1: TMediaPlayer;//隐藏的媒体播放器
    OpenDialog1: TOpenDialog;//打开文件对话框
    PlayButton: TSpeedButton;//播放按钮
    PauseButton: TSpeedButton;//暂停按钮
    StopButton: TSpeedButton;//停止按钮
    PrevButton: TSpeedButton;//第一首歌按钮
    NextButton: TSpeedButton;//最后一首歌按钮
    PrevStepButton: TSpeedButton;//向前跳进
    NextStepButton: TSpeedButton;//向后跳进
    StepLeftButton: TSpeedButton;//上一首歌按钮
    StepRightButton: TSpeedButton;//下一首歌按钮
    AddButton: TSpeedButton;//添加按钮
    DeleteButton: TSpeedButton;//删除按钮
    EjectButton: TSpeedButton;
    CloseButton: TSpeedButton;//关闭按钮
    StatusBar1: TStatusBar;//窗口状态栏
    ListBox1: TListBox;
    Timer1: TTimer;
    Label1: TLabel;
    CheckListBox1: TCheckListBox;
    procedure CloseButtonClick(Sender: TObject);
    procedure EjectButtonClick(Sender: TObject);
    procedure PlayButtonClick(Sender: TObject);
    procedure PauseButtonClick(Sender: TObject);
    procedure StopButtonClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure PrevButtonClick(Sender: TObject);
    procedure StepLeftButtonClick(Sender: TObject);
    procedure StepRightButtonClick(Sender: TObject);
    procedure NextButtonClick(Sender: TObject);
  private
    { Private declarations }
    PauseStatus:Boolean;
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.DFM}
type
  TTMSFRec=record
  Tracks:byte;
  Minutes:byte;
  Seconds:byte;
  Frame:byte;
end;var
  mpPosition:longInt;
  I:integer;procedure TForm1.CloseButtonClick(Sender: TObject);
begin
close;
end;procedure TForm1.EjectButtonClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
    with MediaPlayer1 do
    begin
      FileName:=OpenDialog1.FileName;
      with OpenDialog1.Files do
      for I := 0 to Count - 1 do
      begin
         ListBox1.Items.Add(Strings[I]);
      end;
      Open();
      DisplayRect:=Rect(0,0,Panel1.Width,Panel1.Height);
      Notify:=True;
    end;
end;procedure TForm1.PlayButtonClick(Sender: TObject);
begin
  PlayButton.Enabled:=False;
  StatusBar1.Panels[2].Text:='播放';
  Mediaplayer1.Play;
  PauseButton.Enabled:=True;
  StopButton.Enabled:=True;
  PrevButton.Enabled:=True;
  NextButton.Enabled:=True;
  PrevStepButton.Enabled:=True;
  NextStepButton.Enabled:=True;
  StepLeftButton.Enabled:=True;
  StepRightButton.Enabled:=True;
end;procedure TForm1.PauseButtonClick(Sender: TObject);
begin
  if PauseStatus then
  begin
    MediaPlayer1.Resume;
    PauseStatus:=False;
    StatusBar1.Panels[2].Text:='播放';
  end
  else
  begin
    MediaPlayer1.Pause;
    PauseStatus:=True;
    StatusBar1.Panels[2].Text:='暂停';
  end;
  PlayButton.Enabled:=True;
  StopButton.Enabled:=True;
  PrevButton.Enabled:=True;
  NextButton.Enabled:=True;
  PrevStepButton.Enabled:=True;
  NextStepButton.Enabled:=True;
  EjectButton.Enabled:=True;
end;procedure TForm1.StopButtonClick(Sender: TObject);
begin
  Form1.StopButton.Enabled:=False;
  Form1.PauseButton.Enabled:=False;
  MediaPlayer1.Stop;
  MediaPlayer1.Rewind;
  StatusBar1.Panels[2].Text:='停止';
  Form1.PlayButton.Enabled:=True;
  Form1.PrevButton.Enabled:=True;
  Form1.PrevStepButton.Enabled:=False;
  Form1.StepLeftButton.Enabled:=False;
  Form1.EjectButton.Enabled:=True;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  MediaPlayer1.Stop;
  MediaPlayer1.Close;
end;procedure TForm1.PrevButtonClick(Sender: TObject);
begin
  MediaPlayer1.Stop;
  MediaPlayer1.Rewind;
  Form1.PlayButton.Enabled:=False;
  PauseStatus:=False;
  MediaPlayer1.Play;
  Form1.StopButton.Enabled:=True;
  Form1.PauseButton.Enabled:=True;
end;procedure TForm1.StepLeftButtonClick(Sender: TObject);
begin
  MediaPlayer1.Previous;
  Form1.PlayButton.Enabled:=False;
  PauseStatus:=False;
  MediaPlayer1.Play;
end;procedure TForm1.StepRightButtonClick(Sender: TObject);
begin
  MediaPlayer1.Next;
  Form1.PlayButton.Enabled:=False;
  PauseStatus:=False;
  MediaPlayer1.Play;
  Form1.StopButton.Enabled:=True;
  Form1.PauseButton.Enabled:=True;
  Form1.PrevButton.Enabled:=True;
  Form1.PrevStepButton.Enabled:=True;
  Form1.StepLeftButton.Enabled:=True;
end;procedure TForm1.NextButtonClick(Sender: TObject);
begin
  MediaPlayer1.StartPos:=mpPosition;
  Form1.PlayButton.Enabled:=False;
  PauseStatus:=False;
  MediaPlayer1.Play;
  Form1.StopButton.Enabled:=True;
  Form1.PauseButton.Enabled:=True;
  Form1.PrevButton.Enabled:=True;
  Form1.PrevStepButton.Enabled:=True;
  Form1.StepLeftButton.Enabled:=True;
end;end.现在的问题是可以在ListBox里面添加歌曲名字
但是无法实现每首歌的播放
因为每次播放就只能播放所选的第一首歌
还有就是按钮事件我没有编写完
先把这个问题提出来让高手帮我解决一下
谢谢~!!!!

解决方案 »

  1.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      i:integer;
    begin
      if OpenDialog1.Execute then
          for I := 0 to OpenDialog1.Files.Count - 1 do
             ListBox1.Items.Add(OpenDialog1.Files.Strings[I]);  if ListBox1.Items.Count>0 then
      begin
        FCurNo:=0;
        MediaPlayer1.FileName:=ListBox1.Items[FCurNo];
        MediaPlayer1.Open();
        MediaPlayer1.Play;
      end;
    end;procedure TForm1.MediaPlayer1Notify(Sender: TObject);
    begin
     if (MediaPlayer1.NotifyValue = nvSuccessful) and (FCurNo<ListBox1.Items.Count-1) then
     begin
        inc(FCurNo);
        MediaPlayer1.FileName:=ListBox1.Items[FCurNo];
        MediaPlayer1.Open();
        MediaPlayer1.Play;
     end;
    end;
      

  2.   

    多谢上面这位朋友的帮忙
    但是我在上面的程序里面用了你的程序结果还是一样
    倒是我在PlayButtonClick里面用了一段语句以后可以实现播放其他歌曲
    但是必须用鼠标点了以后才能播放
    不能自动往下一首播放
    改动的程序如下:
    procedure TForm1.EjectButtonClick(Sender: TObject);
    begin
      if OpenDialog1.Execute then
        with OpenDialog1.Files do
        for I:=0 to Count-1 do
        begin
          ListBox1.Items.Add(Strings[I]);
        end;
    end;procedure TForm1.PlayButtonClick(Sender: TObject);
    begin
      PlayButton.Enabled:=True;
      StatusBar1.Panels[2].Text:='播放';
      with MediaPlayer1 do
        begin
          FileName:=ListBox1.Items[ListBox1.ItemIndex];
          Open();
          DisplayRect:=Rect(0,0,Panel1.Width,Panel1.Height);
          Notify:=True;
        end;
      Mediaplayer1.Play;
      PauseButton.Enabled:=True;
      StopButton.Enabled:=True;
      PrevButton.Enabled:=True;
      NextButton.Enabled:=True;
      PrevStepButton.Enabled:=True;
      NextStepButton.Enabled:=True;
      StepLeftButton.Enabled:=True;
      StepRightButton.Enabled:=True;
    end;其他不变
    改过以后发现还有StepLeftButton//上一曲 和 StepRightButton//下一曲里面的代码不够实现他们各自的功能,也就是说无法播放下一曲或者上一曲
    看看哪位高手能帮我完成这个小程序的所有功能
    现在剩下的未完成的程序是:添加和删除按钮,上一曲和下一曲按钮谢谢!!!!!