菜鸟问题:关于利用MediaPlayer控件和OpenDialog对话框实现多个文件播放
我是一个Delphi初学者,刚刚看了一本关于多媒体播放器的书,上面介绍了怎么样利用MediaPlayer来播放音频和视频文件,我试着照书上的例子编写了一个小程序,但是我想实现播放多个文件的播放,希望各位高手帮忙解决,谢谢。
附上书上的代码和自己添加的一些代码:
unit Unit1;
interface
uses
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里面添加歌曲名字
但是无法实现每首歌的播放
因为每次播放就只能播放所选的第一首歌
还有就是按钮事件我没有编写完
先把这个问题提出来让高手帮我解决一下
谢谢~!!!!