📄 main.pas
字号:
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.FlatScrollBars := true; //##
//TemListView.BorderStyle := bsNone; //##
TemListView.DragMode := dmAutomatic;
TemListView.Visible := true;
pMyTreeItem(LanTree.Selected.data)^.MyClientListView := TemListView;
TemListView.OnDblClick := MyListViewClick;
TemListView.OnMouseDown := BrowseListViewMouseDown; //##$$##
TemListView.PopupMenu := pmListItem;
TemListView.ViewStyle := vssmallicon;
TemListView.SmallImages := imagelist1;
TemListView.MultiSelect := true;
//-----------05.11.6----------
col := TemListView.Columns.Add;
col.Caption := '名称';
col.Width := 400;
col := TemListView.Columns.Add;
col.Caption := '大小';
col.Width := 100;
TemListView.ColumnClick := false;
//----------------------------
CurListView:=TemListView;
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 := ShareListview;
DirSearcher.myTree := LanTree;
DirSearcher.mynode := LanTree.Selected;
//ListItem:=FolderListview.Items.Insert(0);
ListItem:=ShareListview.Items.Insert(0); //$$$
DirSearcher.RListItem := ListItem;
ListItem.Caption := extractfilename(DirSearcher.mydir);
ListItem.SubItems.Add(TemDirName);
ListItem.SubItems.Add(DirSearcher.mygroup);
new(TabDataPtr);
TabDataPtr.MyGroup := DirSearcher.mygroup;
trim(TabDataPtr.MyGroup); //delete last # if exists
{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);
AddCap(DirSearcher.mygroup,DirSearcher.MyDir);
ListItem.ImageIndex := 6;
new(ListItemPtr);
ListItemPtr.index := TabSheetX.TabIndex;
ListItemPtr.count := -1;
ListItem.data:= ListItemPtr;
//==================================================
//if ShareListview.Items[CurDirIndex].Data = nil then ShowMessage('error...'+inttostr(CurDirIndex));
if CurDirItem <> nil
then PListItem(CurDirItem.Data)^.NextDirItem := ListItem;
ListItemPtr^.PrevDirItem := CurDirItem;
CurDirItem := ListItem;
PListItem(CurDirItem.Data)^.NextDirItem := nil;
ToolBtnBack.Enabled := true;
// uplink
if LanTree.Selected.Parent.ImageIndex = 10 then
begin
PListItem(CurDirItem.Data)^.UpDirItem :=
pMyTreeItem(LanTree.Selected.Parent.Data)^.MyRightListItem;
end;
ChangeBtnStatus;
//==================================================
//RightPageCtrl.ActivePageIndex:=1;
pMyTreeItem(LanTree.Selected.Data)^.MyRightListItem := ListItem;
pMyTreeItem(LanTree.Selected.Data)^.TabIndex:=TabSheetX.TabIndex;
DirSearcher.FreeOnTerminate := true;
DirSearcher.Resume;
end;
10,6: // openfolder;
begin
if pMyTreeItem(LanTree.Selected.Data)^.TabIndex <> 0 then
begin
ClientPageCtrl.ActivePageIndex := pMyTreeItem(LanTree.Selected.Data)^.tabindex;
//caption := inttostr(ClientPageCtrl.ActivePageIndex);
//RightPageCtrl.ActivePageIndex:=1;
CurListView:=pMyTreeItem(LanTree.Selected.data)^.MyClientListView;
AddCap(pMyTreeItem(LanTree.Selected.Data)^.Group,pMyTreeItem(LanTree.Selected.Data)^.DirName);
//==================================================
ListItem := pMyTreeItem(LanTree.Selected.Data)^.MyRightListItem;
if CurDirItem <> nil
then PListItem(CurDirItem.Data)^.NextDirItem := ListItem;
ListItemPtr := PListItem(ListItem.Data);
ListItemPtr^.PrevDirItem := CurDirItem;
CurDirItem := ListItem;
//ShowMessage('sss');
ToolBtnBack.Enabled := true;
ChangeBtnStatus;
//==================================================
end
else
begin
//#################$$$$$$$$$$$$$$$###############
pMyTreeItem(LanTree.Selected.data)^.MyRightListItem.Selected := true;
ShareListViewClick(Self);
end;
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;
ClientPageCtrl.ActivePageIndex := pMyTreeItem(LanTree.Selected.data)^.TabIndex;
CurListView := pMyTreeItem(LanTree.Selected.data)^.MyClientListView;
AddCap(pMyTreeItem(LanTree.Selected.data)^.Group,pMyTreeItem(LanTree.Selected.data)^.DirName);
DirSearcher := TSearchDirThread.create(true);
TemDirName := pMyTreeItem(LanTree.Selected.data)^.dirname;
if TemDirName[length(TemDirName)]='\'
then delete(TemDirName,length(TemDirName),1);
DirSearcher.mydir := TemDirName;
DirSearcher.myList := pMyTreeItem(LanTree.Selected.data)^.MyClientListView;
//DirSearcher.Rlist := ShareListview;
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;
DirSearcher.mynode := LanTree.Selected;
DirSearcher.ClickType:= InTreeView;
DirSearcher.FreeOnTerminate := true;
DirSearcher.Resume;
//RightPageCtrl.ActivePageIndex:=1;
//==================================================
if CurDirItem <> nil
then PListItem(CurDirItem.Data)^.NextDirItem := ListItem;
ListItemPtr := PListItem(ListItem.Data);
ListItemPtr^.PrevDirItem := CurDirItem;
CurDirItem := ListItem;
//==================================================
end;
20,21,77: // locked folder ,printer
begin
if LanTree.Selected.ImageIndex<>77 then
begin
LanTree.Selected.ImageIndex := 21;
LanTree.Selected.SelectedIndex := 21;
end
else
begin
LanTree.Selected.ImageIndex := 77;
LanTree.Selected.SelectedIndex := 77;
end;
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;
Exe.exeDir := extractfilepath(Exe.exeFile);
//caption:=exe.exeFile;
Exe.FreeOnTerminate := true;
Exe.Resume;
end;
114, 117: //FTP host
begin
FtpSvrName := LanTree.Selected.Text;
delete(FtpSvrName, 1, 6);
ConfigForm.GiveFtpUserPassWord(FtpSvrName, FtpUsr, FtpPass);
LanTree.Selected.ImageIndex := 116;
LanTree.Selected.SelectedIndex := 116;
FtpRecursive := ConfigForm.cbFtpRecursive.Checked;
ftp := TFtpBrowseThread.Create(LanTree, LanTree.Selected, nil, nil,
FtpSvrName, FtpUsr, FtpPass, FtpRecursive);
ftp.Resume;
end;
{124: // opened FTP host
begin
PFtpNodeType(LanTree.Selected.data)^.MyRightListItem.Selected := true;
ShareListViewClick(Self);
end;}
115: // closed FTP folder
begin
TemFtpNode := LanTree.Selected;
{
FtpDir := TemFtpNode.Text;
while TemFtpNode.Parent.ImageIndex <> 124 do
begin
TemFtpNode := TemFtpNode.Parent;
if TemFtpNode.Text <> '/' then
FtpDir := TemFtpNode.Text + '/' + FtpDir;
end;
FtpDir := '/' + FtpDir;
FtpSvrName := TemFtpNode.Parent.Text;
delete(FtpSvrName, 1, 6);
}
FtpDir := PFtpNodeType(TemFtpNode.Data)^.MyDir;
//if FtpDir[length(FtpDir)] <> '/' then FtpDir := FtpDir + '/';
FtpSvrName := PFtpNodeType(TemFtpNode.Data)^.FtpSvr;
FtpDisplayDir := PFtpNodeType(TemFtpNode.Data)^.DisplayDir;
LanTree.Selected.ImageIndex := 125;
LanTree.Selected.SelectedIndex := 125;
FtpSub := TFtpSubDirThread.Create;
FtpSub.MyTree := LanTree;
FtpSub.ParentNode := LanTree.Selected;
FtpSub.FtpHandle := PFtpNodeType(TemFtpNode.Data)^.FtpHandle;
FtpSub.Dir := FtpDir;
FtpSub.DisplayDir := FtpDisplayDir;
FtpSub.FtpSvr := FtpSvrName;
FtpSub.ClickType := InTreeView;
//Caption := FtpSvrName + ',' + FtpDir + ',' + inttostr(integer(FtpSub.FtpHandle)); ///
//***********************
CoolBar1.SetFocus;
TabSheetX :=TTabSheet.Create(self);
TabSheetX.PageControl := ClientPageCtrl;
///TabSheetX.Caption := 'ftp://' + FtpSvrName + FtpSub.Dir;
TabSheetX.Caption := 'ftp://' + FtpSvrName + FtpDisplayDir;
TabSheetX.Repaint;
PFtpNodeType(TemFtpNode.data)^.TabIndex := TabSheetX.TabIndex;
TemListView:=TListView.Create(tabsheetx);
TemListView.Parent := TabSheetX;
TemListView.Align := alClient;
TemListView.DragMode := dmAutomatic; ///
TemListView.Visible := true;
PFtpNodeType(LanTree.Selected.data)^.MyClientListView := TemListView;
TemListView.OnDblClick := MyListViewClick;
TemListView.OnMouseDown := BrowseListViewMouseDown; //##$$##
TemListView.PopupMenu := pmListItem;
TemListView.ViewStyle := vsSmallIcon;
TemListView.SmallImages := ImageList1;
TemListView.MultiSelect := true;
//-----------05.11.6----------
col := TemListView.Columns.Add;
col.Caption := '名称';
col.Width := 400;
col := TemListView.Columns.Add;
col.Caption := '大小';
col.Width := 100;
TemListView.ColumnClick := false;
//----------------------------
CurListView:=TemListView;
FtpSub.MyListView := TemListView;
ClientPageCtrl.ActivePage :=TabSheetX;
ListItem:=ShareListview.Items.Insert(0); //$$$
FtpSub.RListItem := ListItem;
PFtpNodeType(LanTree.Selected.data)^.MyRightListItem := ListItem;
ListItem.Caption := LanTree.Selected.Text; //ExtractFileName(FtpSub.Dir);
///ListItem.SubItems.Add('ftp://' + FtpSvrName + FtpSub.Dir);
ListItem.SubItems.Add('ftp://' + FtpSvrName + FtpDisplayDir);
ListItem.SubItems.Add('ftp');
new(TabDataPtr);
TabDataPtr.MyGroup := 'ftp';
///TabDataPtr.MyDir := 'ftp://' + FtpSvrName + FtpSub.Dir;
TabDataPtr.MyDir := 'ftp://' + FtpSvrName + FtpDisplayDir;
TabDataPtr.MyRListItem := ListItem;
TabSheetX.Tag := integer(TabDataPtr);
///AddCap('ftp', 'ftp://' + FtpSvrName + FtpSub.Dir);
AddCap('ftp', 'ftp://' + FtpSvrName + FtpDisplayDir);
ListItem.ImageIndex := 125;
new(ListItemPtr);
ListItemPtr.index := TabSheetX.TabIndex;
ListItemPtr.count := -1;
ListItemPtr.FtpHandle := PFtpNodeType(LanTree.Selected.Data)^.FtpHandle;
ListItemPtr.FtpDir := FtpSub.Dir;
//ShowMessage(inttostr(integer(ListItemPtr.FtpHandle))); ////
ListItem.data:= ListItemPtr;
if CurDirItem <> nil
then PListItem(CurDirItem.Data)^.NextDirItem := ListItem;
ListItemPtr^.PrevDirItem := CurDirItem;
CurDirItem := ListItem;
PListItem(CurDirItem.Data)^.NextDirItem := nil;
ToolBtnBack.Enabled := true;
// uplink
if LanTree.Selected.Parent.ImageIndex = 113 then
begin
PListItem(CurDirItem.Data)^.UpDirItem :=
PFtpNodeType(LanTree.Selected.Parent.Data)^.MyRightListItem;
end;
ChangeBtnStatus;
//***********************
FtpSub.Resume;
end;
126: //try to open a FTP folder that can't open before or originally empty
begin
TemFtpNode := LanTree.Selected;
{
FtpDir := TemFtpNode.Text;
while TemFtpNode.Parent.ImageIndex <> 124 do
begin
TemFtpNode := TemFtpNode.Parent;
if TemFtpNode.Text <> '/' then
FtpDir := TemFtpNode.Text + '/' + FtpDir;
end;
FtpDir := '/' + FtpDir;
FtpSvrName := TemFtpNode.Parent.Text;
delete(FtpSvrName, 1, 6);
}
FtpDir := PFtpNodeType(TemFtpNode.Data)^.MyDir;
//if FtpDir[length(FtpDir)] <> '/' then FtpDir := FtpDir + '/';
FtpSvrName := PFtpNodeType(TemFtpNode.Data)^.FtpSvr;
FtpDisplayDir := PFtpNodeType(TemFtpNode.Data)^.DisplayDir;
ClientPageCtrl.ActivePageIndex := PFtpNodeType(LanTree.Selected.data)^.TabIndex;
CurListView := PFtpNodeType(LanTree.Selected.data)^.MyClientListView;
ListItem := PFtpNodeType(LanTree.Selected.data)^.MyRightListItem;
ListItem.ImageIndex := 125;
AddCap('ftp', ListItem.SubItems[0]);
LanTree.Selected.ImageIndex := 125;
LanTree.Selected.SelectedIndex := 125;
FtpSub := TFtpSubDirThread.Create;
FtpSub.MyTree := LanTree;
FtpSub.ParentNode := LanTree.Selected;
FtpSub.FtpHandle := PFtpNodeType(LanTree.Selected.Data)^.FtpHandle;
FtpSub.Dir := FtpDir;
FtpSub.DisplayDir := FtpDisplayDir;
FtpSub.FtpSvr := FtpSvrName;
FtpSub.ClickType := InTreeView;
FtpSub.MyListView := CurListView;
FtpSub.RListItem := ListItem;
FtpSub.Resume;
//==================================================
if CurDirItem <> nil
then PListItem(CurDirItem.Data)^.NextDirItem := ListItem;
ListItemPtr := PListItem(ListItem.Data);
ListItemPtr^.PrevDirItem := CurDirItem;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -