unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ComCtrls, Buttons, Menus, MPlayer, StdCtrls;const
 ModeStr:array[TMPModes]of string=('readly','over','on playing',
 'on recoder','on search','stop','open');
type
 HMSRec=record
  Hours:byte;
  Minutes:byte;
  Seconds:byte;
  NotUsed:byte;
  end;  TMainForm = class(TForm)
    MediaPlayer1: TMediaPlayer;
    MainMenu1: TMainMenu;
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    StatusBar1: TStatusBar;
    TrackBar1: TTrackBar;
    Timer1: TTimer;
    Label1: TLabel;
    OpenDialog1: TOpenDialog;
    MainForm: TMenuItem;
    Help1: TMenuItem;
    open1: TMenuItem;
    exit1: TMenuItem;
    about1: TMenuItem;
    procedure open1Click(Sender: TObject);
    procedure exit1Click(Sender: TObject);
    procedure about1Click(Sender: TObject);
    procedure MediaPlayer1PostClick(Sender: TObject; Button: TMPBtnType);
    procedure MediaPlayer1Notify(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
   
  private
    { Private declarations }
    canTimerAutoChange:Boolean;
    canTrackManualChange:Boolean;
  public
    { Public declarations }
  end;var
  MainForm: TMainForm;implementation{$R *.dfm}procedure TMainForm.open1Click(Sender: TObject);
 var
  TheLength:LongInt;
begin
  if OpenDialog1.Execute then
  begin
    MediaPlayer1.FileName:=OpenDialog1.FileName;
    Mediaplayer1.Open;
    Caption:=OpenDialog1.FileName;
    StatusBar1.Panels[0].Text:=OpenDialog1.FileName;
    MediaPlayer1.Notify:=True;
end; canTimerAutoChange:=True;
 TheLength:=MediaPlayer1.Length;
 with HMSRec(TheLength) do
 begin
 Label1.Caption:=IntToStr(Minutes)+':'+IntToStr(Seconds);
 end;
 end;procedure TMainForm.exit1Click(Sender: TObject);
begin
 MediaPlayer1.Close;
 Close;
end;procedure TMainForm.about1Click(Sender: TObject);
begin
  showmessage('fdsafsd')
end;procedure TMainForm.MediaPlayer1PostClick(Sender: TObject;
  Button: TMPBtnType);
begin
   StatusBar1.Panels[1].Text:=ModeStr[MediaPlayer1.Mode];
end;procedure TMainForm.MediaPlayer1Notify(Sender: TObject);
begin
   StatusBar1.Panels[1].Text:=ModeStr[MediaPlayer1.Mode];
    MediaPlayer1.Notify:=true;
end;procedure TMainForm.Timer1Timer(Sender: TObject);
 var pos:LongInt;
begin
 if(MediaPlayer1.FileName<>'')and canTimerAutoChange then
  begin
  canTrackManualChange:=False;
  pos:=MediaPlayer1.Position*(Trackbar1.Max-Trackbar1.Min);
  Trackbar1.Position:=(pos div MediaPlayer1.Length);
  canTrackManualChange:=True;
  end;
end;procedure TMainForm.TrackBar1Change(Sender: TObject);
begin
 canTimerAutoChange:=False;
 if canTrackManualChange then
   with Mediaplayer1 do
    Position:=(TrackBar1.Position+TrackBar1.Frequency)*Length Div (TrackBar1.Max-TrackBar1.Min);
 canTimerAutoChange:=True;
end;procedure TMainForm.FormCreate(Sender: TObject);
begin
  canTimerAutoChange:=False;
  MediaPlayer1.TimeFormat:=tfHMS;
end;end.