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

📄 unit1.pas

📁 delphi写的对学习delphi初级入门的数据编程很有用。是用用来查找硬盘mp3文件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Unit1;



interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IniFiles, MPlayer, ExtCtrls, MMSystem, RzTrkBar,
  RzDBTrak;
const 
  MCI_SETAUDIO= $873; 
  MCI_SETVIDEO=$0876; 
  MCI_DGV_SETAUDIO_SOURCE_LEFT = 1; 
  MCI_DGV_SETAUDIO_SOURCE_STEREO = 0; 
  MCI_DGV_SETAUDIO_SOURCE_RIGHT = 2; 
  MCI_DGV_SETAUDIO_SOURCE = $00004004; 
  MCI_DGV_SETAUDIO_VALUE = $01000000; 
  MCI_DGV_SETAUDIO_ITEM = $00800000; 
  MCI_DGV_SETAUDIO_STREAM = $00004003; 
  MCI_DGV_SETAUDIO_VOLUME = $00004002;

type 
  MCI_DGV_SETAUDIO_PARMS=record 
    dwCallback:DWORD; 
    dwItem:DWORD; 
    dwValue:DWORD; 
    dwOver:DWORD; 
    lpstrAlgorithm:PChar; 
    lpstrQuality:PChar; 
   end ; 

  TfrmPlayList = class(TForm)
    ListBox_PlayFiles: TListBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    OpenDlg_PlayList: TOpenDialog;
    SaveDlg_PlayList: TSaveDialog;
    AutoPlayTimer: TTimer;
    MediaPlayer: TMediaPlayer;
    RzTrackBar1: TRzTrackBar;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    RzDBTrackBar1: TRzDBTrackBar;
    procedure ListBox_PlayFilesDblClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure AutoPlayTimerTimer(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure StepPosition(Sender: TObject);
    procedure RzTrackBar1Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure RzTrackBar1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure RzTrackBar1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button7Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure RzDBTrackBar1Change(Sender: TObject);
  private
    IfDrag: boolean;
    ifPause:boolean;
    { Private declarations }

  public
    FileIndex: Integer;          // 播放文件的索引
    FileCount: Integer;          // 列表中文件总数
    IsFileChange: Boolean;       // 通知主窗口播放歌曲已改
    FileLength: Longint;         // 文件长度
    FilePosition: Longint;       // 当前播放的帧数
    Drive: char;                 // 光驱盘符
    IsCDOpen: Boolean;           // 光驱是否打开
    FileListName: TIniFile;      // 列表文件关联名
    IsPlayingPause: Boolean;     // 暂停控制
    { Public declarations }
    procedure Init;
    procedure PlayMedia(aFileName:string);         // 播放音频文件
    procedure PlayPause;         // 暂停当前播放文件
    procedure PlayStop;          // 停止当前播放文件
    procedure PlayBack;          // 倒退当前播放文件
    procedure PlayStep;          // 快进当前播放文件
    procedure PlayPrev;          // 播放上一曲目
    procedure PlayNext;          // 播放下一曲目
    procedure AddPlayFile;       // 添加播放列表文件
    procedure DelPlayFile;       // 删除播放列表文件
    procedure ClearPlayFile;     // 清空播放列表文件
    procedure CDControl;         // 控制CDROM开关    
  end;

var
  frmPlayList: TfrmPlayList;

implementation
uses u_MP3Copy;
{$R *.dfm}
procedure TfrmPlayList.StepPosition(Sender: TObject);
begin
RzTrackBar1.Position := MediaPlayer.Position;//RzTrackBar1.Position+RzTrackBar1.TickStep;
//RzTrackBar1.
 //with RzTrackBar1 do
 //begin

 //end;
end;
procedure TfrmPlayList.ListBox_PlayFilesDblClick(Sender: TObject);
var
  Index: Integer;
begin
  Index := ListBox_PlayFiles.ItemIndex;
  if Index < 0 then Exit;
  if Index = FileIndex then Exit;
  //frmEPlayer.MediaPlayer.Close;
  FileIndex := Index;
  FileListName.WriteInteger('播放文件', '文件号', FileIndex);
  //PlayMedia;

end;

procedure TfrmPlayList.Button1Click(Sender: TObject);
begin
  {OpenDlg_PlayList.Filter := 'WMA播放文件|*.wma|MP3播放文件|*.mp3';
  OpenDlg_PlayList.InitialDir := ExtractFileDir(Application.ExeName) + '\PlayList\';
  if OpenDlg_PlayList.Execute then
  begin
    ListBox_PlayFiles.Items.AddStrings(OpenDlg_PlayList.Files);
  end;}
  //AddPlayFile;
end;

procedure TfrmPlayList.Button3Click(Sender: TObject);
begin
  //ClearPlayFile;
end;

procedure TfrmPlayList.Button2Click(Sender: TObject);
begin
  //DelPlayFile;
end;

procedure TfrmPlayList.PlayMedia(aFileName:string);
var
  ExtName: string;
  Mode:TMPModes;
  FileName: string;
begin
  with MediaPlayer do
  begin
    if Mode = mpOpen then Close;    //如果正在播放,则关闭
    FileName := aFileName;//FileListName.ReadString('文件列表', 'No.[' + IntToStr(FileIndex) + ']','');
    try
      Open;
      RzTrackBar1.Max := MediaPlayer.Length;
      RzTrackBar1.TickStep := RzTrackBar1.Max div 100;
      ExtName := ExtractFileExt(FileName);
      if (StrIComp(PChar(ExtName), '.mpg') = 0) or
         (StrIComp(PChar(ExtName), '.dat') = 0) or
         (StrIComp(PChar(ExtName), '.avi') = 0) or
         (StrIComp(PChar(ExtName), '.asf') = 0) then
      begin
        //frmEPlayer.MediaPlayer.Display := frmMovie.Panel_DisPlay;
        //frmEPlayer.MediaPlayer.DisplayRect := frmMovie.Panel_DisPlay.ClientRect;
        //frmMovie.Visible := True;
      end
      else
        begin
          //frmEPlayer.MediaPlayer.Display := nil;
          //frmMovie.Visible := False;
        end;
        TimeFormat := tfMilliseconds;
        Position := 0;
        IsFileChange := True;
        Play;
        //PlayingPause := False;
    except
      MessageDlg('无法打开或者播放此文件!',mtError,[mbOK],0);
    end;
  end;
end;
// 播放下一曲目
procedure TfrmPlayList.PlayNext;
begin
  if FileIndex >= FileCount - 1 then Exit;
  FileIndex := FileIndex + 1;
  ListBox_PlayFiles.ItemIndex := FileIndex;
  FileListName.WriteInteger ('播放文件', '文件号', FileIndex);
  //PlayMedia;
end;
// 添加播放列表文件
procedure TfrmPlayList.AddPlayFile;
var
  I: Integer;
begin
  OpenDlg_PlayList.Filter := '音频文件(*.WAV,*.MP3,*.WMA,*.MID,*.RMI,*.CDA)|*.WAV;*.MP3;*.WMA;*.MID;*.RMI;*.CDA|视频文件(*.MPG,*.AVI,*.DAT,*.ASF,*,MPEG)|*.MPG;*.AVI;*.DAT;*.ASF;*.MPEG|所有文件(*.*)|*.*';
  if OpenDlg_PlayList.Execute then
  begin
    with OpenDlg_PlayList.Files do
      for I := 0 to Count - 1 do
      begin
        ListBox_PlayFiles.Items.Add(Strings[I]);
        FileListName.WriteString('文件列表', 'No.[' + IntToStr(FileCount + I) + ']', Strings[I]);
      end;
      FileIndex := FileCount;
      ListBox_PlayFiles.ItemIndex := FileIndex;
      //ListBoxScrollar(Sender);
      FileCount := FileCount + OpenDlg_PlayList.Files.Count;
      FileListName.WriteInteger('播放文件', '文件号', FileIndex);
      FileListName.WriteInteger('播放文件', '文件数', FileCount);
      //PlayMedia;
  end;
end;
// 删除播放列表文件
procedure TfrmPlayList.DelPlayFile;
var
  Index : Integer;
begin
  if FileCount <= 0 then Exit;      // 如果列表中为空则退出
  Index := ListBox_PlayFiles.ItemIndex;
  if Index < 0 then Exit;           // 如果没有选择则退出
  // 如果被删除的是当前正在播放的音乐,则关闭音乐
  if MediaPlayer.FileName = ListBox_PlayFiles.Items.Strings[Index] then
  begin
    MediaPlayer.Close;
    FileIndex := -1;
    FileListName.WriteInteger('播放文件', '文件号', FileIndex);
  end;
  // 从列表中删除
  ListBox_PlayFiles.Items.Delete(Index);
  // 列表文件总数减一
  FileCount := FileCount - 1;
  if FileCount = 0 then
  begin
    FileIndex := -1;
    FileListName.WriteInteger('播放文件', '文件号', FileIndex);
  end;
  if Index = FileCount then
    ListBox_PlayFiles.ItemIndex := 0
  else
    ListBox_PlayFiles.ItemIndex := Index;

  FileListName.WriteInteger('播放文件', '文件数', FileCount);
  for Index := Index to FileCount - 1 do
  begin
    FileListName.WriteString ('文件列表', 'No.[' + IntToStr(Index) + ']',
    ListBox_PlayFiles.Items.Strings[Index]);
  end;
  //ListBoxScrollar(Sender);
  FileListName.DeleteKey('文件列表', 'No.[' + IntToStr(FileCount) + ']');
end;

procedure TfrmPlayList.Init;
var
  I: Integer;
  TmpName: string;
begin
  FileListName := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'EPlayer.ini');
  // 建立列表文件关联
  FileCount := FileListName.ReadInteger('播放文件', '文件数', 0);
  for I := 0 to FileCount - 1 do
  begin
    //TmpName := FileListName.ReadString('文件列表', 'No.[' + IntToStr(I) + ']', '');
    //ListBox_PlayFiles.Items.Add (TmpName);
    //Frm_MP3Copy.cxGridDBTableView1.
  end;
  FileIndex :=FileListName.ReadInteger('播放文件', '文件号', -1);
  //ListBox_PlayFiles.ItemIndex := FileIndex;
  //ListBoxScrollar(Sender);
  {for I := Ord('A') to Ord('Z') do
  begin
    Drive := Chr(I);
    if GetDriveType(PChar(Drive + ':\' + #0)) = DRIVE_CDROM  then
      Break;
  end;}
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -