unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, MPlayer, ExtCtrls, 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;
Timer1: TTimer;
OpenDialog1: TOpenDialog; 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; procedure CloseBitBtnClick(Sender:TObject);
procedure FormCreate(Sender:TObject);
procedure Timer1Time(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.Timer1Time(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;
a:Integer;
NotCDFlag:Boolean;
begin
for i:=1 to MediaPlayer1.Tracks do
if (Sender As TSpeedButton)=CDTracksArray[i] then//是当前按钮,则播放当前曲目
a:=i;
DisplayPanel.Caption:='请稍等...';
Edit1.Text:='播放CD音乐';
MediaPlayer1.DeviceType:=dtCDAudio;
MediaPlayer1.FileName:='';
NotCDFlag:=False;
try
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;
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:
begin
DisplayPanel.Caption:='请稍等...';
Edit1.Text:='播放CD音乐'
MediaPlayer1.DeviceType:=dtCDAudio;
MediaPlayer1.FileName:='';
NotCDFlag:=False;
try
MediaPlayer1.open;
MediaPlayer1.Next;
MediaPlayer1.Rewind;
except
NotCDFlag:=True;
end;
if notcdflag then
begin
MediaPlayer1.EnabledButtons:=[];
Edit1.Text:='请装上CD盘片!';
ShowMessage('不能打开CD,请装上CD盘片!');
end
else
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:
begin
DisPlayPanel.Caption:='播放区...';
Edit1.Text:='请打开文件...';
with MediaPlayer1 do
begin
DeviceType:=dtAutoSelect;
Close;
end;
end;
end;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, MPlayer, ExtCtrls, 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;
Timer1: TTimer;
OpenDialog1: TOpenDialog; 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; procedure CloseBitBtnClick(Sender:TObject);
procedure FormCreate(Sender:TObject);
procedure Timer1Time(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.Timer1Time(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;
a:Integer;
NotCDFlag:Boolean;
begin
for i:=1 to MediaPlayer1.Tracks do
if (Sender As TSpeedButton)=CDTracksArray[i] then//是当前按钮,则播放当前曲目
a:=i;
DisplayPanel.Caption:='请稍等...';
Edit1.Text:='播放CD音乐';
MediaPlayer1.DeviceType:=dtCDAudio;
MediaPlayer1.FileName:='';
NotCDFlag:=False;
try
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;
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:
begin
DisplayPanel.Caption:='请稍等...';
Edit1.Text:='播放CD音乐'
MediaPlayer1.DeviceType:=dtCDAudio;
MediaPlayer1.FileName:='';
NotCDFlag:=False;
try
MediaPlayer1.open;
MediaPlayer1.Next;
MediaPlayer1.Rewind;
except
NotCDFlag:=True;
end;
if notcdflag then
begin
MediaPlayer1.EnabledButtons:=[];
Edit1.Text:='请装上CD盘片!';
ShowMessage('不能打开CD,请装上CD盘片!');
end
else
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:
begin
DisPlayPanel.Caption:='播放区...';
Edit1.Text:='请打开文件...';
with MediaPlayer1 do
begin
DeviceType:=dtAutoSelect;
Close;
end;
end;
end;
end;
var
CDLoadFlag:Boolean;
begin
case TabSet1.TabIndex of
IsCD:
begin
CDLoadFlag:=True;
TabSet1Change(Sender,TabSet1.TabIndex,CDLoadFlag);
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.以上是代码。错误的地方在这行MediaPlayer1.DeviceType:=dtCDAudio;或者大家直接复制这些代码运行一下帮我看看吧!
我是初学的,希望大家多多指教。
另外想询问一下,如何在delphi代码编辑里面能够显示行数。就好像dw一样的那样的功能。
谢谢大家了