📄 u_form1.pas
字号:
unit U_Form1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls, MPlayer, Menus, Buttons, ToolWin,
FileCtrl,mmSystem;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
FileMenu: TMenuItem;
DATMenu: TMenuItem;
AVIMenu: TMenuItem;
OpenDialog1: TOpenDialog;
N4: TMenuItem;
WAVMenu: TMenuItem;
MP3Menu: TMenuItem;
AllMenu: TMenuItem;
CoolBar1: TCoolBar;
PlaySB1: TSpeedButton;
StopSB1: TSpeedButton;
PlaySB2: TSpeedButton;
StopSB2: TSpeedButton;
KeepPlaySB: TSpeedButton;
Timer1: TTimer;
ListPanel: TPanel;
ListCB: TComboBox;
ListFileLabel: TLabel;
ProgressLabel: TLabel;
N5: TMenuItem;
ExitMenu: TMenuItem;
PBar1: TProgressBar;
MediaPlayer1: TMediaPlayer;
procedure ChooiceFile(Sender: TObject);
procedure CoolBarButton(Sender: TObject);
procedure MediaPlayer1Notify(Sender: TObject);
procedure AllMenuClick(Sender: TObject);
procedure ListCBChange(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ExitMenuClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
Dir:string;
IsLast:boolean;
procedure SpeedButton(T,C1,C2,C3,C4,C5:boolean);
end;
var
Form1: TForm1;
implementation
uses U_Form2;
{$R *.dfm}
procedure TForm1.ChooiceFile(Sender: TObject);
var
WhichMenu:byte;
begin
WhichMenu:=0;
if (MediaPlayer1.Mode=mpPlaying)or(MediaPlayer1.Mode=mpOpen) then
begin //如果正在播放或已经打开
MediaPlayer1.Stop; //停止设备
MediaPlayer1.DeviceType:=dtAutoSelect; //设置由播放的文件确定设备类型
end;
if Sender is TMenuItem then
begin
WhichMenu:=(Sender as TMenuItem).Tag;
case WhichMenu of //根据所击菜单项确定过滤器扩展名
1: OpenDialog1.Filter:=(Sender as TMenuItem).Caption+'|*.dat';
2: OpenDialog1.Filter:=(Sender as TMenuItem).Caption+'|*.avi';
3: OpenDialog1.Filter:=(Sender as TMenuItem).Caption+'|*.wav';
4: OpenDialog1.Filter:=(Sender as TMenuItem).Caption+'|*.mp3';
5: OpenDialog1.Filter:=(Sender as TMenuItem).Caption+'|*.*';
end;
end;
if OpenDialog1.Execute then
begin
MediaPlayer1.FileName:=OpenDialog1.FileName;
MediaPlayer1.Open;
if (WhichMenu=1)or(WhichMenu=2) then //视频文件
begin
MediaPlayer1.Display:=Form2;
MediaPlayer1.DisplayRect:=Rect(0,0,Form2.ClientWidth,Form2.ClientHeight);
Form2.Caption:='正在播放:'+MediaPlayer1.FileName;
Form2.Show;
Caption:='正在播放:'+MediaPlayer1.FileName;
SpeedButton(True,false,true,false,false,false);
end else if (WhichMenu=3)or(WhichMenu=4) then //音频文件
SpeedButton(false,false,false,true,false,false);
end;
end;
procedure TForm1.CoolBarButton(Sender: TObject);
begin
if Sender is TSpeedButton then
case (Sender as TSpeedButton).Tag of
1: begin
Form2.Show;
SpeedButton(true,false,true,false,false,false);
end;
2: begin
Form2.Close;
SpeedButton(false,true,false,false,false,false);
end;
3:begin
MediaPlayer1.Play;
SpeedButton(true,false,false,false,true,false);
end;
4:begin
MediaPlayer1.Stop;
SpeedButton(false,false,false,true,false,false);
end;
5:begin
if (Sender as TSpeedButton).Down then
begin
MediaPlayer1.Play;
SpeedButton(true,false,false,false,false,true);
(Sender as TSpeedButton).Caption:='停止'
end else
begin
MediaPlayer1.Stop;
SpeedButton(false,false,false,false,false,true);
(Sender as TSpeedButton).Caption:='播放';
end;
end;
end;
Caption:='正在播放:'+MediaPlayer1.FileName;
end;
procedure TForm1.AllMenuClick(Sender: TObject);
var
sr:TSearchRec;
Fileext:String ;
begin
if SelectDirectory('选择目录:', '', Dir) then
begin
if FindFirst(Dir+'\*.*',0,sr)=0 then
begin
ListCB.Items.Clear;
if sr.Attr<>faDirectory then
begin
Fileext:=LowerCase(ExtractFileExt(sr.Name));
if(fileext='.wav')or(fileext='.mp3')or(fileext='.dat')or(fileext='.avi')then
ListCB.Items.Add(sr.Name);
end;
end;
while FindNext(sr)=0 do
begin
if (sr.Attr<>faDirectory)then
begin
Fileext:=LowerCase(ExtractFileExt(sr.Name));
if(fileext='.wav')or(fileext='.mp3')or(fileext='.dat')or(fileext='.avi')then
ListCB.Items.Add(sr.Name);
end;
end;
end;
if ListCB.Items.Count=0 then
ShowMessage('你所选择的文件夹中没有有效的音频文件!');
end;
procedure TForm1.SpeedButton(T,C1, C2, C3, C4, C5: boolean);
begin
Timer1.Enabled:=T;
ListCB.Enabled:=not KeepPlaySB.Down;
AllMenu.Enabled:=not KeepPlaySB.Down;
PlaySB1.Enabled:=C1 ;
StopSB1.Enabled:=C2 ;
PlaySB2.Enabled:=C3 ;
StopSB2.Enabled:=C4 ;
KeepPlaySB.Enabled:=C5;
end;
procedure TForm1.MediaPlayer1Notify(Sender: TObject);
begin
if IsLast=true then exit;
with MediaPlayer1 do
begin
if (NotifyValue=nvFailure) then
Application.Terminate;
if((Mode=mpStopped)or(NotifyValue=nvSuccessful))and(KeepPlaySB.Down=true)then
begin
Stop;
DeviceType:=dtAutoSelect;
if ListCB.ItemIndex=ListCB.Items.Count-1 then
begin
IsLast:=true;
exit;
end else ListCB.ItemIndex:=ListCB.ItemIndex+1;
FileName:=dir+'\'+ListCB.Items.Strings[ListCB.ItemIndex];
Open;
Play;
Caption:='正在播放:'+MediaPlayer1.FileName;
end;
end;
end;
procedure TForm1.ListCBChange(Sender: TObject);
begin
if ListCB.text='' then exit;
if (MediaPlayer1.Mode=mpPlaying)or(MediaPlayer1.Mode=mpOpen) then
begin
MediaPlayer1.Stop;
MediaPlayer1.DeviceType:=dtAutoSelect;
end;
if ListCB.ItemIndex=ListCB.Items.Count-1 then IsLast:=true
else IsLast:=false;
MediaPlayer1.FileName:=dir+'\'+ListCB.text;
MediaPlayer1.Open;
MediaPlayer1.Play;
SpeedButton(true,false,false,false,false,true);
KeepPlaySB.Down:=true;
Caption:='正在播放:'+MediaPlayer1.FileName;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
N:byte;
begin
N:=Round(100*MediaPlayer1.Position/(MediaPlayer1.Length+1));
PBar1.Position:=N;
ProgressLabel.Caption:=
Format('列表中第%d个文件 ,播放进度 %d',[ListCB.ItemIndex+1,N])+' %';
end;
procedure TForm1.ExitMenuClick(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SpeedButton(false,false,false,false,false,false);
KeepPlaySB.Down:=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -