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

📄 playlist.~pas

📁 一个delphi制作的mp3播放器!
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
end;

procedure TForm3.LbNameKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   KeyDown(Lbname,LbPath,key,shift);
end;

procedure TForm3.MoreFilNameLbKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     KeyDown(MoreFilNameLb,MoreFilPathLb,key,Shift)
end;

procedure  TForm3.AddFolderDef(InsertPos1:word;DragLbName,DragLbPath:Tlistbox;FolderSel:string;msg:Tmessage);//;FoldLbPath,FoldLbName
var
  SeaRec:Tsearchrec;
  oldDir:string;
begin
    if directoryExists(Foldersel) then
      begin//进入该目录,进入其中的子目录和文件
        oldDir:=GetCurrentDir;
        chDir(FolderSel);
        if FindFirst(FolderSel+'\*.*',faAnyFile,SeaRec)=0 then
         begin
            repeat
               if (searec.Attr and fadirectory )>0 then
                 begin//如果不是目录 且 不是'.' 且 '..'则递归调用
                    if (SeaRec.Name[1]<>'.') then
                        AddFolderDef(InsertPos1,LbName,LbPath,SeaRec.Name,msg);//进入子目录
                 end//递归调用结束
               else //若是文件 则直接添加该文件
                  if pos(lowercase(ExtractFileExt(SeaRec.Name)),'*.*.mp3.wav.asf.dat.avi.mpeg*.wma.mid')>=4 then
                     begin
                         DragLbPath.Items.Add(FolderSel+'\'+SeaRec.Name);
                         DragLbName.Items.Add(GetFileName(FolderSel+'\'+SeaRec.Name));
                     end;
               until FindNext(SeaRec)<>0;
          end;//结束查找
       end
     else//为递归调用设置标志,否则进入
end;

procedure TForm3.DelSpbClick(Sender: TObject);
begin
try
   if dragPos=LbName1  then
        DeleteDefine(LbName,LbPath)
      Else
         DeleteDefine(MoreFilNameLb,MoreFilPathLb);
except
   exit;
  end;
end;

procedure TForm3.ClearSpbClick(Sender: TObject); //清空文件列表
begin
   case ComboBox1.ItemIndex of
    1:
       begin
          if MessageDlg('确认要清空'+' "所有音乐" '+'下的文件列表 ? ',mtConfirmation,
              [mbYes,MbNo],0)=MrYes then//确认要清空文件列表
             begin
                 LbName.Clear; //清空文件列表
                 LbPath.Clear;
             end;
       end;
    0:
       begin
           if MessageDlg('确认要清空'+' "正在播放" '+'下的文件列表 ? ',mtConfirmation,
              [mbYes,MbNo],0)=MrYes then
              begin
                 MoreFilNameLb.Clear; //清空文件列表
                 MoreFilpathLb.Clear;
              end;   
       end;
    end;
end;

procedure TForm3.CloseSpbClick(Sender: TObject); //隐藏播放列表
begin
   Form3.Hide; //用Hide 比close更好
end;

procedure TForm3.AddFolderSpbClick(Sender: TObject);
var
   SelDir:string;
   message:Tmessage;
begin  //别忘了加上FileCtrl在 uses 中
    ComboBox1.ItemIndex:=1;//显示'所有音乐'列表
    if  SelectDirectory(SelDir,[sdAllowCreate],0) then
         AddFolderDef(LbName.Items.Count,LbName,LbPath,SelDir,message);//添加到播放列表中
end;

procedure TForm3.AddFilePopPopup(Sender: TObject);
begin
    AddFolderSpb.Visible:=true;
    AddFilesSpb.Visible:=true;
end;

procedure TForm3.AddFilesSpbClick(Sender: TObject);
var
    CurrentFiles,Files,i:word; 
    SelFile:string;//所选文件
begin
try
    if (LbName.ItemIndex<>-1) then //如果选中了文件
       SelFile:=ExtractFileDir(Lbpath.Items.Strings[LbName.ItemIndex])
    else
       if (MoreFilNameLb.ItemIndex<>-1) then
          SelFile:=ExtractFileDir(MoreFilPathLb.Items.Strings[MoreFilNameLb.ItemIndex]);
    Form1.OpenDialog1.InitialDir:=SelFile;
    //CurrentFiles:=Lbname.Items.Count;不需判断,因为添加在Listbox 后面
    Form1.OpenDialog1.Options:=[ofEnableSizing,ofAllowMultiSelect];//设置多选
    Form1.Opendialog1.Title:='添加一个或多个文件';
    if Form1.OpenDialog1.Execute then
      begin
        for i:=0 to (Form1.OpenDialog1.Files.Count-1) do
           begin
              CurrentFile:=Form1.OpenDialog1.Files.strings[i];
              if  not DirectoryExists(CurrentFile) then//如果不是文件夹则添加
                 begin
                     LbName.Items.Add(GetFileName(currentFile));
                     LbPath.Items.Add(currentFile);
                  end;
           end;
      end;
   ComboBox1.ItemIndex:=1;//显示'所有音乐'列表
except
  exit;
  end;


end;

procedure TForm3.AddFileSpbClick(Sender: TObject);
begin
   if not AddFilesSpb.Visible then
   begin
      AddFilesSpb.Top:=AddFileSpb.Top+AddFilesSpb.Height;//添加文件的按扭位置
      AddFolderSpb.Top:=AddFileSpb.Top+2*AddFilesSpb.Height;
   end;
   AddFolderSpb.Show;//显示添加文件的两个按钮
   AddFilesSpb.Show;

end;

procedure TForm3.ReNameedMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   //ReNameEdExit(sender);//调用改名过程
end;

procedure TForm3.CopyClick(Sender: TObject);
//const   SaveDlg:TFileSaveAs.Dialog;
begin
   if LbName.ItemIndex<>-1 then  //确定是哪个列表
       SaveFile(LbName,LbPath);
   if MoreFilNameLb.ItemIndex<>-1 then
      SaveFile(MoreFilNameLb,MoreFilPathLb);
end;

procedure TForm3.SaveFile(SaveLbName,SaveLbPath:Tlistbox);//自定义保存文件过程
var
   FromFIle,ToFile,FileFilter:string;
   SaveIndex:longInt;
begin
   SaveIndex:=SaveLbName.ItemIndex;
   FromFile:=SaveLbPath.Items.Strings[SaveIndex];//得到要复制的文件名
   if not FileFind(FromFile) then//查找文件是否存在
      exit;
   with FileSaveAs1.Dialog do
    begin
      FileName:=SaveLbPath.Items.Strings[SaveIndex];
      if FileExists(FileName) then
        if messageDlg('文件已经存在在,是否替换?',mbCancel, mbYes)<>mrYes then
           eixt;//退出
      Filter:=ExtractFileExt(FromFile);//设置过滤器
      options:=[ofAllowMultiSelect];
      if not execute then exit;//若按取消键,则退出
      with TMemorystream.Create do//相当于创建了TMemorystream的一个实例AMemorystream
        try
          LoadFromFIle(FromFile);
          Application.ProcessMessages;
          SaveToFile(FileName+Filter);
          showmessage('文件复制完成!');
        except
           showmessage('文件复制出错!目标磁盘可能已满!');
        free;
       end;
     end;
end;
procedure TForm3.MoreFilNameLbMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   MouDnPos:=x;//记下鼠标按下时的位置
   MouDn:=True;
   MouDnIndex:=Tlistbox(sender).ItemAtPos(Point(x,y),True);//参数为true时,MouDnIndex为-1
   case dragpos of //取得鼠标的位置
   LbName1:
   begin
     if MoudnIndex<>-1 then
         MoudnFile:=LbPath.items.Strings[MoudnIndex];
   end;
   MoreFilNameLb1:
   begin
      if MoudnIndex<>-1 then
          MoudnFile:=MoreFilPathLb.items.Strings[MouDnIndex];
   end;
   end;
    if Button=mbright then //这比在mouseup中处理好上些
       if (MouDnIndex<>-1) then
           begin
              Tlistbox(sender).Selected[MouDnIndex]:=true;
              PopupMenu1.AutoPopup:=true;
              copy.Enabled:=true;
           end
      else
        begin
           PopupMenu1.AutoPopup:=false;
           copy.Enabled:=false;
         end;
end;


procedure TForm3.ScanFileClick(Sender: TObject);//浏览文件所在目录
var
  Return:integer;
begin
   if not FileFind(MoudnFile) then//判断文件是否存在
     exit;
   Return:=winexec(Pchar('explorer.exe /e,/select,'+MoudnFile),Sw_showNormal);
   case Return of  //MoudnFile时选择的文件
      Error_Bad_format:      showmessage('不是一个Win32 合法的程序 ');
      Error_File_Not_Found:     showmessage('指定文件未找到');
    end;
end;

procedure TForm3.FormShow(Sender: TObject);
begin
   Form3.top:=Form1.top+Form1.Height;//初始化播放列表的位置
   Form3.Left:=Form1.Left+Form1.Width-Form3.Width;
end;

procedure TForm3.SpeedButton1Click(Sender: TObject);
begin
  Form3.hide;
end;

procedure TForm3.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   if Button=mbleft then
      begin//该函数从当前线程中的窗口释放鼠标捕获,并恢复通常的鼠标输入处理
         ReleaseCapture;
         Perform(WM_SYSCOMMAND,$F012,0);
      end;
end;

procedure TForm3.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
     if AddFolderSpb.Visible or AddFilesSpb.Visible then
       begin
           AddFolderSpb.Hide;//隐藏添加文件的两个按钮
           AddFilesSpb.Hide;
       end;
     if ClearSpb.Visible then
     begin
        DelSpb.hide;
        ClearSpb.Hide;
     end;
end;

procedure TForm3.FormResize(Sender: TObject);
begin
   if Form3.width<>WidthFrm then //判断窗体的宽度改变
   begin
       ComboBox1.Width:=form3.Width-10;
       LbName.Width:=form3.Width-10;
       MoreFilNameLb.Width:=form3.Width-10;
   end;
   if Form3.height<>HeightFrm then //  判断窗体的高度改变
   begin
      LbName.height:=LbName.height+abs(Form3.height-HeightFrm+10);
      MoreFilNameLb.height:=LbName.height+abs(Form3.height-HeightFrm+10);
   end;
   HeightFrm:=form3.height;
   WidthFrm:=form3.width;
end;           

procedure TForm3.ShowDelSpbClick(Sender: TObject);
begin
   if not ClearSpb.Visible then
   begin
      DelSpb.Top:=ShowDelspb.Top-DelSpb.Height;//添加删除文件的按扭位置
      ClearSpb.Top:=ShowDelspb.Top-2*ClearSpb.Height;
   end;
   DelSpb.Show;
   ClearSpb.Show;

end;

end.

⌨️ 快捷键说明

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