📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls, AudioObject, CommonTypes;
type
TFormPlayer = class(TForm)
LVU: TProgressBar;
RVU: TProgressBar;
Panel_Stat: TPanel;
Label_File: TLabel;
Label_Info: TLabel;
ListBox: TListBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Bevel1: TBevel;
OpenDialog: TOpenDialog;
Timer_Stat: TTimer;
TrackVol: TTrackBar;
Button6: TButton;
Label1: TLabel;
Bevel2: TBevel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
ImageTrackPos: TImage;
TimerVU: TTimer;
procedure FormCreate(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Timer_StatTimer(Sender: TObject);
procedure TrackVolChange(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure ListBoxDblClick(Sender: TObject);
procedure ImageTrackPosMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure TimerVUTimer(Sender: TObject);
private
{ Private declarations }
SeekDrawBuff : TBitmap;
procedure DrawPlayList;
public
{ Public declarations }
end;
var
FormPlayer: TFormPlayer;
implementation
{$R *.dfm}
procedure TFormPlayer.DrawPlayList;
var i : integer;
begin
ListBox.Clear;
for i := 0 to AudioObjectPlayer.Count - 1 do
ListBox.Items.Add(AudioObjectPlayer.GetText(i));
end;
procedure TFormPlayer.FormCreate(Sender: TObject);
begin
AudioObjectPlayer := TAudioObject.Create(Application.Handle);
SeekDrawBuff := TBitmap.Create;
SeekDrawBuff.Width := ImageTrackPos.Width;
SeekDrawBuff.Height := ImageTrackPos.Height;
end;
procedure TFormPlayer.Button5Click(Sender: TObject);
begin
OpenDialog.Title := 'Open Files';
OpenDialog.Filter := AudioObjectPlayer.GetDialogFilter + '|Any file (*.*)|*.*';
if not OpenDialog.Execute then exit;
AudioObjectPlayer.OpenFiles(OpenDialog.Files);
Label_Info.Caption := 'Length ' + FormatDateTime ('nn:ss', (AudioObjectPlayer.GetSongLength(AudioObjectPlayer.GetCurSong) )/ (24 * 60 * 60));
Label_File.Caption := AudioObjectPlayer.GetSongTitle(AudioObjectPlayer.GetCurSong);
DrawPlayList;
end;
procedure TFormPlayer.Timer_StatTimer(Sender: TObject);
var MaxPos, CurPos : Integer;
begin
with SeekDrawBuff do begin
MaxPos := AudioObjectPlayer.GetSongLen;
CurPos := AudioObjectPlayer.GetSongPos;
Canvas.Brush.Color := clBtnFace;
Canvas.Pen.Color := clBlack;
Canvas.Rectangle(0, 0, Width, Height);
Canvas.Brush.Color := clNavy;
Canvas.Rectangle(0, 0, Trunc(Width*(CurPos/MaxPos)), Height);
end;
ImageTrackPos.Canvas.Draw(0, 0, SeekDrawBuff);
case AudioObjectPlayer.EngineState of
ENGINE_PLAY : Panel_Stat.Caption := 'Play';
ENGINE_PAUSE : Panel_Stat.Caption := 'Pause';
ENGINE_STOP : Panel_Stat.Caption := 'Stop';
ENGINE_SONG_END :
begin
if AudioObjectPlayer.AORepeat or AudioObjectPlayer.AOShuffle then
AudioObjectPlayer.NextSong;
end;
end;
end;
procedure TFormPlayer.TrackVolChange(Sender: TObject);
begin
AudioObjectPlayer.SetMainVolume(TrackVol.Position);
AudioObjectPlayer.SetGainVolume(TrackVol.Position);
end;
procedure TFormPlayer.Button6Click(Sender: TObject);
begin
AudioObjectPlayer.NextSong;
end;
procedure TFormPlayer.Button2Click(Sender: TObject);
begin
if AudioObjectPlayer.EngineState = ENGINE_PAUSE then
AudioObjectPlayer.UnPause
else
AudioObjectPlayer.Play(AudioObjectPlayer.GetCurSong);
end;
procedure TFormPlayer.Button1Click(Sender: TObject);
begin
AudioObjectPlayer.PrevSong;
end;
procedure TFormPlayer.Button3Click(Sender: TObject);
begin
AudioObjectPlayer.Pause;
end;
procedure TFormPlayer.Button4Click(Sender: TObject);
begin
AudioObjectPlayer.Stop;
end;
procedure TFormPlayer.ListBoxDblClick(Sender: TObject);
begin
AudioObjectPlayer.JumpToSing (ListBox.ItemIndex);
Label_Info.Caption := 'Length ' + FormatDateTime ('nn:ss', (AudioObjectPlayer.GetSongLength(AudioObjectPlayer.GetCurSong) )/ (24 * 60 * 60));
Label_File.Caption := AudioObjectPlayer.GetSongTitle(AudioObjectPlayer.GetCurSong);
end;
procedure TFormPlayer.ImageTrackPosMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var MaxPos : Integer;
begin
with ImageTrackPos do begin
MaxPos := AudioObjectPlayer.GetSongLen;
AudioObjectPlayer.SetSongPos (Trunc(X / Width * MaxPos));
end;
end;
procedure TFormPlayer.TimerVUTimer(Sender: TObject);
var R, L : Integer;
begin
AudioObjectPlayer.GetVULevel(R, L);
RVU.Position := R;
LVU.Position := L;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -