?? playlist.pas.~31~
字號:
unit PlayList;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,FileCtrl,ComFunction,ComVariable,shellapi,StrUtils
;
type
TForm2 = class(TForm)
OpenDialog: TOpenDialog;
imgBottom: TImage;
PlayListBox: TListBox;
imgLeft: TImage;
imgTop: TImage;
imgFolder: TImage;
imgAdd: TImage;
imgClear: TImage;
imgDel: TImage;
imgListExit: TImage;
imgRight: TImage;
procedure FormCreate(Sender: TObject);
procedure imgFolderClick(Sender: TObject);
procedure imgAddClick(Sender: TObject);
procedure imgClearClick(Sender: TObject);
procedure imgDelClick(Sender: TObject);
procedure imgListExitClick(Sender: TObject);
procedure imgTopMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure imgTopMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure imgBottomMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure imgBottomMouseLeave(Sender: TObject);
procedure imgBottomMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure imgBottomMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure imgFolderMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure imgFolderMouseLeave(Sender: TObject);
procedure imgFolderMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure imgAddMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure imgAddMouseLeave(Sender: TObject);
procedure imgAddMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure imgClearMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure imgClearMouseLeave(Sender: TObject);
procedure imgClearMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure imgDelMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure imgDelMouseLeave(Sender: TObject);
procedure imgDelMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure imgListExitMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure imgListExitMouseLeave(Sender: TObject);
procedure imgListExitMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PlayListBoxDblClick(Sender: TObject);
private
procedure ChangeSize;
procedure PaintRect(Y:integer);
procedure DragAdd(FileName:string);
Procedure DragPlay;
procedure WMDROPFILES(var Msg: TMessage); message WM_DropFiles;
public
function PanleInitialization:boolean;
end;
var
Form2: TForm2;
Pos:TPoint;
intStart,intEnd,TempY:integer;
IsChange:boolean;
implementation
uses main;
{$R *.dfm}
procedure TForm2.DragPlay;
begin
PlayIndex:=PlayListBox.Items.Count-1;
PlayListBox.ItemIndex:=PlayIndex;
form1.StopPlay;
form1.playfile;
end;
procedure TForm2.DragAdd(FileName:string);
var
sSuffixs,temp:string;
I:integer;
begin
sSuffixs:='.mp3;.wav;.wma;.wmv;.mpg;.mpeg;.asf;.avi;.flv';
if AnsiContainsText(UpperCase(sSuffixs),UpperCase(extractfileext(FileName))) then
begin
lstFilePath.Add(FileName);
i:=LastDelimiter('\',FileName);
temp:=copy(FileName,i+1,length(FileName));
lstTitle.Add(temp);
playlistbox.Items.Add(temp);
end
else
begin
ShowMessage('不支持 '+extractfileext(FileName)+' 格式');
Exit;
end;
if not IsPlay then DragPlay;
end;
procedure tform2.WMDROPFILES(var Msg: TMessage);
var
pcFileName: PChar;
i, iSize, iFileCount: integer;
begin
pcFileName := ''; // 避免編輯時出現(xiàn)警告
iFileCount := DragQueryFile(Msg.WParam, $FFFFFFFF, pcFileName, 255);
for i := 0 to iFileCount - 1 do
begin
iSize := DragQueryFile(Msg.WParam, i, nil, 0) + 1;
pcFileName := StrAlloc(iSize);
DragQueryFile(Msg.WParam, i, pcFileName, iSize);
if FileExists(pcFileName) then
DragAdd(pcFileName); // 看你要怎 處理這個接收到的檔名
StrDispose(pcFileName);
end;
DragFinish(Msg.WParam);
end;
procedure TForm2.PaintRect(Y:integer);
var
DC:HDC;
can:TCanVas;
R:TRect;
begin
DC:=GetDC(0);
Can:=TCanvas.Create;
Can.Handle:=DC;
R.Top:=self.Top;
R.Left:=self.Left;
R.Right:=self.Left+self.Width;
R.Bottom:=Y;
Can.DrawFocusRect(R);
ReleaseDC(0,DC);
Can.Free;
end;
procedure TForm2.FormCreate(Sender: TObject);
var
I:integer;
Temp:String;
begin
self.Top:=playlistPos.Y;
self.Left:=playlistPos.X;
PanleInitialization;
LoadPlayList;
playlistbox.Items.Clear;
for I := 0 to lstFilePath.Count - 1 do
begin
if trim(lstTitle[I])<>'' then
begin
playlistbox.Items.Add(lstTitle[I]);
end
else
begin
Temp:=lstFilepath[I];
temp:=copy(temp,(LastDelimiter('\',temp))+1,length(temp));
temp:=Copy(temp,1,Length(temp)-4);
playlistbox.Items.Add(temp);
end;
end;
playlistbox.ItemIndex:=playindex;
if IsShowList then show
else hide;
DragAcceptFiles(PlayListBox.Handle,true);
if Paramcount > 0 then
DragAdd(paramstr(1));
end;
procedure TForm2.imgAddClick(Sender: TObject);
var
temp:string;
begin
if opendialog.Execute then
begin
temp:=opendialog.FileName;
lstFilePath.Add(temp);
temp:=copy(temp,(LastDelimiter('\',temp))+1,length(temp));
temp:=Copy(temp,1,Length(temp)-4);
lstTitle.Add(temp);
playlistbox.Items.Add(temp);
end;
end;
procedure TForm2.imgAddMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Painting(imgAdd,ConBoxInfo,3);
end;
procedure TForm2.imgAddMouseLeave(Sender: TObject);
begin
Painting(imgAdd,ConBoxInfo,0);
end;
procedure TForm2.imgAddMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Painting(imgAdd,ConBoxInfo,2);
end;
procedure TForm2.imgBottomMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
StartPos:TPoint;
begin
if not(shift=[ssleft]) then Exit;
if ((imgBottom.Height-Y)>0)
and ((imgBottom.Height-Y)<5) then
begin
GetCursorPos(StartPos);
intStart:=Startpos.Y;
TempY:=-1;
PaintRect(intStart);
IsChange:=true;
end;
end;
procedure TForm2.imgBottomMouseLeave(Sender: TObject);
begin
Screen.cursor:=crDefault;
end;
procedure TForm2.imgBottomMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
MovePos:TPoint;
begin
if IsChange then
begin
if shift=[ssleft] then
begin
GetCursorPos(MovePos);
if TempY<>-1 then
PaintRect(TempY);
intEnd:=MovePos.Y;
TempY:=intEnd;
PaintRect(intEnd);
Exit;
end;
end;
if ((imgBottom.Height-Y)>0)
and ((imgBottom.Height-Y)<5) then
Screen.cursor:=crVSplit
else Screen.cursor:=crDefault;
end;
procedure TForm2.imgBottomMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Screen.cursor:=crDefault;
if IsChange then
begin
InvalidateRect(0,nil,TRUE);//刷新桌面
IsChange:=false;
ListLength:=ListLength+(intEnd-intStart);
if ListLength<50 then ListLength:=50;
ChangeSize;
end;
end;
procedure TForm2.imgClearClick(Sender: TObject);
begin
playlistbox.Items.Clear;
lstTitle.Clear;
lstFilePAth.Clear;
end;
procedure TForm2.imgClearMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Painting(imgClear,ConBoxInfo,3);
end;
procedure TForm2.imgClearMouseLeave(Sender: TObject);
begin
Painting(imgClear,ConBoxInfo,0);
end;
procedure TForm2.imgClearMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Painting(imgClear,ConBoxInfo,2);
end;
procedure TForm2.imgDelClick(Sender: TObject);
begin
if playlistbox.ItemIndex=-1 then Exit;
lstFilePath.Delete(playlistbox.ItemIndex);
lstTitle.Delete(playlistbox.ItemIndex);
playlistbox.Items.Delete(playlistbox.ItemIndex);
end;
procedure TForm2.imgDelMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Painting(imgDel,ConBoxInfo,3);
end;
procedure TForm2.imgDelMouseLeave(Sender: TObject);
begin
Painting(imgDel,ConBoxInfo,0);
end;
procedure TForm2.imgDelMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Painting(imgDel,ConBoxInfo,2);
end;
procedure TForm2.imgFolderClick(Sender: TObject);
var
sDir,sInfo,sSuffixs,temp:string;
I:integer;
begin
sInfo:='打開文件'+#10#13+'加載所選文件夾以及子文件夾所有符合要求的文件'
+#10#13+'(*.mp3;*.wav;*.wma;*.wmv;*.mpg;*.mpeg;*.asf;*.avi;*.flv)';
sSuffixs:='.mp3;.wav;.wma;.wmv;.mpg;.mpeg;.asf;.avi;.flv'; //其他格式以后添加 ,每個之間用分號隔開
if SelectDirectory(sInfo,'',sDir) then
begin
MakeFileList(sDir,sSuffixs,'',false);
PlayListBox.Items.Clear;
for I := 0 to lstFilePath.Count - 1 do
begin
temp:=lstFilepath[I];
temp:=copy(temp,(LastDelimiter('\',temp))+1,length(temp));
temp:=Copy(temp,1,Length(temp)-4);
lstTitle.Add(temp);
playlistbox.Items.Add(temp);
end;
end;
end;
procedure TForm2.imgFolderMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Painting(imgfolder,ConBoxInfo,3);
end;
procedure TForm2.imgFolderMouseLeave(Sender: TObject);
begin
Painting(imgfolder,ConBoxInfo,0);
end;
procedure TForm2.imgFolderMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Painting(imgfolder,ConBoxInfo,2);
end;
procedure TForm2.imgListExitClick(Sender: TObject);
begin
hide;
IsShowList:=false;
end;
procedure TForm2.imgListExitMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Painting(imglistExit,ConBoxInfo,3);
end;
procedure TForm2.imgListExitMouseLeave(Sender: TObject);
begin
Painting(imglistExit,ConBoxInfo,0);
end;
procedure TForm2.imgListExitMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Painting(imglistExit,ConBoxInfo,2);
end;
procedure TForm2.imgTopMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
pos.X:=X;pos.Y:=Y;
end;
procedure TForm2.imgTopMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Shift=[ssleft] then
begin
if conglutinate=false then
begin
Form2.Left:=Form2.Left+(X-pos.X);
Form2.Top:=Form2.Top+(Y-pos.Y);
if (abs(form2.Top-form1.Top-form1.Height)<20)and
(abs(form2.Left-form1.Left)<20) then
begin
form2.Top:=form1.Top+form1.Height;
form2.Left:=form1.left;
conglutinate:=true;
end;
end;
if conglutinate=true then
begin
if (abs(pos.X-X)>20)or
(abs(pos.Y-Y)>20) then
begin
Form2.Left:=Form2.Left+(X-pos.X);
Form2.Top:=Form2.Top+(Y-pos.Y);
conglutinate:=false;
end;
end;
end;
end;
function TForm2.PanleInitialization:boolean;
var
I:integer;
begin
Result:=true;
setLength(ConBoxInfo,self.ControlCount);
for I := 0 to ControlCount - 1 do
if Controls[I] is TImage then Controls[I].Create(Controls[I].Parent);
if not FaceInitialization(self,path+skinpath+'List.ini',ConBoxInfo) then
begin
Result:=False;
Exit;
end;
self.TransparentColor:=tran;
self.TransparentColorValue:=BackColor;
playlistbox.Color:=ListBackColor;
playlistbox.Font.Size:=fontsize;
playlistbox.Font.Color:=FontColor;
form2.Width:=imgtop.Width;
form2.Height:=imgtop.Height+imgbottom.Height+ListLength;
ChangeSize;
LoadTitle(imgtop,PlayListTitle);
update;
end;
procedure TForm2.PlayListBoxDblClick(Sender: TObject);
begin
if playlistbox.ItemIndex>=0 then
begin
PlayIndex:=playlistbox.ItemIndex;
form1.StopPlay;
form1.playfile;
end;
end;
procedure TForm2.ChangeSize;
begin
form2.Height:=imgtop.Height+imgbottom.Height+ListLength;
imgbottom.Top:=form2.Height-imgbottom.Height;
imgleft.Top:=imgtop.Height;
imgleft.Height:=ListLength;
imgright.Top:=imgtop.Height;
imgright.Left:=form2.Width-imgright.Width;
imgright.Height:=ListLength;
playlistbox.Top:=imgtop.Height;
playlistbox.Left:=imgleft.Width;
playlistbox.Width:=abs(playlistbox.Left-imgright.Left);
playlistbox.Height:=abs(playlistbox.Top-imgbottom.Top);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -