⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 有关多媒体的各个细节
💻 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 + -