📄 uprinc.pas
字号:
unit uPrinc;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MPlayer, MMSystem, Buttons, StdCtrls, DrLabel, ExtCtrls, ComCtrls, AMLed,
jpeg, LsFileExplorer28, ExTrackBar, LblEffct, AMHotSpot;
type
TfPrinc = class(TForm)
MediaPlayer1: TMediaPlayer;
OpenDialog1: TOpenDialog;
SpeedButton1: TSpeedButton;
Timer1: TTimer;
TrackBar1: TTrackBar;
lbPercent: TDRLabel;
Led1: TLed;
Image1: TImage;
arqLista: TLsFilelistView28;
lbCaption: TDRLabel;
btPlay: TSpeedButton;
btPause: TSpeedButton;
btStop: TSpeedButton;
lbNomeArq: TDRLabel;
TrackBar2: TExTrackBar;
lbFade: TDRLabel;
lbNrArq: TDRLabel;
trackVolume: TExTrackBar;
AMHotSpot1: TAMHotSpot;
AMHotSpot2: TAMHotSpot;
AMHotSpot3: TAMHotSpot;
procedure SpeedButton1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure TrackBar2Change(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure arqListaClick(Sender: TObject);
procedure btPauseClick(Sender: TObject);
procedure btPlayClick(Sender: TObject);
procedure btStopClick(Sender: TObject);
procedure TrackBar1Enter(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure trackVolumeChange(Sender: TObject);
procedure AMHotSpot1MouseEnter(Sender: TControl;
var Message: TCmMouseEnter);
procedure AMHotSpot1MouseLeave(Sender: TControl;
var Message: TCmMouseEnter);
procedure AMHotSpot1Click(Sender: TObject);
procedure AMHotSpot2Click(Sender: TObject);
procedure AMHotSpot3Click(Sender: TObject);
private
{ Private declarations }
function GetMPVolume(MP: TMediaPlayer): Integer;
procedure SetMPVolume(MP: TMediaPlayer; Volume: Integer);
procedure verMP3(arq: string);
procedure NotifyProc(Sender: TObject);
public
{ Public declarations }
end;
//------- VOLUME MEDIA PLAYER ----------\\
const
MCI_SETAUDIO = $0873;
MCI_DGV_SETAUDIO_VOLUME = $4002;
MCI_DGV_SETAUDIO_ITEM = $00800000;
MCI_DGV_SETAUDIO_VALUE = $01000000;
MCI_DGV_STATUS_VOLUME = $4019;
type
MCI_DGV_SETAUDIO_PARMS = record
dwCallback: DWORD;
dwItem: DWORD;
dwValue: DWORD;
dwOver: DWORD;
lpstrAlgorithm: PChar;
lpstrQuality: PChar;
end;
type
MCI_STATUS_PARMS = record
dwCallback: DWORD;
dwReturn: DWORD;
dwItem: DWORD;
dwTrack: DWORD;
end;
//------- FIM VOLUME MEDIA PLAYER ----------\\
var
fPrinc: TfPrinc;
zera: boolean;
implementation
uses uSobre;
{$R *.dfm}
procedure TfPrinc.SetMPVolume(MP: TMediaPlayer; Volume: Integer);
var
p: MCI_DGV_SETAUDIO_PARMS;
begin
{ Volume: 0 - 1000 }
p.dwCallback := 0;
p.dwItem := MCI_DGV_SETAUDIO_VOLUME;
p.dwValue := Volume;
p.dwOver := 0;
p.lpstrAlgorithm := nil;
p.lpstrQuality := nil;
mciSendCommand(MP.DeviceID, MCI_SETAUDIO,
MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@p));
end;
function TfPrinc.GetMPVolume(MP: TMediaPlayer): Integer;
var
p: MCI_STATUS_PARMS;
begin
p.dwCallback := 0;
p.dwItem := MCI_DGV_STATUS_VOLUME;
mciSendCommand(MP.DeviceID, MCI_STATUS, MCI_STATUS_ITEM, Cardinal(@p));
Result := p.dwReturn;
{ Volume: 0 - 1000 }
end;
procedure TfPrinc.verMP3(arq: string);
var s: string;
p: integer;
begin
//arq := arqLista.ItemFocused.Caption;
s := ExtractFileName(arq);
//arq := LowerCase(ExtractFileExt(arqLista.ItemFocused.Caption));
p := arqLista.Items.IndexOf(arqLista.FindCaption(0,s,false,false,false));
if (p<arqLista.Items.Count-1) then
Inc(p)
else
p := 0;
arqLista.Items[p].Selected := true;
arqLista.ItemFocused := arqLista.Selected;
if LowerCase(ExtractFileExt(arqLista.ItemFocused.Caption)) = '.mp3' then
MediaPlayer1.FileName := arqLista.ItemFocused.Caption
else
verMP3(arqLista.ItemFocused.Caption)
end;
procedure TfPrinc.NotifyProc(Sender: TObject);
begin
with Sender as TMediaPlayer do
begin
case Mode of
mpStopped: lbCaption.Caption := 'MP3 Player - Parado';
mpPlaying: lbCaption.Caption := 'MP3 Player - Tocando';
mpPaused : lbCaption.Caption := 'MP3 Player - Em pausa';
end;
Notify := True;
end;
end;
procedure TfPrinc.SpeedButton1Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
zera := true;
arqLista.Visible := true;
arqLista.Directory := ExtractFileDir(OpenDialog1.FileName);
if LowerCase(ExtractFileExt(OpenDialog1.FileName)) = '.mp3' then
MediaPlayer1.FileName := OpenDialog1.FileName
else
Exit;
lbNomeArq.Caption := ExtractFileName(MediaPlayer1.FileName);
lbNrArq.Caption := IntToStr(arqLista.Items.Count)+' arquivos.';
Caption := 'MP3 Player - '+lbNomeArq.Caption;
MediaPlayer1.Open;
TrackBar1.Max := MediaPlayer1.Length;
TrackBar1.Enabled := true;
trackVolume.Enabled := true;
btPlay.Click;
end
end;
procedure TfPrinc.Timer1Timer(Sender: TObject);
var p,t: integer;
begin
p := MediaPlayer1.Position;
t := MediaPlayer1.Length;
TrackBar1.Position := p;
lbPercent.Caption := IntToStr(trunc(p*100/t))+'%';
if p >= TrackBar1.Max then begin
MediaPlayer1.Stop;
MediaPlayer1.Position := 0;
TrackBar1.Position := 0;
lbPercent.Caption := '0%';
p := arqLista.Items.IndexOf(arqLista.FindCaption(0,lbNomeArq.Caption,false,false,false));
if (p<arqLista.Items.Count-1) then
Inc(p)
else
p := 0;
arqLista.Items[p].Selected := true;
arqLista.ItemFocused := arqLista.Selected;
if LowerCase(ExtractFileExt(arqLista.ItemFocused.Caption)) = '.mp3' then
MediaPlayer1.FileName := arqLista.ItemFocused.Caption
else
verMP3(arqLista.ItemFocused.Caption);
lbNomeArq.Caption := MediaPlayer1.FileName;
MediaPlayer1.Close;
MediaPlayer1.Open;
TrackBar1.Max := MediaPlayer1.Length;
btPlay.Click;
end
end;
procedure TfPrinc.TrackBar1Change(Sender: TObject);
var p,t: integer;
posic: boolean;
begin
p := TrackBar1.Position;
t := MediaPlayer1.Length;
posic := (TrackBar1.Position-5 > MediaPlayer1.Position) or
(TrackBar1.Position+5 < MediaPlayer1.Position);
lbPercent.Caption := IntToStr(trunc(p*100/t))+'%';
if posic then begin
zera := false;
btPause.Click;
//MediaPlayer1.Position := TrackBar1.Position;
btPlay.Click
end
end;
procedure TfPrinc.FormActivate(Sender: TObject);
begin
arqLista.Mask := '*.mp3';
lbFade.Caption := 'Transpar阯cia m韓ima';
Led1.Interval := 0
end;
procedure TfPrinc.SpeedButton2Click(Sender: TObject);
begin
Close
end;
procedure TfPrinc.TrackBar2Change(Sender: TObject);
begin
AlphaBlendValue := TrackBar2.Position;
case AlphaBlendValue of
200..250: lbFade.Caption := 'Transpar阯cia m韓ima';
150..199: lbFade.Caption := 'Transpar阯cia m閐ia';
100..149: lbFade.Caption := 'Transpar阯cia m醲ima'
end;
end;
procedure TfPrinc.SpeedButton3Click(Sender: TObject);
begin
Application.Minimize
end;
procedure TfPrinc.arqListaClick(Sender: TObject);
begin
zera := true;
if LowerCase(ExtractFileExt(arqLista.SelectedItem)) = '.mp3' then
MediaPlayer1.FileName := arqLista.SelectedItem
else
Exit;
lbNomeArq.Caption := ExtractFileName(MediaPlayer1.FileName);
Caption := 'MP3 Player - '+lbNomeArq.Caption;
MediaPlayer1.Stop;
MediaPlayer1.Close;
MediaPlayer1.Open;
TrackBar1.Max := MediaPlayer1.Length;
btPlay.Click
end;
procedure TfPrinc.btPauseClick(Sender: TObject);
begin
zera := false;
MediaPlayer1.Pause;
//MediaPlayer1.Position := TrackBar1.Position;
btPlay.Enabled := true;
btPause.Enabled := false;
btStop.Enabled := true;
if Led1.Interval = 0 then
Led1.Interval := 500
else
Led1.Interval := 0;
end;
procedure TfPrinc.btPlayClick(Sender: TObject);
begin
if zera then MediaPlayer1.Position := 0
else MediaPlayer1.Position := TrackBar1.Position;
MediaPlayer1.Play;
Timer1.Enabled := true;
Led1.LedOn := true;
Led1.Interval := 0;
btPlay.Enabled := false;
btPause.Enabled := true;
btStop.Enabled := true;
end;
procedure TfPrinc.btStopClick(Sender: TObject);
begin
MediaPlayer1.Stop;
Timer1.Enabled := false;
TrackBar1.Position := 0;
MediaPlayer1.Position := 0;
Led1.LedOn := false;
Led1.Interval := 0;
btPlay.Enabled := true;
btPause.Enabled := false;
btStop.Enabled := false;
end;
procedure TfPrinc.TrackBar1Enter(Sender: TObject);
begin
btPlay.Enabled := true;
btPause.Enabled := false;
btStop.Enabled := false;
arqLista.SetFocus
end;
procedure TfPrinc.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DRAGMOVE = $F012; { a magic number, no idea where it's documented }
begin
if Button = mbLeft then
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;
end;
procedure TfPrinc.FormCreate(Sender: TObject);
begin
MediaPlayer1.Notify := True;
MediaPlayer1.OnNotify := NotifyProc;
end;
procedure TfPrinc.trackVolumeChange(Sender: TObject);
begin
SetMPVolume(MediaPlayer1, trackVolume.Position);
end;
procedure TfPrinc.AMHotSpot1MouseEnter(Sender: TControl;
var Message: TCmMouseEnter);
begin
Cursor := crHandPoint
end;
procedure TfPrinc.AMHotSpot1MouseLeave(Sender: TControl;
var Message: TCmMouseEnter);
begin
Cursor := crDefault
end;
procedure TfPrinc.AMHotSpot1Click(Sender: TObject);
var f: TForm;
begin
f := TForm2.Create(Application);
f.ShowModal;
f.Free
end;
procedure TfPrinc.AMHotSpot2Click(Sender: TObject);
begin
Close
end;
procedure TfPrinc.AMHotSpot3Click(Sender: TObject);
begin
Application.Minimize
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -