unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, MPlayer, ExtCtrls, StdCtrls;  //按钮类型定义
  type
  TMPBtnType=(btplay,btpause,btStop,btNext,btPrev,btstep,btBack,btRecord,btEject);
  TButtonSet=set of TMPBtnType;
  //窗体类定义
  type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    TB_l: TTrackBar;
    TB_r: TTrackBar;
    TB_vol: TTrackBar;
    TB_mm: TTrackBar;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    PlayMbt: TButton;
    StopMbt: TButton;
    PauseMbt: TButton;
    OpenMbt: TButton;
    OpenDialog1: TOpenDialog;
    Timer1: TTimer;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure OpenMbtClick(Sender: TObject);
    procedure StopMbtClick(Sender: TObject);
    procedure PauseMbtClick(Sender: TObject);
    procedure PlayMbtClick(Sender: TObject);
    procedure TB_lChange(Sender: TObject);
    procedure TB_rChange(Sender: TObject);
    procedure TB_volChange(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
      var DoDefault: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
    //音量控制中的全局变量
    vol:longint;
    //程序中用到的自定义函数
    procedure DomediaOpen;
      end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Close;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
waveoutgetvolume(0,@vol);
TB_l.Position:=hi(vol);//设置左声道音量
TB_r.Position:=hi(vol shr 16);//设置右声道音量
TB_vol.Position:=hi(vol) or hi(vol shr 16);
TB_l.Max:=TB_vol.Position;
TB_r.Max:=TB_vol.Position;
end;procedure TForm1.OpenMbtClick(Sender: TObject);
begin
if not OpenDialog1.Execute then
        exit;
        MediaPlayer1.FileName:=OpenDialog1.FileName;
        DomediaOpen;
        PlayMbt.Click;
end;procedure TForm1.StopMbtClick(Sender: TObject);
begin
tb_mm.Position:=0;
StopmBt.Enabled:=False;
PausemBt.Enabled:=False;
PlaymBt.Enabled:=True;
MediaPlayer1.Stop;
end;procedure TForm1.PauseMbtClick(Sender: TObject);
begin
 MediaPlayer1.Pause;
 PausemBt.Enabled:=not PausemBt.Enabled;
 PlaymBt.Enabled:=not PlaymBt.Enabled;
end;procedure TForm1.PlayMbtClick(Sender: TObject);
begin
if mediaplayer1.Mode=mpPaused then
begin
PlaymBt.Enabled:=False;
StopmBt.Enabled:=True;
PausemBt.Enabled:=True;
MediaPlayer1.Resume;
Timer1.Enabled:=True;
end
else
begin
MediaPlayer1.Open;
TB_mm.Max:=mediaplayer1.Length;
domediaopen;
MediaPlayer1.Play;
timer1.Enabled:=true;
if MediaPlayer1.Mode<>mpplaying then
        mediaplayer1.Play;
        playmBt.Enabled:=False;
        StopmBt.Enabled:=true;
        PausemBt.Enabled:=true;
end;
end;procedure TForm1.TB_lChange(Sender: TObject);
var pos,vol:longint;
begin
TB_l.Max:=TB_vol.Position;
pos:=TB_l.Position;
waveoutgetvolume(0,@vol);
vol:=vol and $ffff0000 or (pos shl 8);
waveoutsetvolume(0,vol);
end;procedure TForm1.TB_rChange(Sender: TObject);
var pos,vol:longint;
begin
TB_r.Max:=TB_vol.Position;
pos:=TB_l.Position;
waveoutgetvolume(0,@vol);
vol:=vol and $0000ffff or (pos shl 24);
waveoutsetvolume(0,vol);
end;procedure TForm1.TB_volChange(Sender: TObject);
var pos,vol:longint;
begin
pos:=TB_vol.Position;
vol:=(pos shl 8) or (pos shl 24);
waveoutsetvolume(0,vol);
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if mediaplayer1.Mode=mpplaying then
begin
TB_mm.Position:=mediaplayer1.Position;
end
else
begin
if mediaplayer1.Mode=mpstopped then
stopmBtclick(self);
timer1.Enabled:=False;
end;
end;procedure TForm1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
  var DoDefault: Boolean);
begin
case Button of
btplay:
        begin
        Caption:='Playing';
        end;
btPause:
        begin
        caption:='Paused'
        end;
btStop:
        begin
        Caption:='Stopped';
        end;
btNext:
        begin
        caption:='Next';
        end;
btPrev:
        begin
        caption:='Step';
        end;
btBack:
        begin
        caption:='Back';
        end;
btRecord:
        begin
        caption:='Record';
        end;
btEject:
        begin
        Caption:='Eject';
        end;
end;
end;
procedure TForm1.DomediaOpen;
beginend;end.