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

📄 uprinc.pas

📁 Mp3 player omly files .mp3, created in delphi borland
💻 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 + -