parent
a9a4ee5dfc
commit
16e449ea50
|
|
@ -276,7 +276,7 @@ type TEditerForm = class(TVCform) //
|
||||||
FEdter := New TEditer(self);
|
FEdter := New TEditer(self);
|
||||||
|
|
||||||
Fdirview := new tdirviewer(FEdter);
|
Fdirview := new tdirviewer(FEdter);
|
||||||
Fdirview.fcbtn.OnClick := function(o,e)begin
|
Fdirview.fcloseclick := function(o,e)begin
|
||||||
Fdirview.Visible := false;
|
Fdirview.Visible := false;
|
||||||
fdirspliter.Visible := false;
|
fdirspliter.Visible := false;
|
||||||
end
|
end
|
||||||
|
|
@ -1560,46 +1560,51 @@ end
|
||||||
|
|
||||||
type tdirviewer = class(tcustomcontrol)
|
type tdirviewer = class(tcustomcontrol)
|
||||||
uses tslvcl;
|
uses tslvcl;
|
||||||
|
private
|
||||||
|
fms;
|
||||||
|
ffolder;
|
||||||
|
ftb;
|
||||||
|
[weakref]ftbns;
|
||||||
|
[weakref]fsbtns;
|
||||||
|
fimgs;
|
||||||
|
public
|
||||||
|
[weakref] fcloseclick;
|
||||||
function create(AOwner);
|
function create(AOwner);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
|
Width := 300;
|
||||||
|
addtoolbar();
|
||||||
fnodes := array();
|
fnodes := array();
|
||||||
FEdit := new tedit(self);
|
FEdit := new tedit(self);
|
||||||
imglst := new tcontrolimagelist(self);
|
FEdit.parent := self;
|
||||||
bmp := new TBitmap();
|
FEdit.Align := alTop;
|
||||||
bmp.readvcon(HexFormatStrToTsl(folderbmp()));
|
|
||||||
imglst.addbmp(bmp);
|
|
||||||
bmp.readvcon(HexFormatStrToTsl(filebmp()));
|
|
||||||
imglst.addbmp(bmp);
|
|
||||||
bmp.readvcon(HexFormatStrToTsl(dllbmp()));
|
|
||||||
imglst.addbmp(bmp);
|
|
||||||
bmp.readvcon(HexFormatStrToTsl(searchbmp()));
|
|
||||||
|
|
||||||
Width := 300;
|
|
||||||
FTree := new TTreeView(self);
|
FTree := new TTreeView(self);
|
||||||
FTree.Align := alClient;
|
FTree.Align := alClient;
|
||||||
FTree.parent := self;
|
FTree.parent := self;
|
||||||
ftree.ImageList := imglst;
|
ftree.ImageList := fimgs;
|
||||||
FRootdirs := array();
|
FRootdirs := array();
|
||||||
FTree.onEmptyNodeExapanding:= thisfunction(emptyexpanding);
|
FTree.onEmptyNodeExapanding:= thisfunction(emptyexpanding);
|
||||||
Fnodeinfos := array();
|
Fnodeinfos := array();
|
||||||
fdircrc := array();
|
fdircrc := array();
|
||||||
FEdit.parent := self;
|
FEdit.onchange := function()begin
|
||||||
|
s := FEdit.text;
|
||||||
|
nd := ftree.rootnode;
|
||||||
|
if trim(s) and (nd.ItemCount>0) then
|
||||||
|
begin
|
||||||
|
for i,v in fsbtns do v.Enabled := true;
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
for i,v in fsbtns do v.Enabled := false;
|
||||||
|
end
|
||||||
|
end
|
||||||
FEdit.onkeyup := function(o,e)begin
|
FEdit.onkeyup := function(o,e)begin
|
||||||
if e.CharCode=13 then
|
if e.CharCode=13 then
|
||||||
begin
|
begin
|
||||||
e.skip := true;
|
e.skip := true;
|
||||||
dofind();
|
if ssShift in e.shiftstate() then findup();
|
||||||
|
else finddown();
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
fcbtn := new tbtn(self);
|
|
||||||
fcbtn.caption := "";
|
|
||||||
fcbtn.Parent := self;
|
|
||||||
fbtn := new tbtn(self);
|
|
||||||
fbtn.caption := "";
|
|
||||||
fbtn.BKBitmap := bmp;
|
|
||||||
fbtn.parent := self;
|
|
||||||
fbtn.onclick := thisfunction(dofind);
|
|
||||||
mus := new TPopupmenu(self);
|
mus := new TPopupmenu(self);
|
||||||
fms := array();
|
fms := array();
|
||||||
for i,v in array("添加工作目录","移除工作目录","刷新","打开") do
|
for i,v in array("添加工作目录","移除工作目录","刷新","打开") do
|
||||||
|
|
@ -1637,35 +1642,104 @@ type tdirviewer = class(tcustomcontrol)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
FTree.PopupMenu := mus;
|
FTree.PopupMenu := mus;
|
||||||
s := "0502000000060400000074797065000203000000696D670006040000006461746
|
FTree.OnSelChanged := thisfunction(treenodeselchanged);
|
||||||
100023F01000089504E470D0A1A0A0000000D4948445200000012000000120806
|
selnowork();
|
||||||
00000056CE8E57000000017352474200AECE1CE90000000467414D410000B18F0
|
|
||||||
BFC6105000000097048597300000EC300000EC301C76FA864000000D449444154
|
|
||||||
384F63F84F2530920CFAB465CDFF4FDBD6417998E0757F3394850AB01A745395E
|
|
||||||
FFF9783BBA12208F0BC22EBFFD3CC48280F1560F5DAE7EDEBFFDF3696FDFFFDEC
|
|
||||||
71A8087E43400067187D39B0EBFF3D47DDFF3FAE5F26680808E00DEC6FE74EFE7
|
|
||||||
FE06F4BD01010C06B10C8250FFCACFFDF54E1FDFF79F716A8287680D32090218F
|
|
||||||
22DCC0EC4F5BD7FEBFA527F1FFDBF183603E3680D52090218F9302A13C08F87AE
|
|
||||||
CC0FFBB16CAFFBF5F3C031541051806BD01A6135C61F2FDC2E9FFF79CF4A03C54
|
|
||||||
80378C4801A3061102FFFF03001C3CE074AD27DED70000000049454E44AE42608
|
|
||||||
200";
|
|
||||||
bmp := new TBitmap();
|
|
||||||
bmp.readvcon(HexFormatStrToTsl(s));
|
|
||||||
fcbtn.BKBitmap := bmp;
|
|
||||||
end
|
end
|
||||||
fcbtn;
|
function treenodeselchanged(o,e);
|
||||||
fms;
|
begin
|
||||||
ffolder;
|
rnd := ftree.rootnode;
|
||||||
|
//没有工作目录
|
||||||
|
if rnd.ItemCount<1 then return selnowork();
|
||||||
|
//没有选择节点
|
||||||
|
t := FEdit.text ;
|
||||||
|
if trim(t) then
|
||||||
|
begin
|
||||||
|
for i,v in fsbtns do v.Enabled := true;
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
for i,v in fsbtns do v.Enabled := false;
|
||||||
|
end
|
||||||
|
it := e.ItemNew;
|
||||||
|
if not it then
|
||||||
|
begin
|
||||||
|
return selnonode();
|
||||||
|
end
|
||||||
|
//选中节点为工作目录
|
||||||
|
if it.parent = rnd then return selnodeiswork();
|
||||||
|
//选中目录为普通节点
|
||||||
|
selnodenotwork();
|
||||||
|
end
|
||||||
|
function addtoolbar(); //初始化工具栏
|
||||||
|
begin
|
||||||
|
ftb := new TToolBar(self);
|
||||||
|
fimgs := new tcontrolimagelist(self);
|
||||||
|
fimgs.Width := 20;
|
||||||
|
fimgs.Height := 20;
|
||||||
|
bmp := new TBitmap();
|
||||||
|
bmp.readvcon(HexFormatStrToTsl(folderbmp()));
|
||||||
|
fimgs.addbmp(bmp);
|
||||||
|
bmp.readvcon(HexFormatStrToTsl(filebmp()));
|
||||||
|
fimgs.addbmp(bmp);
|
||||||
|
bmp.readvcon(HexFormatStrToTsl(dllbmp()));
|
||||||
|
fimgs.addbmp(bmp);
|
||||||
|
ftbns := array();
|
||||||
|
fsbtns := array();
|
||||||
|
for i,v in gettbicons() do
|
||||||
|
begin
|
||||||
|
bt := new TToolButton(ftb);
|
||||||
|
bt.caption := i;
|
||||||
|
bmp.readvcon(HexFormatStrToTsl(v));
|
||||||
|
fimgs.addbmp(bmp);
|
||||||
|
bt.ImageId := fimgs.ImageCount-1;
|
||||||
|
bt.parent := ftb;
|
||||||
|
if i in array("添加工作目录","移除工作目录","打开","刷新") then ftbns[i] := bt;
|
||||||
|
if i in array("查找","反向查找") then fsbtns[i] := bt;
|
||||||
|
bt.onclick := thisfunction(toolclick);
|
||||||
|
end
|
||||||
|
ftb.ImageList := fimgs;
|
||||||
|
ftb.parent := self;
|
||||||
|
end
|
||||||
|
function toolclick(o,e); //工具栏事件
|
||||||
|
begin
|
||||||
|
case o.caption of
|
||||||
|
"关闭":
|
||||||
|
begin
|
||||||
|
if fcloseclick then call(fcloseclick);
|
||||||
|
end
|
||||||
|
"刷新":
|
||||||
|
begin
|
||||||
|
refreshdir();
|
||||||
|
end
|
||||||
|
"打开":
|
||||||
|
begin
|
||||||
|
editnode();
|
||||||
|
end
|
||||||
|
"添加工作目录":
|
||||||
|
begin
|
||||||
|
addgzml();
|
||||||
|
end
|
||||||
|
"移除工作目录":
|
||||||
|
begin
|
||||||
|
nd := FTree.CurrentNode;
|
||||||
|
delrootdir(nd);
|
||||||
|
end
|
||||||
|
"查找":
|
||||||
|
begin
|
||||||
|
finddown();
|
||||||
|
end
|
||||||
|
"反向查找":
|
||||||
|
begin
|
||||||
|
findup();
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function muclick(o,e);
|
function muclick(o,e);
|
||||||
begin
|
begin
|
||||||
case o.caption of
|
case o.caption of
|
||||||
"添加工作目录":
|
"添加工作目录":
|
||||||
begin
|
begin
|
||||||
if not ffolder then ffolder := new TFolderChooseADlg(self);
|
addgzml();
|
||||||
if ffolder.OpenDlg() then
|
|
||||||
begin
|
|
||||||
return addrootdir(ffolder.Folder);
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
"移除工作目录":
|
"移除工作目录":
|
||||||
begin
|
begin
|
||||||
|
|
@ -1678,163 +1752,20 @@ CC0FFBB16CAFFBF5F3C031541051806BD01A6135C61F2FDC2E9FFF79CF4A03C54
|
||||||
end
|
end
|
||||||
"打开":
|
"打开":
|
||||||
begin
|
begin
|
||||||
nd := ftree.CurrentNode;
|
editnode();
|
||||||
if not nd then return ;
|
|
||||||
ins := Fnodeinfos[nd.handle];
|
|
||||||
ed := Owner;
|
|
||||||
if ins then
|
|
||||||
begin
|
|
||||||
if ins.isfile then
|
|
||||||
begin
|
|
||||||
Owner.OpenAndGotoFileByName(ins.fullname);
|
|
||||||
end else
|
|
||||||
_wapi.openresourcemanager(ins.fullname);
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end ;
|
end ;
|
||||||
end
|
end
|
||||||
function dofind(o,e);
|
function finddown();
|
||||||
begin
|
begin
|
||||||
s := lowercase(trim(FEdit.text));
|
dofind(false);
|
||||||
if not s then return ;
|
|
||||||
it := ftree.CurrentNode;
|
|
||||||
getallnodes();
|
|
||||||
return finds(it,s);
|
|
||||||
end
|
end
|
||||||
function finds(it,s)
|
function findup();
|
||||||
begin
|
begin
|
||||||
bit := it;
|
dofind(true);
|
||||||
flag := false;
|
|
||||||
ct := length(fnodes);
|
|
||||||
firstx := 0;
|
|
||||||
for i,v in fnodes do
|
|
||||||
begin
|
|
||||||
if v=it then
|
|
||||||
begin
|
|
||||||
firstx := i+1;
|
|
||||||
break;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
for i := 0 to ct -1 do
|
|
||||||
begin
|
|
||||||
idx := (firstx+i) mod ct;
|
|
||||||
it := fnodes[idx];
|
|
||||||
if pos(s,lowercase(it.caption)) then
|
|
||||||
begin
|
|
||||||
FTree.SetSel(it);
|
|
||||||
return 1;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return 0;
|
|
||||||
end
|
|
||||||
function doControlALign();override;
|
|
||||||
begin
|
|
||||||
if FEdit and FTree and fbtn and fcbtn then
|
|
||||||
begin
|
|
||||||
rc := ClientRect;
|
|
||||||
rc1 := array(rc[0]+20,rc[1],rc[2]-30,rc[0]+24);
|
|
||||||
rc3 := array(rc[2]-26,rc[1],rc[2]-2,rc[0]+24);
|
|
||||||
rc4 := array(rc[0]+1,rc[1]+2,rc[0]+19,rc[1]+20);
|
|
||||||
rc2 := array(rc[0],rc[1]+25,rc[2],rc[3]);
|
|
||||||
FEdit.SetBoundsRect(rc1);
|
|
||||||
FTree.SetBoundsRect(rc2);
|
|
||||||
fbtn.SetBoundsRect(rc3);
|
|
||||||
fcbtn.SetBoundsRect(rc4);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
function loadall(nd,ct,mct);
|
|
||||||
begin
|
|
||||||
if not nd then
|
|
||||||
begin
|
|
||||||
nd := FTree.rootnode;
|
|
||||||
end
|
|
||||||
if nd.ItemCount<1 and nd.dirtype then lazyload(nd,0);
|
|
||||||
ct+= nd.ItemCount;
|
|
||||||
for i:= 0 to nd.ItemCount-1 do
|
|
||||||
begin
|
|
||||||
if ct>=mct then return ;
|
|
||||||
loadall(nd.GetNodeByIndex(i),ct,mct);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
function countfile(dir,n,ct);
|
|
||||||
begin
|
|
||||||
n++;
|
|
||||||
if ct<=n then return ;
|
|
||||||
iof := static iofileseparator();
|
|
||||||
fs := filelist("",dir);
|
|
||||||
if not fs then return n;
|
|
||||||
for i,v in filelist("",dir+iof+"*") do
|
|
||||||
begin
|
|
||||||
fn := v["FileName"];
|
|
||||||
if pos("H",v["Attr"]) then continue;
|
|
||||||
if fn="." or fn=".." then continue;
|
|
||||||
if pos("D",v["Attr"]) then
|
|
||||||
begin
|
|
||||||
countfile(dir+iof+fn,n,ct);
|
|
||||||
end else n++;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
function lazyload(it,ex);
|
|
||||||
begin
|
|
||||||
ins := Fnodeinfos[it.handle];
|
|
||||||
iof := iofileseparator();
|
|
||||||
if ins then
|
|
||||||
begin
|
|
||||||
dir := ins.fullname();
|
|
||||||
ct := 0;
|
|
||||||
dirs := array();
|
|
||||||
files := array();
|
|
||||||
subs := filelist("",dir+iof+"*");
|
|
||||||
crc := getmsgd_crc32(tostn(subs));
|
|
||||||
if fdircrc[crc] then return it.dirtype := false ;
|
|
||||||
fdircrc[crc] := true;
|
|
||||||
for i,v in subs do
|
|
||||||
begin
|
|
||||||
fn := v["FileName"];
|
|
||||||
if fn="." or fn=".." then continue;
|
|
||||||
if pos("H",v["Attr"]) then continue;
|
|
||||||
if pos("D",v["Attr"]) then
|
|
||||||
begin
|
|
||||||
dirs[i] := array(dir+iof+fn,it);
|
|
||||||
end else
|
|
||||||
begin
|
|
||||||
nd := FTree.CreateTreeNode();
|
|
||||||
iid := 1;
|
|
||||||
if pos(".dll",lowercase(fn)) or pos(".exe",lowercase(fn)) or pos(".lib",lowercase(fn)) then iid := 2;
|
|
||||||
files[i] := array(fn,dir,iid,nd);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
for j,v in files do
|
|
||||||
begin
|
|
||||||
iid := v[2];
|
|
||||||
fn := v[0];
|
|
||||||
dir := v[1];
|
|
||||||
nd := v[3];
|
|
||||||
nd.ImgId := iid;
|
|
||||||
nd.SelImgId := iid;
|
|
||||||
nd.Caption := fn;
|
|
||||||
nd.parent := it;
|
|
||||||
ndinfo := new tdirnodeinfo();
|
|
||||||
Fnodeinfos[nd.handle] := ndinfo;
|
|
||||||
ndinfo.isfile := true;
|
|
||||||
ndinfo.fname :=fn;
|
|
||||||
ndinfo.Folder := dir ;
|
|
||||||
ct++;
|
|
||||||
end
|
|
||||||
for j,v in dirs do
|
|
||||||
begin
|
|
||||||
adddir(v[0],v[1]);
|
|
||||||
ct++;
|
|
||||||
end
|
|
||||||
if ct then
|
|
||||||
begin
|
|
||||||
if ex then it.expand();
|
|
||||||
end
|
|
||||||
begin
|
|
||||||
it.dirtype := false;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function emptyexpanding(o,e);
|
function emptyexpanding(o,e);
|
||||||
begin
|
begin
|
||||||
it := e.item;
|
it := e.item;
|
||||||
|
|
@ -1905,6 +1836,8 @@ CC0FFBB16CAFFBF5F3C031541051806BD01A6135C61F2FDC2E9FFF79CF4A03C54
|
||||||
fnodes := array();
|
fnodes := array();
|
||||||
return 1;
|
return 1;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private //菜单回调
|
||||||
function refreshdir();
|
function refreshdir();
|
||||||
begin
|
begin
|
||||||
fbackrootdirs := array();
|
fbackrootdirs := array();
|
||||||
|
|
@ -1926,6 +1859,198 @@ CC0FFBB16CAFFBF5F3C031541051806BD01A6135C61F2FDC2E9FFF79CF4A03C54
|
||||||
fbackrootdirs := array();
|
fbackrootdirs := array();
|
||||||
fdircrc := array();
|
fdircrc := array();
|
||||||
end
|
end
|
||||||
|
function dofind(d);
|
||||||
|
begin
|
||||||
|
s := lowercase(trim(FEdit.text));
|
||||||
|
if not s then return ;
|
||||||
|
it := ftree.CurrentNode;
|
||||||
|
getallnodes();
|
||||||
|
return finds(it,s,d);
|
||||||
|
end
|
||||||
|
function finds(it,s,d)
|
||||||
|
begin
|
||||||
|
bit := it;
|
||||||
|
flag := false;
|
||||||
|
ct := length(fnodes);
|
||||||
|
firstx := 0;
|
||||||
|
for i,v in fnodes do
|
||||||
|
begin
|
||||||
|
if v=it then
|
||||||
|
begin
|
||||||
|
firstx := i+(d?(-1):1);
|
||||||
|
break;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if d then
|
||||||
|
begin
|
||||||
|
sa := array(ct-1,-1)->0;
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
sa := 0->(ct-1);
|
||||||
|
end
|
||||||
|
for ii,i in sa do
|
||||||
|
begin
|
||||||
|
idx := (firstx+i) mod ct;
|
||||||
|
it := fnodes[idx];
|
||||||
|
if pos(s,lowercase(it.caption)) then
|
||||||
|
begin
|
||||||
|
FTree.SetSel(it);
|
||||||
|
return 1;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return 0;
|
||||||
|
end
|
||||||
|
function addgzml(); //添加工作目录
|
||||||
|
begin
|
||||||
|
if not ffolder then ffolder := new TFolderChooseADlg(self);
|
||||||
|
if ffolder.OpenDlg() then
|
||||||
|
begin
|
||||||
|
return addrootdir(ffolder.Folder);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function editnode(); //打开
|
||||||
|
begin
|
||||||
|
nd := ftree.CurrentNode;
|
||||||
|
if not nd then return ;
|
||||||
|
ins := Fnodeinfos[nd.handle];
|
||||||
|
ed := Owner;
|
||||||
|
if ins then
|
||||||
|
begin
|
||||||
|
if ins.isfile then
|
||||||
|
begin
|
||||||
|
Owner.OpenAndGotoFileByName(ins.fullname);
|
||||||
|
end else
|
||||||
|
_wapi.openresourcemanager(ins.fullname);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function selnodeiswork();
|
||||||
|
begin
|
||||||
|
for i,v in ftbns do
|
||||||
|
begin
|
||||||
|
v.Enabled := true;
|
||||||
|
end
|
||||||
|
//移除,添加,刷新,打开
|
||||||
|
end
|
||||||
|
function selnodenotwork();
|
||||||
|
begin
|
||||||
|
//刷新,打开
|
||||||
|
for i,v in ftbns do
|
||||||
|
begin
|
||||||
|
if i in array("打开","刷新") then
|
||||||
|
begin
|
||||||
|
v.Enabled := true;
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
v.Enabled := false;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function selnonode();
|
||||||
|
begin
|
||||||
|
//添加,刷新
|
||||||
|
for i,v in ftbns do
|
||||||
|
begin
|
||||||
|
if i in array("添加工作目录","刷新") then
|
||||||
|
begin
|
||||||
|
v.Enabled := true;
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
v.Enabled := false;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function selnowork();
|
||||||
|
begin
|
||||||
|
//添加
|
||||||
|
for i,v in ftbns do
|
||||||
|
begin
|
||||||
|
if i in array("添加工作目录") then
|
||||||
|
begin
|
||||||
|
v.Enabled := true;
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
v.Enabled := false;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for i,v in fsbtns do v.Enabled := false;
|
||||||
|
end
|
||||||
|
private //加载相关
|
||||||
|
function loadall(nd,ct,mct); //加载所有节点
|
||||||
|
begin
|
||||||
|
if not nd then
|
||||||
|
begin
|
||||||
|
nd := FTree.rootnode;
|
||||||
|
end
|
||||||
|
if nd.ItemCount<1 and nd.dirtype then lazyload(nd,0);
|
||||||
|
ct+= nd.ItemCount;
|
||||||
|
for i:= 0 to nd.ItemCount-1 do
|
||||||
|
begin
|
||||||
|
if ct>=mct then return ;
|
||||||
|
loadall(nd.GetNodeByIndex(i),ct,mct);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
function lazyload(it,ex);//惰性加载节点
|
||||||
|
begin
|
||||||
|
ins := Fnodeinfos[it.handle];
|
||||||
|
iof := iofileseparator();
|
||||||
|
if ins then
|
||||||
|
begin
|
||||||
|
dir := ins.fullname();
|
||||||
|
ct := 0;
|
||||||
|
dirs := array();
|
||||||
|
files := array();
|
||||||
|
subs := filelist("",dir+iof+"*");
|
||||||
|
crc := getmsgd_crc32(tostn(subs));
|
||||||
|
if fdircrc[crc] then return it.dirtype := false ;
|
||||||
|
fdircrc[crc] := true;
|
||||||
|
for i,v in subs do
|
||||||
|
begin
|
||||||
|
fn := v["FileName"];
|
||||||
|
if fn="." or fn=".." then continue;
|
||||||
|
if pos("H",v["Attr"]) then continue;
|
||||||
|
if pos("D",v["Attr"]) then
|
||||||
|
begin
|
||||||
|
dirs[i] := array(dir+iof+fn,it);
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
nd := FTree.CreateTreeNode();
|
||||||
|
iid := 1;
|
||||||
|
if pos(".dll",lowercase(fn)) or pos(".ocx",lowercase(fn)) or pos(".exe",lowercase(fn)) or pos(".lib",lowercase(fn)) then iid := 2;
|
||||||
|
files[i] := array(fn,dir,iid,nd);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
for j,v in files do
|
||||||
|
begin
|
||||||
|
iid := v[2];
|
||||||
|
fn := v[0];
|
||||||
|
dir := v[1];
|
||||||
|
nd := v[3];
|
||||||
|
nd.ImgId := iid;
|
||||||
|
nd.SelImgId := iid;
|
||||||
|
nd.Caption := fn;
|
||||||
|
nd.parent := it;
|
||||||
|
ndinfo := new tdirnodeinfo();
|
||||||
|
Fnodeinfos[nd.handle] := ndinfo;
|
||||||
|
ndinfo.isfile := true;
|
||||||
|
ndinfo.fname :=fn;
|
||||||
|
ndinfo.Folder := dir ;
|
||||||
|
ct++;
|
||||||
|
end
|
||||||
|
for j,v in dirs do
|
||||||
|
begin
|
||||||
|
adddir(v[0],v[1]);
|
||||||
|
ct++;
|
||||||
|
end
|
||||||
|
if ct then
|
||||||
|
begin
|
||||||
|
if ex then it.expand();
|
||||||
|
end
|
||||||
|
begin
|
||||||
|
it.dirtype := false;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
private
|
private
|
||||||
function getname(fname,n,dir);
|
function getname(fname,n,dir);
|
||||||
begin
|
begin
|
||||||
|
|
@ -1963,27 +2088,6 @@ CC0FFBB16CAFFBF5F3C031541051806BD01A6135C61F2FDC2E9FFF79CF4A03C54
|
||||||
nodes(nd.GetNodeByIndex(i),nds);
|
nodes(nd.GetNodeByIndex(i),nds);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function searchbmp();
|
|
||||||
begin
|
|
||||||
return "0502000000060400000074797065000203000000696D670006040000006461746
|
|
||||||
100020502000089504E470D0A1A0A0000000D4948445200000018000000180806
|
|
||||||
000000E0773DF8000000017352474200AECE1CE90000000467414D410000B18F0
|
|
||||||
BFC6105000000097048597300000EC300000EC301C76FA8640000019A49444154
|
|
||||||
484BED942FABC2601487170D1A440D62D0E0D2D06214C14FB02698449BF82564C
|
|
||||||
92018FC0676510441B098B681268320220836A36098E97739F3782FF2BEF35DF0
|
|
||||||
A67B1F58F89DFD79DEEDECBC1A7E993F24389FCF58AFD7B8DD6E5C098752D0E97
|
|
||||||
490CBE5A069DAF7512C16311C0EF98AF7040AB6DB2D32990C9ACD26369B0D2E97
|
|
||||||
0B3CCFC3E170C0783C46229180699A381E8F7C871CA9E07EBFFB2B9D4C265C915
|
|
||||||
32E97D1683438C9910AEAF53A2CCBE214CCF57A453299C462B1E08A8820389D4E
|
|
||||||
88C5629CD4F4FB7DB45A2D4E2282603E9F43D7754E6A6CDB462A95E2242208BAD
|
|
||||||
D2EAAD52AA77050BF56AB15A75704C16C36433E9FE7A4861EFCEE930A82FD7E8F
|
|
||||||
6834CA490DF5A056AB7112110444A552C16030E014CCF32F1A8D465C11910AE8B
|
|
||||||
5C3CE41BBDDE624472A20A8D9F178DC9FE4DD6EC7D5C7AA9F936C18C6CB391981
|
|
||||||
0282FA417B113D2C9D4EA3542AF96F562814D0EBF5FC4564B359B8AECB7788BC1
|
|
||||||
53CA1AD83E683FAE2380E571F908416B05C2EB9F24A28810A924422114CA753AE
|
|
||||||
FCF011011134A01F1304F12F50007C017768621EE3E529620000000049454E44A
|
|
||||||
E42608200";
|
|
||||||
end
|
|
||||||
function filebmp();
|
function filebmp();
|
||||||
begin
|
begin
|
||||||
return "0502000000060400000074797065000203000000696D670006040000006461746
|
return "0502000000060400000074797065000203000000696D670006040000006461746
|
||||||
|
|
@ -2048,6 +2152,97 @@ E80B14172C86AC9B220B1B0E1FFD2F5DBA0E18FC02031901CB25AB22CB874E336
|
||||||
B26C98285AB37C32D58BD65F7FF82FA1E1436B2C1308CD702108029049533F53D
|
B26C98285AB37C32D58BD65F7FF82FA1E1436B2C1308CD702108029049533F53D
|
||||||
33FEC7E4D6FC0F4A2EF9DFD03B132C86CC768BC842311C84D1018605200072053
|
33FEC7E4D6FC0F4A2EF9DFD03B132C86CC768BC842311C84D1018605200072053
|
||||||
91813FCFF0F007C3FE0AC714133290000000049454E44AE42608200";
|
91813FCFF0F007C3FE0AC714133290000000049454E44AE42608200";
|
||||||
|
end
|
||||||
|
function gettbicons();
|
||||||
|
begin
|
||||||
|
r := array();
|
||||||
|
r["关闭"] := "0502000000060400000074797065000203000000696D670006040000006461746
|
||||||
|
10002C401000089504E470D0A1A0A0000000D4948445200000014000000140806
|
||||||
|
0000008D891D0D000000017352474200AECE1CE90000000467414D410000B18F0
|
||||||
|
BFC6105000000097048597300000EC300000EC301C76FA8640000015949444154
|
||||||
|
384F9D9431CA83401085F7625E21E015BC8156D639809D95AD36C142248568ED0
|
||||||
|
93C8277B0B0D99F4F32B2EB8EE1270F1EAC3B6FBE85901963156DDB66C771B455
|
||||||
|
55D93CCF6D1CC7873973478D8CA600B82C8B4D92C44651F4D564C85EE501BBAE5
|
||||||
|
39BBF991E5727709E67B5E13FA6577400D775F502455178DF9AAF19180770DF77
|
||||||
|
9BA6A917444DD3780DAEA921170A03961986C10B636968DB36A87187B4076199B
|
||||||
|
22C830296C6F7FB7DDE7146DA431896C9B24C2D6201F0BFC3C87DE06A58E6F178
|
||||||
|
A845B18010672D2386659800AD289EA6E983B3C759CB886119C6492BE2BEEF4F9
|
||||||
|
080B9D3B218966136B5E2EBF50A00F20035372B8665B4DFA5AEEBDB467988CCB5
|
||||||
|
06CBB035DC65F07C3E6F1BC4F22059B98301EB183DB686DBE006EF7CCDC8E6399
|
||||||
|
7C32F9B46EC6E1C6F7DFDB271DC4D833C20626BB8CBE2CE6464C3B80A8088ADC1
|
||||||
|
A0339B8C1313803973478D4C286BFF00D135DFBA6F19E4A90000000049454E44A
|
||||||
|
E42608200";
|
||||||
|
r["添加工作目录"]:=folderbmp();
|
||||||
|
r["移除工作目录"] := "0502000000060400000074797065000203000000696D670006040000006461746
|
||||||
|
10002F101000089504E470D0A1A0A0000000D4948445200000014000000140806
|
||||||
|
0000008D891D0D000000017352474200AECE1CE90000000467414D410000B18F0
|
||||||
|
BFC6105000000097048597300000EC300000EC301C76FA8640000018649444154
|
||||||
|
384F9594A1AEC2301486270978C41C8684CC20090A3B4B022F805C160C9204378
|
||||||
|
5018F4060103C0104349E81C5E030047FEEFD0FA7A5BD1B2BF74B9AECB4E7FFE8
|
||||||
|
9A328F3EB0DFEF0BC727728508789E573826938974DBB0F072B9647680D0E170C
|
||||||
|
81D9D4E8785663F1C5AD8EBF5323BF8EF80430BC1743AA57ABD2ED5F7341A0DCE
|
||||||
|
2AB470B55A51B95C96EACD7C3E9727A2D3E944F7FB5DAA17954A85B30A2DDCED7
|
||||||
|
6BC751375960A757626584756A1BBCFE7332F5EAF5799710B6FB71BAF23ABD0DD
|
||||||
|
8FC7834AA5124B142EE1F178E40CB28A77F72FB55A8D168B85546EE166B3E18C8
|
||||||
|
9256CB7DB341E8FA5720B67B319674C2C61B7DBA5C16020955B381A8D38636209
|
||||||
|
A328A2300CA5720BFBFD3E674C2C619224D46C36A5720B5BAD16674C2CE172B9A
|
||||||
|
46AB52A955BE8FB3E674C2CE176BB6581BA06100641C0CF60381C6AE1F3F9E45E
|
||||||
|
644C2CA1BADC699ACACCEBEF9607BE2EE8352F35B084D8199AD6EBB5CC7C063DE
|
||||||
|
6DB282C2188E3981B715E45033DE8FD4B4608F0EB38ABA291FF16443F3022F41A
|
||||||
|
5192ECC50000000049454E44AE42608200";
|
||||||
|
r["刷新"] := "0502000000060400000074797065000203000000696D670006040000006461746
|
||||||
|
100029C01000089504E470D0A1A0A0000000D4948445200000014000000140806
|
||||||
|
0000008D891D0D000000017352474200AECE1CE90000000467414D410000B18F0
|
||||||
|
BFC6105000000097048597300000EC300000EC301C76FA8640000013149444154
|
||||||
|
384FBD940D8D834010464F10064000064000180001200004A0000318000128C00
|
||||||
|
0063030CD9B63B62D85CB5ED3F42513C8EEEC373F3BF0231FE67B82EBBA4ADBB6
|
||||||
|
92A6A90441A0C67B5DD732CFF3EEF5CAA960DFF72A1086A15455255DD7A9F11EC
|
||||||
|
7B1EE956529DBB6ED27EE3C099215360C83DAD9012020C1C8F8E8A382E338BAD2
|
||||||
|
78FAB02C8B8AE679BEAFFCA2824551489224AE5764E90355E0FFD85357323D222
|
||||||
|
23DC2D117FC49C87082599669D3C9EEAA7767344DA3591A4E9045B2FC2F9CF98E
|
||||||
|
209742D9BE585B6C360D2768BDF0BD6184B88C63654E102136F9027CB091C1984
|
||||||
|
51375826059F2BDFAC098E14FAB18747812044AB1A8D334EDAB7758638FE00CF4
|
||||||
|
B1452F8240FA163D8A221578FCEBB07735FCA782C02D7288C653920D3E6B7F0DF
|
||||||
|
EA5E0BB7C5850E4063EDA83420076B5E10000000049454E44AE42608200";
|
||||||
|
r["查找"]:="0502000000060400000074797065000203000000696D670006040000006461746
|
||||||
|
100023601000089504E470D0A1A0A0000000D4948445200000014000000140806
|
||||||
|
0000008D891D0D000000017352474200AECE1CE90000000467414D410000B18F0
|
||||||
|
BFC6105000000097048597300000EC300000EC301C76FA864000000CB49444154
|
||||||
|
384FED91310A8340104573201BB1110BC1422CC446F068DEC033D968A3853636D
|
||||||
|
AD8083FFC75922059758349970703C39FD9C7B27BC397F90BAFF35B615114D299
|
||||||
|
93E7B9742B4F615996B02C0B599649720E777986671F6C6E58D7351CC7319272C
|
||||||
|
7B66D545525C9CADB1BB66D0BCFF30EA59CB9AE8BA6692479A1FD94BEEF110481
|
||||||
|
56CACCF77D745D27C916AD900CC380288A3652F66118AAD91EBB42324D1392245
|
||||||
|
122561CC718C751A67A0E85649E67A469AA8AFD19A742B22C8B2A138C849FF017
|
||||||
|
5E05B8030D10FC4ABB5F29D00000000049454E44AE42608200";
|
||||||
|
r["反向查找"] := "0502000000060400000074797065000203000000696D670006040000006461746
|
||||||
|
100023A01000089504E470D0A1A0A0000000D4948445200000014000000140806
|
||||||
|
0000008D891D0D000000017352474200AECE1CE90000000467414D410000B18F0
|
||||||
|
BFC6105000000097048597300000EC300000EC301C76FA864000000CF49444154
|
||||||
|
384FEDD1CF0A454014C7F1D959B1B2623536BC25CF63230B29A5A4B010C50BFD6
|
||||||
|
E8733F736F973955B77E3B31A67CC7714811F7B82F7FD2738CF33A669E2A7735F
|
||||||
|
83C330200802F8BE8FBEEF797AEC34D8751D3CCF43188688A208524A344DC3BBF
|
||||||
|
B0E83755DC375DD25A650D4711C5455C593ADDD605996B06D5B8B2914A5BDA228
|
||||||
|
78A2DB04F33C876559CBC1237491699AC8B28C271F5A304D531886711A53284AE
|
||||||
|
F2649C293D53B18C731841097620A45E90C9D55B42F1CC79157D7B56DCBABD5EE
|
||||||
|
4FB9E309DE05BC002EB9F422B338307C0000000049454E44AE42608200";
|
||||||
|
r["打开"] := "0502000000060400000074797065000203000000696D670006040000006461746
|
||||||
|
10002C201000089504E470D0A1A0A0000000D4948445200000014000000140806
|
||||||
|
0000008D891D0D000000017352474200AECE1CE90000000467414D410000B18F0
|
||||||
|
BFC6105000000097048597300000EC300000EC301C76FA8640000015749444154
|
||||||
|
384FB5D43D4BC350140660FF89820AFE1135D2440545AB82E26235A9427129A25
|
||||||
|
25C6A116A9DD4BD4E756951076D87BAD4D14E814AA042B01532660CBC72AE69B8
|
||||||
|
FD8A37105F38907393F364B8371941C8F93FB0542C428DED627D35EA5B1F8D863
|
||||||
|
B01E8BA8ED657CBED7EE381715545A55CC15BADE65B9DD0F3F482F1D1313C3D3C
|
||||||
|
BAAB1C48374443181585307E363048D0DE4ECC43799C1208A4C1EDCD2D388EE3F
|
||||||
|
53C461106697023BA06DBB6597F9848F4611421F0408B636569199665B1FE2899
|
||||||
|
F4B0FA7BBD0BFE13246C5151609A26EBCF52A92E80769E9FF505098BCC4A300C8
|
||||||
|
3F599741AFB9AC6AE3B11063F9B4DCC476448D333EC30E7B2D93E8C220CDEE5F3
|
||||||
|
B838CFE0F6FA86A183308A3048674D96E6303531C9BE88611106EF0B05BC56ABF
|
||||||
|
86EB7DD95C109B42922190AD25110F939F4D6D5650E0BB2E22A1C28FAFBEAADD3
|
||||||
|
E313949F5F5C8503C34AC820F003058F6573F619F1EC0000000049454E44AE426
|
||||||
|
08200";
|
||||||
|
return r;
|
||||||
end
|
end
|
||||||
fbackrootdirs;
|
fbackrootdirs;
|
||||||
FTree;
|
FTree;
|
||||||
|
|
|
||||||
|
|
@ -1780,8 +1780,8 @@ type TcustomTreeCtl = class(ttreelistwnd)
|
||||||
FOnSelChanging;
|
FOnSelChanging;
|
||||||
FonEmptyNodeExapanding;
|
FonEmptyNodeExapanding;
|
||||||
FOnSelChanged;
|
FOnSelChanged;
|
||||||
FCurrentNode;
|
|
||||||
autoref
|
autoref
|
||||||
|
FCurrentNode;
|
||||||
FNodeHierarchyWidth;
|
FNodeHierarchyWidth;
|
||||||
FMulSelected;
|
FMulSelected;
|
||||||
FMulSelects;
|
FMulSelects;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue