📄 main.pas
字号:
unit main;
interface
uses
MMSystem,Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, MPlayer, Buttons, Tabs;
const IsAvi=0;//定义操作常量
IsWav=1;
IsMidi=2;
IsOthers=3;
IsCD=4;
type
TMSFRec=Record//定义CD显示信息记录类型
Tracks:Byte;
Minutes:Byte;
Seconds:Byte;
Frames:Byte;
end;
TMainForm = class(TForm)
DisPlayPanel: TPanel;
Edit1: TEdit;
Label1: TLabel;
LoadBitBtn: TBitBtn;
CloseBitBtn: TBitBtn;
MediaPlayer1: TMediaPlayer;
TabSet1: TTabSet;
Label2: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
SpeedButton10: TSpeedButton;
SpeedButton11: TSpeedButton;
SpeedButton12: TSpeedButton;
SpeedButton13: TSpeedButton;
SpeedButton14: TSpeedButton;
SpeedButton15: TSpeedButton;
SpeedButton16: TSpeedButton;
SpeedButton17: TSpeedButton;
SpeedButton18: TSpeedButton;
SpeedButton19: TSpeedButton;
SpeedButton20: TSpeedButton;
SpeedButton21: TSpeedButton;
SpeedButton22: TSpeedButton;
SpeedButton23: TSpeedButton;
SpeedButton24: TSpeedButton;
SpeedButton25: TSpeedButton;
OpenDialog1: TOpenDialog;
Timer1: TTimer;
procedure CloseBitBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure TabSet1Change(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
procedure LoadBitBtnClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
CDTracksArray:Array[1..25] of TSpeedButton;//定义曲目按钮数组
CDPosition:Longint;
procedure InitCDTracksArrayData;//初始化数组类型
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
procedure TMainForm.InitCDTracksArrayData;//初始化数组类型
var
i:Integer;
begin
CDTracksArray[1]:=SpeedButton1;
CDTracksArray[2]:=SpeedButton2;
CDTracksArray[3]:=SpeedButton3;
CDTracksArray[4]:=SpeedButton4;
CDTracksArray[5]:=SpeedButton5;
CDTracksArray[6]:=SpeedButton6;
CDTracksArray[7]:=SpeedButton7;
CDTracksArray[8]:=SpeedButton8;
CDTracksArray[9]:=SpeedButton9;
CDTracksArray[10]:=SpeedButton10;
CDTracksArray[11]:=SpeedButton11;
CDTracksArray[12]:=SpeedButton12;
CDTracksArray[13]:=SpeedButton13;
CDTracksArray[14]:=SpeedButton14;
CDTracksArray[15]:=SpeedButton15;
CDTracksArray[16]:=SpeedButton16;
CDTracksArray[17]:=SpeedButton17;
CDTracksArray[18]:=SpeedButton18;
CDTracksArray[19]:=SpeedButton19;
CDTracksArray[20]:=SpeedButton20;
CDTracksArray[21]:=SpeedButton21;
CDTracksArray[22]:=SpeedButton22;
CDTracksArray[23]:=SpeedButton23;
CDTracksArray[24]:=SpeedButton24;
CDTracksArray[25]:=SpeedButton25;
for i:=1 to 25 do//不可见按钮
begin
CDTracksArray[i].Visible:=False;
end;
end;
//并闭程序
procedure TMainForm.CloseBitBtnClick(Sender: TObject);
begin
if MediaPlayer1.Mode=mpPlaying then
MediaPlayer1.Close;
Close;
end;
//创建窗体时,初始化数据
procedure TMainForm.FormCreate(Sender: TObject);
begin
InitCDTracksArrayData;//初始化数组
//设置打开媒体文件类型
OpenDialog1.Filter:='AVI(*.avi)|*.avi|Wave(*.wav)|*.wav|MIDI(*.mid)|*.mid|Other(*.*)|*.*';
end;
//定时显示CD播放信息
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
case TabSet1.TabIndex of
IsCD://是CD,则显示当前播放信息
begin
if MediaPlayer1.Tag<>-1 then
begin
CDPosition:=MediaPlayer1.Position;
with TMSFRec(CDPosition) do
begin
DisPlayPanel.Caption:='曲目:'+IntToStr(Tracks)+',时间: '+
IntToStr(Minutes)+':'+IntToStr(Seconds);
end;
end;
end;
IsWav,IsMidi,IsAvi,IsOthers://其他,则不显示
begin
end;
end;
end;
//选择曲目播放,按钮的共用事件
procedure TMainForm.SpeedButton1Click(Sender: TObject);
var
i:Integer;
begin
for i:=1 to MediaPlayer1.Tracks do
begin
if (Sender As TSpeedButton)=CDTracksArray[i] then//是当前按钮,则播放当前曲目
begin
with TMSFRec(CDPosition) do//设置曲目位置
begin
Tracks:=i;
Minutes:=0;
Seconds:=1;
ShowMEssage('i is : '+IntToStr(i));
end;
With MediaPlayer1 do//播放处理
begin
Position:=CDPosition;
Open;
Play;
EnabledButtons:=[btPause,btStop,btNext,btPrev,btEject];
end;
end;
end;
end;
//选择媒体播放
procedure TMainForm.TabSet1Change(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
var
i:Integer;
NotCDFlag:Boolean;
begin
//重设播放器按钮
MediaPlayer1.Tag:=0;
if MediaPlayer1.Mode=mpPlaying then
MediaPlayer1.Close;
MediaPlayer1.EnabledButtons:=[];
LoadBitBtn.Enabled:=True;
case NewTab of//当前页
IsCD://是CD
begin
DisplayPanel.Caption:='请稍等....';
Edit1.Text:='播放CD音乐';
MediaPlayer1.DeviceType:=dtCDAudio;
MediaPlayer1.FileName:='';
NotCDFlag:=False;
try//打开CD,判断是否出错
MediaPlayer1.Open;
MediaPlayer1.Next;
MediaPlayer1.Rewind;
except
NotCDFlag:=True;
end;
if NotCDFlag then//没有CD,显示提示信息
begin
MediaPlayer1.EnabledButtons:=[];
Edit1.Text:='请装上CD盘片!';
ShowMEssage('不能打开CD,请装上CD盘片!');
end
else//有CD,则开始播放
begin
//可见按钮
MediaPlayer1.EnabledButtons:=[btPause,btStop,btNext,btPrev,btEject];
MediaPlayer1.TimeFormat:=tfTMSF;//时间格式
with TMSFRec(CDPosition) do //第一个曲目开始播放位置
begin
Tracks:=1;
Minutes:=0;
Seconds:=1;
end;
MediaPlayer1.Position:=CDPosition;
MediaPlayer1.Play;//播放
if MediaPlayer1.Mode<>mpPlaying then//不在播放状态,曲目按钮不可见
begin
MediaPlayer1.Tag:=-1;
DisPlayPanel.Caption:='没有音乐可以播放!';
for i:=1 to 25 do
CDTracksArray[i].Visible:=False;
end
else
begin//在播放状态,曲目按钮可见
Label2.Visible:=True;
MediaPlayer1.Tag:=0;
LoadBitBtn.Enabled:=False;
for i:=1 to MediaPlayer1.Tracks do
CDTracksArray[i].Visible:=True;
end;
end;
end;
IsAvi,IsWav,IsMidi,IsOthers://不是CD
begin
DisPlayPanel.Caption:='播放区。。。';
Edit1.Text:='请打开文件。。。';
with MediaPlayer1 do
begin
DeviceType:=dtAutoSelect;
Close;
end;
end;
end;
end;
//装载文件
procedure TMainForm.LoadBitBtnClick(Sender: TObject);
var
CDLoadFlag:Boolean;
begin
case TabSet1.TabIndex of
IsCD://是CD
begin
CDLoadFlag:=True;
Tabset1Change(Sender,Tabset1.TabIndex,CDLoadFlag);//装载CD
end;
IsAvi,IsWav,IsMidi,IsOthers://其他文件
begin
OpenDialog1.FilterIndex:=TabSet1.TabIndex+1;
if OpenDialog1.Execute then
begin
With MediaPlayer1 do
begin
FileName:=OpenDialog1.FileName;
Edit1.Text:=ExtractFileName(OpenDialog1.FileName);
AutoEnable:=True;
Open;
DisPlayRect:=Rect(2,2,0,0);
DisPlayPanel.Caption:='请播放。。。';
end;
end;
end;
end;
end;
//窗体消亡时,关闭播放器
procedure TMainForm.FormDestroy(Sender: TObject);
begin
MediaPlayer1.Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -