基本信息
源码名称:Pascal 局域网共享资源 源码
源码大小:0.39M
文件格式:.rar
开发语言:Pascal
更新时间:2015-02-12
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
带源代码的局域网共享资源浏览器
暂无
带源代码的局域网共享资源浏览器
暂无
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ToolWin, ComCtrls, ExtCtrls, Menus, StdCtrls, Tabs, ImgList,Inifiles,
Buttons,ShlObj,MultiSearchThreadUnit,ShellApi;
type
TMainForm = class(TForm)
ToolPanel: TPanel;
CoolBar1: TCoolBar;
BottomPanel: TPanel;
Splitter1: TSplitter;
MainMenu: TMainMenu;
MenuMain: TMenuItem;
MenuAbout: TMenuItem;
StatusBar: TStatusBar;
Splitter2: TSplitter;
BottomDockPanel: TPanel;
Splitter3: TSplitter;
ImageList1: TImageList;
LeftPanel: TPanel;
LeftDockPanel: TPanel;
LeftPageCtrl: TPageControl;
SearchTabSheet: TTabSheet;
SearchTree: TTreeView;
FavoTabSheet: TTabSheet;
FavoTree: TTreeView;
RightPanel: TPanel;
RightDockPanel: TPanel;
RightPageCtrl: TPageControl;
QucikViewTab: TTabSheet;
BtnNewDock: TSpeedButton;
FolderTabSheet: TTabSheet;
ShareListView: TListView;
FolderListView: TListView;
ListViewPopupMenu: TPopupMenu;
N_Open: TMenuItem;
N_Copy: TMenuItem;
N_Size: TMenuItem;
N_OpenWithNotpad: TMenuItem;
N1: TMenuItem;
N_Refresh: TMenuItem;
N_Favorite: TMenuItem;
N_NewWin: TMenuItem;
BtnFindComputer: TSpeedButton;
ClientPanel: TPanel;
ClientPageCtrl: TPageControl;
ShareTabSheet: TTabSheet;
BrowseListView: TListView;
InfoPanel: TPanel;
BottomPageCtrl: TPageControl;
AllFileTabSheet: TTabSheet;
AllListBox: TListBox;
FindTabSheet: TTabSheet;
FindListView: TListView;
Mp3TabSheet: TTabSheet;
Mp3ListView: TListView;
MovieTabSheet: TTabSheet;
MovieListView: TListView;
BtnDOS: TSpeedButton;
BtnConfigor: TSpeedButton;
N_CopyTo: TMenuItem;
BtnRefreshTree: TSpeedButton;
BottomPopupMenu: TPopupMenu;
N_SaveAll: TMenuItem;
SaveDlg: TSaveDialog;
MenuView: TMenuItem;
Menu_Tree: TMenuItem;
Menu_Folder: TMenuItem;
Menu_Result: TMenuItem;
BtnAutoSearch: TSpeedButton;
LanExplorer1: TMenuItem;
BtnPause: TSpeedButton;
BtnStop: TSpeedButton;
FavoTreePopupMenu: TPopupMenu;
N_DeleteFavo: TMenuItem;
IconCheckBox: TCheckBox;
N_BottomOpen: TMenuItem;
N_BottomCopy: TMenuItem;
N_BottomCopyTo: TMenuItem;
N_BottomFileSize: TMenuItem;
N_Property: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure LeftDockPanelStartDock(Sender: TObject;
var DragObject: TDragDockObject);
procedure LeftDockPanelEndDock(Sender, Target: TObject; X, Y: Integer);
procedure RightDockPanelStartDock(Sender: TObject;
var DragObject: TDragDockObject);
procedure RightDockPanelEndDock(Sender, Target: TObject; X,
Y: Integer);
procedure BottomDockPanelStartDock(Sender: TObject;
var DragObject: TDragDockObject);
procedure BottomDockPanelEndDock(Sender, Target: TObject; X, Y: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BtnNewDockClick(Sender: TObject);
procedure ShareListViewClick(Sender: TObject);
procedure ShareListViewSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure FolderListViewClick(Sender: TObject);
procedure RightPageCtrlChange(Sender: TObject);
procedure ClientPageCtrlChange(Sender: TObject);
procedure N_OpenClick(Sender: TObject);
procedure N_CopyClick(Sender: TObject);
procedure ListViewPopupMenuPopup(Sender: TObject);
procedure N_SizeClick(Sender: TObject);
procedure N_OpenWithNotpadClick(Sender: TObject);
procedure N_NewWinClick(Sender: TObject);
procedure N_FavoriteClick(Sender: TObject);
procedure SearchTreeClick(Sender: TObject);
procedure FavoTreeClick(Sender: TObject);
procedure BtnFindComputerClick(Sender: TObject);
procedure BtnDOSClick(Sender: TObject);
procedure BtnConfigorClick(Sender: TObject);
procedure N_RefreshClick(Sender: TObject);
procedure N_CopyToClick(Sender: TObject);
procedure BtnRefreshTreeClick(Sender: TObject);
procedure N_SaveAllClick(Sender: TObject);
procedure Menu_TreeClick(Sender: TObject);
procedure Menu_FolderClick(Sender: TObject);
procedure Menu_ResultClick(Sender: TObject);
procedure BtnAutoSearchClick(Sender: TObject);
procedure LanExplorer1Click(Sender: TObject);
procedure BtnPauseClick(Sender: TObject);
procedure BtnStopClick(Sender: TObject);
procedure N_DeleteFavoClick(Sender: TObject);
procedure FavoTreePopupMenuPopup(Sender: TObject);
procedure IconCheckBoxClick(Sender: TObject);
procedure AllListBoxDblClick(Sender: TObject);
procedure FindListViewDblClick(Sender: TObject);
procedure Mp3ListViewDblClick(Sender: TObject);
procedure MovieListViewDblClick(Sender: TObject);
procedure N_BottomOpenClick(Sender: TObject);
procedure N_BottomCopyClick(Sender: TObject);
procedure BottomPopupMenuPopup(Sender: TObject);
procedure N_BottomFileSizeClick(Sender: TObject);
procedure N_BottomCopyToClick(Sender: TObject);
procedure StatusBarMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormResize(Sender: TObject);
procedure N_PropertyClick(Sender: TObject);
private
{ Private declarations }
ini: Tinifile;
f: textfile;
TabSheetX: TTabSheet;
CurListView: TListView;
CurDirName,CurGroupName:string;
CurRlistItem:TListItem;
TemTreeNode:TTreeNode;
CurBottomListView:TListView;
FOldProc1,FOldProc2,FOldProc3 : TWndMethod;
procedure OpenIni;
procedure SaveIni;
procedure OpenFavorite;
procedure SaveFavorite;
procedure MyListViewClick(Sender: TObject);
procedure LanTreeClick(LanTree:TTreeView);
procedure MyBottomListViewClick(ListView:TListView);
procedure DockHostClick(Sender: TObject);
Procedure MyEndDock;
procedure MyDockCloseProc1(var message : TMessage);
procedure MyDockCloseProc2(var message : TMessage);
procedure MyDockCloseProc3(var message : TMessage);
public
{ Public declarations }
OldFileCount:integer;
StrListAll,StrListSearch,StrListMp3,StrListMovie:TStringList;
procedure BringFront;
procedure CheckFile(FileName,MyDir,MyGroup:string;ImageIndex:integer);
end;
type FileType = (IsFile, IsDir);
type OwnerType = (InTreeView,InListView);
type
PMyTreeItem = ^TMyTreeItem;
TMyTreeItem = record
DirName,Group: string;
TabIndex: integer;
MyClientListView:TListView;
MyRightListItem:TListItem;
end;
type
PListItem = ^TMyListItem;
TMyListItem = record
//dirName,group: string;
index,count: integer;
end;
type
pTabData = ^TMyTabData;
TMyTabData=record
MyGroup,MyDir:string;
MyRListItem:TListItem;
end;
TExecuteThread=class(TThread)
private
exeFile,exeDir:string;
protected
procedure Execute; override;
//Procedure Adddir;
end;
var
MainForm: TMainForm;
AppDir: String;
GroupList: array[0..500]of string;
GroupNum,ver,SearchBeginNum,FinishNum,ThreadNum:integer;
CanOpen: Boolean;
MyItemPtr: PMyTreeItem;
ListItemPtr: PListItem;
TabDataPtr: pTabData;
recursive,stop,bAutoSearch,bSysIcon: boolean;
MainSearch:TMainThread;
implementation
uses GetDomainThreadUnit,SearchGroupThreadUnit,SearchHostThreadUnit,
SearchDirThreadunit,ConFigor,FmxUtils,CopyTo,About;
{$R *.DFM}
procedure TExecuteThread.Execute;
begin
ExecuteFile(exefile,'',exedir,SW_SHOW);
end;
procedure TMainForm.MyDockCloseProc1(var message: TMessage);
begin
if (message.Msg = WM_SYSCOMMAND) and (message.WParam = SC_CLOSE) then
Menu_Tree.Checked := false;
FOldProc1(message);
end;
procedure TMainForm.MyDockCloseProc2(var message: TMessage);
begin
if (message.Msg = WM_SYSCOMMAND) and (message.WParam = SC_CLOSE) then
Menu_Folder.Checked := false;
FOldProc2(message);
end;
procedure TMainForm.MyDockCloseProc3(var message: TMessage);
begin
if (message.Msg = WM_SYSCOMMAND) and (message.WParam = SC_CLOSE) then
Menu_Result.Checked := false;
FOldProc3(message);
end;
procedure TMainForm.DockHostClick(Sender: TObject);
begin
//LeftPanel.visible:=LeftDockPanel.Visible;
if LeftPanel.VisibleDockClientCount=0 then LeftPanel.Hide else LeftPanel.Show;
if RightPanel.VisibleDockClientCount=0 then RightPanel.Hide else RightPanel.Show;
if BottomPanel.VisibleDockClientCount=0 then BottomPanel.Hide else BottomPanel.Show;
{if LeftDockPanel.HostDockSite.DockClientCount=1
then LeftDockPanel.HostDockSite.Visible:= LeftDockPanel.Visible;}
Menu_Tree.Checked := LeftDockPanel.Visible;
Menu_Folder.Checked := RightDockPanel.Visible;
Menu_Result.Checked := BottomDockPanel.Visible;
end;
Procedure TMainForm.MyEndDock;
begin
if (LeftPanel.VisibleDockClientCount=0) then
begin
LeftPanel.Visible := false;
Splitter2.Visible := false;
end
else
begin
LeftPanel.Visible := true;
Splitter2.Visible := true;
Splitter2.Align := alRight;
Splitter2.Align := alLeft;
end;
if (BottomPanel.VisibleDockClientCount=0) then
begin
BottomPanel.Visible := false;
Splitter1.Visible := false;
end
else
begin
BottomPanel.Visible := true;
Splitter1.Visible := true;
Splitter1.Align := alTop;
Splitter1.Align := alBottom;
end;
if (RightPanel.VisibleDockClientCount=0) then
begin
RightPanel.Visible := false;
Splitter3.Visible := false;
end
else
begin
RightPanel.Visible := true;
Splitter3.Visible := true;
Splitter3.Align := alRight;
end;
end;
procedure TMainForm.CheckFile(FileName,MyDir,MyGroup:string;ImageIndex:integer);
var listitem:TListitem;
begin
with ConfigorForm do
begin
if CheckDest(FileName) then
begin
listitem:=FindListview.Items.Add;
listitem.ImageIndex := ImageIndex;
listitem.Caption := extractfilename(FileName);
listitem.SubItems.add(MyDir);
listitem.SubItems.add(MyGroup);
StrListSearch.Add(' 工作组:' MyGroup ' 地址:' MyDir '\' FileName);
end;
if CheckMP3(FileName) then
begin
listitem:=MP3Listview.Items.Add;
listitem.ImageIndex := ImageIndex;
listitem.Caption := extractfilename(FileName);
listitem.SubItems.add(MyDir);
listitem.SubItems.add(MyGroup);
StrListMp3.Add(' 工作组:' MyGroup ' 地址:' MyDir '\' FileName);
end;
if CheckMovie(FileName) then
begin
listitem:=MovieListview.Items.Add;
listitem.ImageIndex := ImageIndex;
listitem.Caption := extractfilename(FileName);
listitem.SubItems.add(MyDir);
listitem.SubItems.add(MyGroup);
StrListMovie.Add(' 工作组:' MyGroup ' 地址:' MyDir '\' FileName);
end;
end;
end;
procedure TMainForm.OpenIni;
begin
ini:=Tinifile.create(AppDir 'LanExplorer.ini');
if not fileexists('LanExplorer.ini')
then
begin
ini.writeInteger('window position','top',top);
ini.writeInteger('window position','left',left);
ini.writeInteger('window position','width',width);
ini.writeInteger('window position','height',height);
ini.writeString('Dock','RightDockPanel','alRight');
//ini.writeString('IP','IP2',Edit2.Text);
end
else
begin
top:=ini.ReadInteger('window position','top',50);
left:=ini.ReadInteger('window position','left',50);
width:=ini.ReadInteger('window position','width',500);
height:=ini.ReadInteger('window position','height',50);
if (width=screen.Width)and(height=screen.Height)then WindowState:=wsMaximized;
if ini.ReadString('Dock','RightDockPanel','alRight')='alLeft'
then BtnNewDockClick(Self);
//Edit2.Text:=ini.ReadString('IP','IP2',Edit2.Text);
end;
ini.Free;
end;
procedure TMainForm.SaveIni;
begin
if AppDir[1]='\' then exit; //open on the LAN
//showmessage(mydir);
ini:=Tinifile.create(AppDir 'LanExplorer.ini');
ini.writeInteger('window position','top',top);
ini.writeInteger('window position','left',left);
ini.writeInteger('window position','width',width);
ini.writeInteger('window position','height',height);
if RightDockPanel.HostDockSite = LeftPanel then
ini.writeString('Dock','RightDockPanel','alLeft')
else ini.writeString('Dock','RightDockPanel','alRight');
//ini.writeString('IP','IP2',Edit2.Text);
ini.Free;
end;
procedure TMainForm.OpenFavorite;
var RootNode,TemNode:TTreeNode;
fg,fs:string;
begin
RootNode:=FavoTree.Items[0];
if fileexists('Favorite.txt') then
begin
assignfile(f,'Favorite.txt');
reset(f);
while not eof(f) do
begin
readln(f,fg);
New(MyItemPtr);
MyItemPtr^.group := fg;
readln(f,fs);
MyItemPtr^.dirName := fs;
{ListItem:=ListView7.Items.Insert(0);
listitem.Caption := fs;
listitem.SubItems.Text := fg;}
TemNode:=FavoTree.Items.AddChild(RootNode,fs);
TemNode.Data := MyItemPtr;
end;
closefile(f);
//FavTree.LoadfromFile('Favorite.txt');
try
FavoTree.Items[0].Expand(false);
except on ETreeViewError do
begin
FavoTree.Items.AddChildFirst(nil,'收藏');
end;
end; //end of try
end;
end;
procedure TMainForm.SaveFavorite;
var i:integer;
TempNode:TTreeNode;
begin
if AppDir[1]<>'\' then //open on the LAN
if FavoTree.Items[0].HasChildren then
begin
tempNode:=nil; // just remove warning;
assignfile(f,AppDir '\Favorite.txt');
rewrite(f);
for i:=1 to FavoTree.Items[0].count do
begin
tempNode:= FavoTree.Items[0].Item[i-1];
writeln(f,trimright(pMyTreeItem(tempNode.data)^.group));
writeln(f,tempNode.text);
end;
closefile(f);
caption:=tempNode.text; // just remove warning;
end;
end;
procedure TMainForm.BringFront;
begin
Application.BringToFront;
end;
procedure TMainForm.MyListViewClick(Sender: TObject);
var DirName,extn,FileName,GroupName:string;
DirSearcher:TSearchDirThread;
Exe: TExecuteThread;
newListItem,RunItem:Tlistitem;
TemListView:TListView;
begin
RunItem:= (Sender as TListView).Selected;
if (RunItem=nil) then exit;
FileName:= RunItem.Caption;
DirName:=pTabData(ClientPageCtrl.ActivePage.Tag).MyDir;
GroupName:=pTabData(ClientPageCtrl.ActivePage.Tag).MyGroup;
if GroupName[length(GroupName)]=#0
then delete(GroupName,length(GroupName),1);
//caption:= dirname '\' filename;
if (Sender as TListView).Selected.ImageIndex=0 then //folder
begin
tabsheetx:=ttabsheet.Create(Self);
tabsheetx.PageControl := ClientPageCtrl;
DirName:=DirName '\' FileName;
tabsheetx.Caption := DirName;
tabsheetx.Repaint;
TemListView:=TListView.Create(tabsheetx);
with TemListView do
begin
Parent := tabsheetx;
Align := alclient;
Visible := true;
OnDblClick := MyListviewClick;
PopupMenu := ListViewPopupMenu;
//OnMOuseDown := RMouseDownHandler;
ViewStyle := vssmallicon;
SmallImages := imagelist1;
MultiSelect := true;
end;
ClientPageCtrl.ActivePageIndex :=tabsheetx.TabIndex;
RightPageCtrl.ActivePageIndex:=1;
DirSearcher:=TSearchDirThread.create(true);
DirSearcher.mydir := DirName;
//DirSearcher.mygroup := groupname;
DirSearcher.myList := TemListView;
DirSearcher.Rlist :=FolderListView;
//DirSearcher.myTree := Treeview1;
//DirSearcher.ButtonListbox := Listbox9;
newListItem:=FolderListview.Items.Insert(0);
newListItem.Caption := extractfilename(DirSearcher.mydir);
new(ListItemPtr);
ListItemPtr.index := TabSheetX.TabIndex;
NewListItem.data:= ListItemPtr;
NewListItem.SubItems.Add(DirName);
NewListItem.SubItems.Add(GroupName);
NewListItem.ImageIndex := 6;
new(TabDataPtr);
TabDataPtr.MyGroup := GroupName;
TabDataPtr.MyDir := DirName;
TabDataPtr.MyRListItem :=NewListItem;
TabSheetX.Tag := integer(TabDataPtr);
DirSearcher.RListItem := NewListItem;
DirSearcher.ClickType := InListView;
DirSearcher.FreeOnTerminate := true;
DirSearcher.Resume;
end
//****************************
else
begin
extn:=lowercase(ExtractFileExt(filename));
if not bSysIcon then
//if extn<>'.exe' then runItem.ImageIndex := 17 else runItem.ImageIndex:=18;
if extn<>'.exe' then
begin
if runItem.ImageIndex=1 then runItem.ImageIndex := 17
else runItem.ImageIndex:=1;
end
else
begin
if runItem.ImageIndex=2 then runItem.ImageIndex:=18
else runItem.ImageIndex:=2;
end;
Exe:=TExecuteThread.Create(true);
Exe.exeFile := DirName '\' filename;
Exe.exeDir := DirName;
Exe.FreeOnTerminate := true;
Exe.Resume;
//ExecuteFile(dir '\' filename,'',dir,SW_SHOW);
end;
//end;
end;
procedure TMainForm.FormCreate(Sender: TObject);
var GetDomainThread:TGetDomainThread;
begin
AppDir:=ExtractFilePath(ParamStr(0));
//ButtomRightPanel.BevelOuter:=bvNone;
//DockPanel.BevelOuter:=bvNone;
LeftPanel.BevelOuter:=bvNone;
RightPanel.BevelOuter:=bvNone;
BottomPanel.BevelOuter:=bvNone;
LeftPanel.OnClick := DockHostClick;
RightPanel.OnClick := DockHostClick;
BottomPanel.OnClick := DockHostClick;
{LeftPanel.AutoSize := true;
RightPanel.AutoSize := true;
BottomPanel.AutoSize := true;}
BottomDockPanel.manualdock(nil);
BottomDockPanel.manualdock(BottomPanel);
//ButtomRightPanel.manualdock(BottomPanel);
//ClientPageCtrl.ManualDock(Self);
LeftDockPanel.manualdock(nil);
LeftDockPanel.manualdock(LeftPanel);
RightDockPanel.manualdock(nil);
RightDockPanel.manualdock(RightPanel);
StrListAll:=TStringList.Create;
StrListSearch:=TStringList.Create;
StrListMp3:=TStringList.Create;
StrListMovie:=TStringList.Create;
GroupNum:=0;
FinishNum:=0;
ThreadNum:=3;
CanOpen:=false;
OldFileCount:=0;
GetDomainThread:=TGetDomainThread.Create(true);
GetDomainThread.LanTree := SearchTree;
GetDomainThread.Resume;
recursive:=false;
stop:=false;
bAutoSearch:=true;
OpenIni;
OpenFavorite;
BrowseListView.OnDblClick := MyListViewClick;
new(TabDataPtr);
TabDataPtr.MyGroup := '';
TabDataPtr.MyDir := '';
TabDataPtr.MyRListItem := nil;
ShareTabSheet.Tag := integer(TabDataPtr);
end;
procedure TMainForm.LeftDockPanelStartDock(Sender: TObject;
var DragObject: TDragDockObject);
begin
LeftPanel.Visible := true;
{LeftPanel.AutoSize := false;
LeftPanel.Width := 200;}
end;
procedure TMainForm.LeftDockPanelEndDock(Sender, Target: TObject; X,
Y: Integer);
begin
if Target is TCustomDockForm then
begin
FOldProc1 := (Target as TCustomDockForm).WindowProc;
(Target as TCustomDockForm).WindowProc := MyDockCloseProc1;
end;
MyEndDock;
end;
procedure TMainForm.RightDockPanelStartDock(Sender: TObject;
var DragObject: TDragDockObject);
begin
{RightPanel.AutoSize := false;
RightPanel.Width:=160; }
RightPanel.Visible := true;
end;
procedure TMainForm.RightDockPanelEndDock(Sender, Target: TObject; X,
Y: Integer);
begin
if Target is TCustomDockForm then
begin
FOldProc2 := (Target as TCustomDockForm).WindowProc;
(Target as TCustomDockForm).WindowProc := MyDockCloseProc2;
end;
MyEndDock;
end;
procedure TMainForm.BottomDockPanelStartDock(Sender: TObject;
var DragObject: TDragDockObject);
begin
{BottomPanel.AutoSize := false;
BottomPanel.Height:=102;}
BottomPanel.Visible := true;
{BottomPanel.Align := altop;
BottomPanel.Align := alBottom;}
end;
procedure TMainForm.BottomDockPanelEndDock(Sender, Target: TObject; X,
Y: Integer);
begin
if Target is TCustomDockForm then
begin
FOldProc3 := (Target as TCustomDockForm).WindowProc;
(Target as TCustomDockForm).WindowProc := MyDockCloseProc3;
end;
MyEndDock;
end;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SaveIni;
SaveFavorite;
end;
procedure TMainForm.BtnNewDockClick(Sender: TObject);
begin
RightDockPanel.manualdock(LeftPanel,nil,alBottom);
RightPanel.Visible := false;
Splitter3.Visible := false;
{RightDockPanel.Height := (LeftPanel.Height div 3);
RightDockPanel.Align := alBottom;
LeftDockPanel.Height:=LeftPanel.Height-RightDockPanel.Height;
RightDockPanel.Color := clred;}
BtnNewDock.Down := true;
end;
procedure TMainForm.LanTreeClick(LanTree:TTreeView);
var GroupSearcher: TSearchGroupThread;
HostSearcher:TSearchHostThread;
DirSearcher:TSearchDirThread;
Exe: TExecuteThread;
TemListView:TListView;
ListItem:TListItem;
TemDirName:string;
//i:integer;
begin
if (LanTree.Selected = nil)or(LanTree.Selected = LanTree.Items[0]) then exit;
case LanTree.Selected.ImageIndex of
5,14: //workgroup
begin
LanTree.Selected.ImageIndex := 16;
LanTree.Selected.SelectedIndex := 16;
GroupSearcher:=TSearchGroupThread.create(true);
GroupSearcher.MyTree := LanTree;
GroupSearcher.MyGroup := LanTree.Selected.Text;
GroupSearcher.MyNode := LanTree.Selected;
GroupSearcher.FreeOnTerminate := true;
GroupSearcher.Resume;
end;
7,15,27: //host
begin
LanTree.Selected.ImageIndex := 12;
LanTree.Selected.SelectedIndex := 12;
LanTree.selected.StateIndex := -1;
LanTree.SetFocus;
HostSearcher:=TSearchHostThread.create(true);
HostSearcher.MyHost := LanTree.Selected.Text;
HostSearcher.MyGroup := LanTree.Selected.Parent.Text;
HostSearcher.MyTree:=LanTree;
HostSearcher.MyNode:=LanTree.selected;
HostSearcher.FreeOnTerminate := true;
HostSearcher.Resume;
//explordir.WaitFor;
end;
0,19,30: //closed folder
begin
LanTree.Selected.ImageIndex := 6;
LanTree.Selected.SelectedIndex :=6;
LanTree.selected.StateIndex := -1;
CoolBar1.SetFocus;
TabSheetX:=TTabSheet.Create(self);
TabSheetX.PageControl := ClientPageCtrl;
TemDirName:=pMyTreeItem(LanTree.Selected.data)^.dirname;
if TemDirName[length(TemDirName)]='\'
then delete(TemDirName,length(TemDirName),1);
TabSheetX.Caption :=TemDirName;
TabSheetX.Repaint;
TemListView:=TListView.Create(tabsheetx);
TemListView.Parent := tabsheetx;
TemListView.Align := alclient;
TemListView.Visible := true;
pMyTreeItem(LanTree.Selected.data)^.MyClientListView := TemListView;
TemListView.OnDblClick := MyListViewClick;
//TemListView.OnMOuseDown := RMouseDownHandler;
TemListView.PopupMenu := ListViewPopupMenu;
TemListView.ViewStyle := vssmallicon;
TemListView.SmallImages := imagelist1;
TemListView.MultiSelect := true;
ClientPageCtrl.ActivePage :=TabSheetX;
DirSearcher:=TSearchDirThread.create(true);
DirSearcher.ClickType:=InTreeView;
DirSearcher.mydir := TemDirName;
DirSearcher.mygroup:= pMyTreeItem(LanTree.Selected.data)^.group;
DirSearcher.myList := TemListView;
DirSearcher.Rlist := FolderListview;
DirSearcher.myTree := LanTree;
DirSearcher.mynode := LanTree.Selected;
ListItem:=FolderListview.Items.Insert(0);
DirSearcher.RListItem := ListItem;
ListItem.Caption := extractfilename(DirSearcher.mydir);
ListItem.SubItems.Add(TemDirName);
ListItem.SubItems.Add(DirSearcher.mygroup);
//ListItem.SubItems[0] := TemDirName;
//ListItem.SubItems[1] := DirSearcher.mygroup;
new(TabDataPtr);
TabDataPtr.MyGroup := DirSearcher.mygroup;
if TabDataPtr.MyGroup[length(TabDataPtr.MyGroup)]=#0
then delete(TabDataPtr.MyGroup,length(TabDataPtr.MyGroup),1);
TabDataPtr.MyDir := DirSearcher.MyDir;
TabDataPtr.MyRListItem := DirSearcher.RListItem;
TabSheetX.Tag := integer(TabDataPtr);
ListItem.ImageIndex := 6;
new(ListItemPtr);
ListItemPtr.index := TabSheetX.TabIndex;
ListItem.data:= ListItemPtr;
RightPageCtrl.ActivePageIndex:=1;
pMyTreeItem(LanTree.Selected.data)^.MyRightListItem := ListItem;
pMyTreeItem(LanTree.Selected.data)^.tabindex:=TabSheetX.TabIndex;
DirSearcher.FreeOnTerminate := true;
DirSearcher.Resume;
//DirSearcher.WaitFor;
end;
10,6: // openfolder;
begin
ClientPageCtrl.ActivePageIndex := pMyTreeItem(LanTree.Selected.data)^.tabindex;
//caption:= inttostr(pMyTreeItem(tree2.Selected.data)^.tabindex);
RightPageCtrl.ActivePageIndex:=1;
end;
11,31:
begin //try to open a folder that can't open before or originally empty
LanTree.Selected.ImageIndex := 6;
LanTree.Selected.SelectedIndex := 6;
LanTree.selected.StateIndex := -1;
//checkbox2.SetFocus;
ClientPageCtrl.ActivePageIndex := pMyTreeItem(LanTree.Selected.data)^.tabindex;
DirSearcher:=TSearchDirThread.create(true);
DirSearcher.mydir := pMyTreeItem(LanTree.Selected.data)^.dirname;
//i:=pMyTreeItem(LanTree.Selected.data)^.tabindex;
DirSearcher.myList := pMyTreeItem(LanTree.Selected.data)^.MyClientListView;
DirSearcher.Rlist := FolderListview;
DirSearcher.myTree := LanTree;
ListItem:=pMyTreeItem(LanTree.Selected.data)^.MyRightListItem;
ListItem.Caption := extractfilename(DirSearcher.mydir);
ListItem.ImageIndex := 6;
DirSearcher.RListItem := ListItem;
DirSearcher.mygroup := ListItem.SubItems.Text;
//listbox7.Items[listbox7.Items.count-i]:=('重新搜索:' DirSearcher.mydir);
DirSearcher.mynode := LanTree.Selected;
DirSearcher.ClickType:= InTreeView;
DirSearcher.FreeOnTerminate := true;
DirSearcher.Resume;
RightPageCtrl.ActivePageIndex:=1;
end;
20,21: // locked folder
begin
LanTree.Selected.ImageIndex := 21;
LanTree.Selected.SelectedIndex := 21;
Exe:=TExecuteThread.Create(true);
Exe.exeFile := pMyTreeItem(LanTree.Selected.data)^.dirname;
Exe.exeDir := extractfilepath(Exe.exeFile);
//caption:=exe.exeFile;
Exe.FreeOnTerminate := true;
Exe.Resume;
end;
26,28: // win2000 or nt ,guest forbided ,need login
begin
if LanTree.Selected.ImageIndex = 26
then
begin
LanTree.Selected.ImageIndex := 28;
LanTree.Selected.SelectedIndex := 28;
end
else
begin
LanTree.Selected.ImageIndex := 26;
LanTree.Selected.SelectedIndex := 26;
end;
Exe:=TExecuteThread.Create(true);
Exe.exeFile := LanTree.Selected.Text;
//showmessage(exe.exefile);
Exe.exeDir := extractfilepath(Exe.exeFile);
//caption:=exe.exeFile;
Exe.FreeOnTerminate := true;
Exe.Resume;
end;
end; //end of case
end;
procedure TMainForm.ShareListViewClick(Sender: TObject);
var ListIndex,ListCount,i:integer;
ListItem:TListItem;
str:string;
begin
if ShareListView.Selected=nil then exit;
ClientPageCtrl.ActivePageIndex :=0;
ListIndex:=PListitem(ShareListView.Selected.Data)^.index;
ListCount:=PListitem(ShareListView.Selected.Data)^.Count;
AllListBox.TopIndex := AllListBox.Items.Count-ListIndex;
//ShareTabSheet.Caption := ShareListView.Selected.SubItems[0];
pTabData(ShareTabSheet.Tag).MyDir:= ShareListView.Selected.SubItems[0];
pTabData(ShareTabSheet.Tag).MyGroup:= ShareListView.Selected.SubItems[1];
pTabData(ShareTabSheet.Tag).MyRListItem:= ShareListView.Selected;
InfoPanel.Caption := '主机和文件夹:' ShareListView.Selected.SubItems[0]
' 工作组:' ShareListView.Selected.SubItems[1];
BrowseListView.Items.Clear;
//RightPageCtrl.ActivePage := BrowseTabsheet;
for i:= 1 to ListCount do
begin
//ResultListBox.Items.Add(AllListBox.Items[i]);
ListItem:=BrowseListView.Items.Add;
str:= AllListBox.Items[AllListBox.Items.Count-ListIndex i-1];
if str[length(str)]='\' then
begin
ListItem.ImageIndex :=0;
delete(str,length(str),1);
end
else ListItem.ImageIndex :=1;
listitem.Caption := extractfilename(str);
end;
end;
procedure TMainForm.ShareListViewSelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
begin
ShareListViewClick(Self);
end;
procedure TMainForm.FolderListViewClick(Sender: TObject);
begin
if FolderListView.Selected=nil then exit;
ClientPageCtrl.ActivePageIndex :=PListitem(FolderListView.Selected.Data)^.index;
end;
procedure TMainForm.RightPageCtrlChange(Sender: TObject);
begin
Case RightPageCtrl.ActivePageIndex of
0: ClientPageCtrl.ActivePageIndex :=0;
end;// end of case
end;
procedure TMainForm.ClientPageCtrlChange(Sender: TObject);
begin
//(TabSheetX.Components[0] as TListView).color:= clred;
if ClientPageCtrl.ActivePageIndex <>0 then
StatusBar.Panels[2].Text:='工作组:' pTabData(ClientPageCtrl.ActivePage.Tag).MyGroup
' 主机和文件夹:' pTabData(ClientPageCtrl.ActivePage.Tag).MyDir;
end;
procedure TMainForm.N_OpenClick(Sender: TObject);
begin
MyListViewClick(CurListView);
end;
procedure CopyToClipBoard(FileName:string);
var DataHandle: THandle;
DataPointer: PDROPFILES;
begin
DataHandle := GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE,SizeOf(DROPFILES) 2 Length(FileName));
DataPointer := PDROPFILES(GlobalLock(DataHandle));
FillChar(DataPointer^,SizeOf(DROPFILES) 2 Length(FileName),0);
DataPointer.pFiles:=SizeOf(DROPFILES);
DataPointer.pt:=Point(0,0);
DataPointer.fNC:=False;
DataPointer.fWide:=False;
Move(FileName[1],Pointer(Integer(DataPointer) SizeOf(DROPFILES))^,Length(FileName));
GlobalUnlock(DataHandle);
OpenClipboard(MainForm.Handle);
EmptyClipboard;
SetClipboardData(CF_HDROP, DataHandle);
CloseClipboard;
end;
procedure TMainForm.N_CopyClick(Sender: TObject);
var
FileName:string;
i:integer;
begin
FileName:='';
for i:=1 to CurListView.Items.Count do
if CurListView.Items[i-1].Selected
then FileName:=FileName CurDirName CurListView.Items[i-1].Caption #0;
CopyToClipBoard(FileName);
end;
procedure TMainForm.ListViewPopupMenuPopup(Sender: TObject);
var i:integer;
begin
N_Open.Enabled := false;
N_Copy.Enabled := false;
N_Size.Enabled := false;
N_OpenWithNotpad.Enabled :=false;
N_Property.Enabled := false;
N_NewWin.Enabled := false;
N_Refresh.Enabled := false;
N_Favorite.Enabled := false;
N_CopyTo.Enabled := false;
CurDirName:= pTabData(ClientPageCtrl.ActivePage.Tag).MyDir '\';
CurGroupName :=pTabData(ClientPageCtrl.ActivePage.Tag).MyGroup;
CurRlistItem :=pTabData(ClientPageCtrl.ActivePage.Tag).MyRListItem;
if ClientPageCtrl.ActivePageIndex=0 then CurListView:=BrowseListView
else CurListView:=(ClientPageCtrl.ActivePage.Components[0] as TListView);
if CurListView.SelCount >0 then
begin
N_Open.Enabled := true;
N_Copy.Enabled := true;
N_Size.Enabled := true;
N_CopyTo.Enabled := true;
if (CurListView.SelCount=1)then
begin
N_Property.Enabled := true;
if(CurListView.Selected.ImageIndex=1)then N_OpenWithNotpad.Enabled := true;
end;
end;
if CurRListItem<>nil then
begin
N_NewWin.Enabled := true;
N_Refresh.Enabled := true;
N_Favorite.Enabled := true;
end;
for i:=1 to CurListView.Items.Count do
if (CurListView.Items[i-1].Selected)and(CurListView.Items[i-1].ImageIndex=0)
then N_CopyTo.Enabled := false;
end;
//-------------------------------------------------------------------------
function GetDirectorySize(Path: String): Integer; //eg. Path = 'c:\temp\'
var
SR: TSearchRec;
begin
Result := 0;
if path[length(path)]<>'\' then path:=path '\';
if FindFirst(Path '*.*', faAnyFile, SR) = 0 then
begin
if (sr.Name <> '.') and (sr.Name <> '..') and (sr.Attr = faDirectory) then
Result := Result GetDirectorySize(Path Sr.Name '\')
else
Result := Result Sr.Size;
while FindNext(sr) = 0 do
if (sr.Name <> '.') and (sr.Name <> '..') and (sr.Attr = faDirectory) then
Result := Result GetdirectorySize(Path Sr.Name '\')
else
Result := Result Sr.Size;
FindClose(sr);
end;
end;
//-------------------------------------------------------------------------
procedure TMainForm.N_SizeClick(Sender: TObject);
var fulls,msg:string; i,size,nFile,nFolder:integer;
begin
size:=0;
nFile:=0;
nFolder:=0;
//DirName:=pTabData(ClientPageCtrl.ActivePage.Tag).MyDir '\';
for i:=1 to CurListView.Items.Count do
begin
if CurListView.Items[i-1].Selected
then
begin
fulls:=CurDirName CurListView.Items[i-1].Caption;
if CurListView.Items[i-1].ImageIndex<>0 then
begin
size:=size GetFileSize(fulls);
inc(nFile);
end
else
begin
size:=size GetDirectorySize(fulls);
inc(nFolder);
end;
caption:=fulls;
end;
end;
if nFolder=0 then msg := inttostr(nFile) ' 个文件'
else if nFile=0 then msg:= inttostr(nFolder) ' 个文件夹'
else msg:= inttostr(nFile) ' 个文件,' inttostr(nFolder) ' 个文件夹';
//ShowMessage(msg ' 共' FormatFloat('#,###" KB"', size/ 1024) '(' inttostr(size) '字节)');
Application.MessageBox(
pchar(msg ' 共' FormatFloat('#,###" KB"', size/ 1024) '(' inttostr(size) '字节)'),
'File Size',
MB_OK);
end;
procedure TMainForm.N_OpenWithNotpadClick(Sender: TObject);
var command:string;
FileName:string;
begin
//DirName:=pTabData(ClientPageCtrl.ActivePage.Tag).MyDir '\';
FileName:=CurListView.Selected.Caption;
command:= 'NotePad.exe ' CurDirName FileName;
winexec(pchar(command),sw_normal);
end;
procedure TMainForm.N_NewWinClick(Sender: TObject);
var Exe: TExecuteThread;
begin
Exe:=TExecuteThread.Create(true);
Exe.exeFile := CurDirName '\';
Exe.exeDir := extractfilepath(Exe.exeFile);
//caption:=exe.exeFile;
Exe.FreeOnTerminate := true;
Exe.Resume;
end;
procedure TMainForm.N_FavoriteClick(Sender: TObject);
var TemNode:TTreeNode;
//ListItem:TListItem;
begin
//caption:=dirname;
New(MyItemPtr);
MyItemPtr^.group := CurGroupName;
MyItemPtr^.dirName := CurDirName;
{ListItem:=ListView7.Items.Insert(0);
listitem.Caption := CurDirName;
listitem.SubItems.Text := CurGroupName;}
temNode:=FavoTree.items.AddChild(FavoTree.Items[0],CurDirName);
temNode.Data := MyItemPtr;
FavoTree.Items[0].Expand(false);
//assignfile(f,'Favorite.txt');
assignfile(f,AppDir '\Favorite.txt');
if not fileexists(AppDir '\Favorite.txt')then rewrite(f)
else Append(f);
writeln(f,trimright(CurGroupName));
Writeln(f,CurDirName);
//Flush(f);
CloseFile(f);
end;
procedure TMainForm.SearchTreeClick(Sender: TObject);
begin
LanTreeClick(SearchTree);
end;
procedure TMainForm.FavoTreeClick(Sender: TObject);
begin
LanTreeClick(FavoTree);
end;
//------------------------------------------
function SHFindComputer(pidlRoot: PItemIDList; pidlSavedSearch: PItemIDList): Boolean;
stdcall; external 'Shell32.dll' index 91;
//----------------------------------------------
procedure TMainForm.BtnFindComputerClick(Sender: TObject);
var pidlRoot: PItemIDList;
pidlSavedSearch: PItemIDList;
begin
pidlRoot:=nil; //just remove warning;
pidlSavedSearch:=nil; //just remove warning;
if not SHFindComputer(pidlRoot,pidlSavedSearch) then showmessage('error occured!');
end;
procedure TMainForm.BtnDOSClick(Sender: TObject);
begin
if GetVersion<=4 then WinExec('Command.com',SW_SHOW)
else WinExec('Cmd.exe',SW_SHOW)
end;
procedure TMainForm.BtnConfigorClick(Sender: TObject);
begin
ConfigorForm.Show;
end;
procedure TMainForm.N_RefreshClick(Sender: TObject);
var DirSearcher:TSearchDirThread;
begin
CurListView.Items.Clear;
DirSearcher:=TSearchDirThread.create(true);
DirSearcher.mydir := CurDirName;
DirSearcher.mygroup := CurGroupName;
DirSearcher.myList := CurListView;
DirSearcher.Rlist :=FolderListView;
DirSearcher.RListItem := pTabData(ClientPageCtrl.ActivePage.Tag).MyRListItem;
//DirSearcher.myTree := Treeview1;
DirSearcher.RListItem.ImageIndex := 6;
DirSearcher.ClickType := InListView;
DirSearcher.FreeOnTerminate := true;
DirSearcher.Resume;
end;
procedure TMainForm.N_CopyToClick(Sender: TObject);
var i,j:integer;
b:boolean;
tems:string;
TemListItem:TListItem;
begin
with CopyToForm do
begin
for j:=1 to CopyListview.Items.Count do
begin
if CopyListview.Items[j-1].ImageIndex = 24 then CopyListview.Items[j-1].Delete;
end;
Show;
caption:='拷贝文件';
Label2.Caption:=CurDirName;
//listview1.Items.Clear;
//caption:=inttostr(CurListView.SelCount);
for i:=1 to CurListView.Items.Count do
begin
if CurListView.Items[i-1].Selected
then
begin
tems:= CurDirName CurListView.Items[i-1].Caption;
b:=false;
for j:=1 to CopyListview.Items.Count do
begin
if tems = CopyListview.Items[j-1].Caption then b:=true;
//if listview1.Items[j-1].ImageIndex = 24 then listview1.Items[j-1].Delete;
end;
if not b then
begin
temListItem:=CopyListview.Items.Add;
temListItem.ImageIndex := 22;
temListItem.Caption := tems;
end;
end;
end;
Combobox1.text:=ExtractFilepath(Combobox1.text);
BtnCancel.Caption := '取消';
//speedbutton3.Enabled := true;
ComboBox1.Items.Add(combobox1.text);
Label4.Caption := '共' inttostr(CopyListView.Items.Count) '个文件';
end; //end of with
end;
procedure TMainForm.BtnRefreshTreeClick(Sender: TObject);
var GetDomainThread:TGetDomainThread;
begin
BtnRefreshTree.Enabled:=false;
GroupNum:=0;
FinishNum:=0;
CanOpen:=false;
OldFileCount:=0;
GetDomainThread:=TGetDomainThread.Create(true);
GetDomainThread.LanTree := SearchTree;
GetDomainThread.Resume;
end;
procedure TMainForm.N_SaveAllClick(Sender: TObject);
begin
case BottomPageCtrl.ActivePageIndex of
0: SaveDlg.FileName := 'LAN_log_All(' DateToStr(now) ')';
1: SaveDlg.FileName := 'LAN_log_Search(' DateToStr(now) ')';
2: SaveDlg.FileName := 'LAN_log_Mp3(' DateToStr(now) ')';
3: SaveDlg.FileName := 'LAN_log_Movie(' DateToStr(now) ')';
end;
if SaveDlg.execute then if SaveDlg.filename<>'' then
case BottomPageCtrl.ActivePageIndex of
0: StrListAll.SaveToFile(SaveDlg.FileName);
1: StrListSearch.SaveToFile(SaveDlg.FileName);
2: StrListMp3.SaveToFile(SaveDlg.FileName);
3: StrListMovie.SaveToFile(SaveDlg.FileName);
end; //end of case
end;
procedure TMainForm.Menu_TreeClick(Sender: TObject);
begin
{LeftPanel.AutoSize := false;
LeftPanel.Width := 200;}
LeftDockPanel.Show;
if LeftPanel.VisibleDockClientCount>0 then LeftPanel.Show;
Menu_Tree.Checked := true;
MyEndDock;
{LeftPanel.AutoSize := true;}
end;
procedure TMainForm.Menu_FolderClick(Sender: TObject);
begin
{RightPanel.AutoSize := false;
RightPanel.Width := 160;}
RightDockPanel.Show;
if RightPanel.VisibleDockClientCount>0 then
begin
RightPanel.Show;
Splitter3.Align := alLeft;
Splitter3.Align := alRight;
//MyEndDock;
end;
Menu_Folder.Checked := true;
{RightPanel.AutoSize := true;}
end;
procedure TMainForm.Menu_ResultClick(Sender: TObject);
begin
{BottomPanel.AutoSize := false;
BottomPanel.Height := 100;}
{BottomPanel.Align := altop;
BottomPanel.Align := alBottom;}
BottomDockPanel.Show;
if BottomPanel.VisibleDockClientCount>0 then BottomPanel.Show;
Menu_Result.Checked := true;
MyEndDock;
{BottomPanel.AutoSize := true;}
end;
procedure TMainForm.BtnAutoSearchClick(Sender: TObject);
begin
MainSearch:=TMainThread.create(true);
//MainSearch.OnTerminate := OnMainTerminate;
MainSearch.FreeOnTerminate := true;
MainSearch.Resume;
BtnPause.Enabled := true;
BtnStop.Enabled := true;
BtnAutoSearch.Enabled := false;
end;
procedure TMainForm.LanExplorer1Click(Sender: TObject);
begin
AboutForm.Show;
end;
procedure TMainForm.BtnPauseClick(Sender: TObject);
begin
if not BtnPause.Down then
begin
MainSearch.Suspend;
BtnStop.Enabled := true;
//BtnPause.Down := true;
end
else
begin
MainSearch.Resume;
BtnStop.Enabled := false;
//BtnPause.Down := false;
end;
end;
procedure TMainForm.BtnStopClick(Sender: TObject);
begin
MainSearch.Suspend;
MainSearch.Terminate;
//MainSearch.WaitFor;
MainSearch.free;
BtnStop.Enabled := false;
BtnPause.Enabled := false;
BtnAutoSearch.Enabled := true;
end;
procedure TMainForm.N_DeleteFavoClick(Sender: TObject);
begin
if FavoTree.Selected <> nil then TemTreeNode.Delete;
end;
procedure TMainForm.FavoTreePopupMenuPopup(Sender: TObject);
begin
N_DeleteFavo.Enabled := false;
if FavoTree.Selected <> nil then
begin
N_DeleteFavo.Enabled := true;
N_DeleteFavo.Caption := '删除 ' FavoTree.Selected.Text;
TemTreeNode:=FavoTree.Selected;
end;
end;
procedure TMainForm.IconCheckBoxClick(Sender: TObject);
begin
bSysIcon:=IconCheckBox.Checked;
end;
procedure TMainForm.AllListBoxDblClick(Sender: TObject);
var fn,dn:string; Exe: TExecuteThread;
begin
//caption:=inttostr(AllListBox.SelCount);
if AllListBox.SelCount >0 then
begin
fn:= AllListBox.Items[AllListbox.ItemIndex];
dn:=extractfilepath(fn);
Exe:=TExecuteThread.Create(true);
Exe.exeFile := fn;
Exe.exeDir := dn;
Exe.FreeOnTerminate := true;
Exe.Resume;
end;
end;
procedure TMainForm.MyBottomListViewClick(ListView:TListView);
var Exe: TExecuteThread;
begin
if ListView.SelCount <>0 then
begin
Exe:=TExecuteThread.Create(true);
Exe.exeFile := trim(ListView.Selected.SubItems[0]) '\' ListView.Selected.Caption;
Exe.exeDir := extractfilepath(Exe.exeFile);
//caption:=exe.exeFile;
with ListView.Selected do
begin
if ImageIndex=1 then ImageIndex := 17 else
if ImageIndex=17 then ImageIndex := 1 else
if ImageIndex=0 then ImageIndex:=10;
end;
Exe.FreeOnTerminate := true;
Exe.Resume;
end;
end;
procedure TMainForm.FindListViewDblClick(Sender: TObject);
begin
MyBottomListViewClick(FindListView);
end;
procedure TMainForm.Mp3ListViewDblClick(Sender: TObject);
begin
MyBottomListViewClick(Mp3ListView);
end;
procedure TMainForm.MovieListViewDblClick(Sender: TObject);
begin
MyBottomListViewClick(MovieListView);
end;
procedure TMainForm.BottomPopupMenuPopup(Sender: TObject);
var i:integer;
begin
N_BottomCopyTo.Enabled := true;
N_SaveAll.Enabled := true;
N_BottomOpen.Enabled := false;
N_BottomCopy.Enabled := true;
N_BottomFileSize.Enabled := true;
case BottomPageCtrl.ActivePageIndex of
0: begin
CurBottomListView:=nil;
if AllListBox.Items.Count=0 then
begin
N_SaveAll.Enabled := false;
end;
if AllListBox.SelCount <=0 then
begin
N_BottomCopyTo.Enabled := false;
N_BottomCopy.Enabled := false;
N_BottomFileSize.Enabled := false;
end
else
begin
if AllListBox.SelCount=1 then N_BottomOpen.Enabled := true;
for i:=1 to AllListBox.Items.Count do
begin
if AllListBox.Selected[i-1] then
if AllListBox.Items[i-1][length(AllListBox.Items[i-1])]='\'
then N_BottomCopyTo.Enabled := false;
end;
end;
end;
1: CurBottomListView:= FindListView;
2: CurBottomListView:= Mp3ListView;
3: CurBottomListView:= MovieListView;
end; //end of case
if CurBottomListView<>nil then
begin
if CurBottomListView.Items.Count=0 then
begin
N_SaveAll.Enabled := false;
end;
if CurBottomListView.SelCount<=0 then
begin
N_BottomCopyTo.Enabled := false;
N_BottomCopy.Enabled := false;
N_BottomFileSize.Enabled := false;
end
else
begin
if CurBottomListView.SelCount=1 then N_BottomOpen.Enabled := true;
for i:=1 to CurBottomListView.Items.Count do
if (CurBottomListView.Items[i-1].Selected)and(CurBottomListView.Items[i-1].ImageIndex=0)
then N_BottomCopyTo.Enabled := false;
end;
end;
end;
procedure TMainForm.N_BottomOpenClick(Sender: TObject);
begin
case BottomPageCtrl.ActivePageIndex of
0: AllListBoxDblClick(Self);
1: FindListViewDblClick(Self);
2: Mp3ListViewDblClick(Self);
3: MovieListViewDblClick(Self);
end; //end of case
end;
procedure TMainForm.N_BottomCopyClick(Sender: TObject);
var
FileName:string;
i:integer;
begin
if CurBottomListView=nil
then
begin
FileName:='';
for i:=1 to AllListBox.Items.Count do
if AllListBox.Selected[i-1]
then FileName:=FileName AllListBox.Items[i-1] #0;
CopyToClipBoard(FileName);
end
else
begin
FileName:='';
for i:=1 to CurBottomListView.Items.Count do
if CurBottomListView.Items[i-1].Selected
then FileName:=CurBottomListView.Items[i-1].SubItems[0] '\' CurBottomListView.Items[i-1].Caption;
CopyToClipBoard(FileName);
end;
end;
procedure TMainForm.N_BottomFileSizeClick(Sender: TObject);
var fulls:string; i,size,SelCount:integer;
begin
size:=0;
if CurBottomListView<>nil then
begin
SelCount:= CurBottomListView.selcount;
for i:=1 to CurBottomListView.Items.Count do
begin
if CurBottomListView.Items[i-1].Selected
then
begin
fulls:=CurBottomListView.Items[i-1].SubItems[0] '\' CurBottomListView.Items[i-1].Caption;
if CurBottomListView.Items[i-1].ImageIndex=1
then size:=size GetFileSize(fulls)
else size:=size GetDirectorySize(fulls)
end;
end;
end
else // in listbox
begin
SelCount:=AllListBox.SelCount;
for i:=1 to AllListBox.Items.Count do
begin
if AllListBox.Selected[i-1]
then
begin
fulls:=AllListBox.Items[i-1];
if fulls[length(fulls)]<>'\' then size:=size GetFileSize(fulls)
else size:=size GetDirectorySize(fulls)
end;
end;
end;
ShowMessage(inttostr(SelCount) ' 个文件(夹)' FormatFloat('#,###" KB"', size/ 1024)
'(' inttostr(size) '字节)');
end;
procedure TMainForm.N_BottomCopyToClick(Sender: TObject);
var i,j:integer;
b:boolean;
tems:string;
TemListItem:TListItem;
begin
with CopyToForm do
begin
for j:=1 to CopyListview.Items.Count do
begin
if CopyListview.Items[j-1].ImageIndex = 24 then CopyListview.Items[j-1].Delete;
end;
Show;
caption:='拷贝文件';
Label2.Caption:='Any Where';
//listview1.Items.Clear;
//caption:=inttostr(CurListView.SelCount);
if CurBottomListView<>nil then
for i:=1 to CurBottomListView.Items.Count do
begin
if CurBottomListView.Items[i-1].Selected
then
begin
tems:= CurBottomListView.Items[i-1].SubItems[0] '\' CurBottomListView.Items[i-1].Caption;
b:=false;
for j:=1 to CopyListview.Items.Count do
begin
if tems = CopyListview.Items[j-1].Caption then b:=true;
//if listview1.Items[j-1].ImageIndex = 24 then listview1.Items[j-1].Delete;
end;
if not b then
begin
temListItem:=CopyListview.Items.Add;
temListItem.ImageIndex := 22;
temListItem.Caption := tems;
end;
end;
end
else
for i:=1 to AllListBox.Items.Count do
begin
if AllListBox.Selected[i-1]
then
begin
tems:=AllListBox.Items[i-1];
b:=false;
for j:=1 to CopyListview.Items.Count do
begin
if tems=CopyListview.Items[j-1].Caption then b:=true;
end;
if not b then
begin
temListItem:=CopyListview.Items.Add;
temListItem.ImageIndex := 22;
temListItem.Caption := tems;
end;
end;
end;
Combobox1.text:=ExtractFilepath(Combobox1.text);
BtnCancel.Caption := '取消';
//speedbutton3.Enabled := true;
ComboBox1.Items.Add(combobox1.text);
Label4.Caption := '共' inttostr(CopyListView.Items.Count) '个文件';
end; //end of with
end;
procedure TMainForm.StatusBarMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(handle,wm_SysCommand,$F012,0);
end;
procedure TMainForm.FormResize(Sender: TObject);
begin
with Statusbar do
Panels[2].Width := Width- Panels[0].Width
- Panels[1].Width
- Panels[3].Width;
//- Panels[4].Width;
end;
procedure GetFileProperty(f:string);
var SEI:PSHELLEXECUTEINFOA;
begin
getmem(sei,sizeof(sei^));
With SEI^ do
begin
cbSize:= sizeof(SEI^);
fMask:= SEE_MASK_NOCLOSEPROCESS Or SEE_MASK_INVOKEIDLIST Or SEE_MASK_FLAG_NO_UI;
wnd:=MainForm.handle;
lpVerb:= 'properties';
lpFile:=pchar(f); //你自己的文件名
lpParameters:=nil;
lpDirectory:=nil;
nShow:=0;
hInstApp:=hInstance;
lpIDList:=nil;
End;
ShellExecuteEX(SEI);
freemem(sei);
end;
procedure TMainForm.N_PropertyClick(Sender: TObject);
begin
GetFileProperty(CurDirName CurListView.Selected.Caption);
end;
end.