From 16e449ea50290db50a4330b89f2370e157080392 Mon Sep 17 00:00:00 2001 From: JianjunLiu Date: Thu, 23 Mar 2023 17:58:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修正tree 由于weakref的一个问题 2.优化编辑器目录功能 --- designer/tediterform.tsf | 633 +++++++++++++++++++++------------ funcext/tvclib/utslvcltree.tsf | 4 +- 2 files changed, 416 insertions(+), 221 deletions(-) diff --git a/designer/tediterform.tsf b/designer/tediterform.tsf index 14d3806..51e6028 100644 --- a/designer/tediterform.tsf +++ b/designer/tediterform.tsf @@ -276,7 +276,7 @@ type TEditerForm = class(TVCform) // FEdter := New TEditer(self); Fdirview := new tdirviewer(FEdter); - Fdirview.fcbtn.OnClick := function(o,e)begin + Fdirview.fcloseclick := function(o,e)begin Fdirview.Visible := false; fdirspliter.Visible := false; end @@ -1560,46 +1560,51 @@ end type tdirviewer = class(tcustomcontrol) uses tslvcl; + private + fms; + ffolder; + ftb; + [weakref]ftbns; + [weakref]fsbtns; + fimgs; + public + [weakref] fcloseclick; function create(AOwner); begin inherited; - fnodes := array(); - FEdit := new tedit(self); - imglst := new tcontrolimagelist(self); - bmp := new TBitmap(); - 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; + addtoolbar(); + fnodes := array(); + FEdit := new tedit(self); + FEdit.parent := self; + FEdit.Align := alTop; FTree := new TTreeView(self); FTree.Align := alClient; FTree.parent := self; - ftree.ImageList := imglst; + ftree.ImageList := fimgs; FRootdirs := array(); FTree.onEmptyNodeExapanding:= thisfunction(emptyexpanding); Fnodeinfos := array(); - fdircrc := array(); - FEdit.parent := self; + fdircrc := array(); + 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 if e.CharCode=13 then begin e.skip := true; - dofind(); + if ssShift in e.shiftstate() then findup(); + else finddown(); 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); fms := array(); for i,v in array("Ìí¼Ó¹¤×÷Ŀ¼","ÒÆ³ý¹¤×÷Ŀ¼","Ë¢ÐÂ","´ò¿ª") do @@ -1637,35 +1642,104 @@ type tdirviewer = class(tcustomcontrol) end end FTree.PopupMenu := mus; - s := "0502000000060400000074797065000203000000696D670006040000006461746 -100023F01000089504E470D0A1A0A0000000D4948445200000012000000120806 -00000056CE8E57000000017352474200AECE1CE90000000467414D410000B18F0 -BFC6105000000097048597300000EC300000EC301C76FA864000000D449444154 -384F63F84F2530920CFAB465CDFF4FDBD6417998E0757F3394850AB01A745395E -FFF9783BBA12208F0BC22EBFFD3CC48280F1560F5DAE7EDEBFFDF3696FDFFFDEC -71A8087E43400067187D39B0EBFF3D47DDFF3FAE5F26680808E00DEC6FE74EFE7 -FE06F4BD01010C06B10C8250FFCACFFDF54E1FDFF79F716A8287680D32090218F -22DCC0EC4F5BD7FEBFA527F1FFDBF183603E3680D52090218F9302A13C08F87AE -CC0FFBB16CAFFBF5F3C031541051806BD01A6135C61F2FDC2E9FFF79CF4A03C54 -80378C4801A3061102FFFF03001C3CE074AD27DED70000000049454E44AE42608 -200"; - bmp := new TBitmap(); - bmp.readvcon(HexFormatStrToTsl(s)); - fcbtn.BKBitmap := bmp; + FTree.OnSelChanged := thisfunction(treenodeselchanged); + selnowork(); + end + function treenodeselchanged(o,e); + begin + 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 - fcbtn; - fms; - ffolder; + 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); begin case o.caption of "Ìí¼Ó¹¤×÷Ŀ¼": begin - if not ffolder then ffolder := new TFolderChooseADlg(self); - if ffolder.OpenDlg() then - begin - return addrootdir(ffolder.Folder); - end + addgzml(); end "ÒÆ³ý¹¤×÷Ŀ¼": begin @@ -1678,163 +1752,20 @@ CC0FFBB16CAFFBF5F3C031541051806BD01A6135C61F2FDC2E9FFF79CF4A03C54 end "´ò¿ª": 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 + editnode(); end end ; end - function dofind(o,e); + function finddown(); begin - s := lowercase(trim(FEdit.text)); - if not s then return ; - it := ftree.CurrentNode; - getallnodes(); - return finds(it,s); + dofind(false); end - function finds(it,s) + function findup(); begin - bit := it; - 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 + dofind(true); end + + function emptyexpanding(o,e); begin it := e.item; @@ -1905,6 +1836,8 @@ CC0FFBB16CAFFBF5F3C031541051806BD01A6135C61F2FDC2E9FFF79CF4A03C54 fnodes := array(); return 1; end + + private //²Ëµ¥»Øµ÷ function refreshdir(); begin fbackrootdirs := array(); @@ -1926,6 +1859,198 @@ CC0FFBB16CAFFBF5F3C031541051806BD01A6135C61F2FDC2E9FFF79CF4A03C54 fbackrootdirs := array(); fdircrc := array(); 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 function getname(fname,n,dir); begin @@ -1963,27 +2088,6 @@ CC0FFBB16CAFFBF5F3C031541051806BD01A6135C61F2FDC2E9FFF79CF4A03C54 nodes(nd.GetNodeByIndex(i),nds); 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(); begin return "0502000000060400000074797065000203000000696D670006040000006461746 @@ -2048,6 +2152,97 @@ E80B14172C86AC9B220B1B0E1FFD2F5DBA0E18FC02031901CB25AB22CB874E336 B26C98285AB37C32D58BD65F7FF82FA1E1436B2C1308CD702108029049533F53D 33FEC7E4D6FC0F4A2EF9DFD03B132C86CC768BC842311C84D1018605200072053 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 fbackrootdirs; FTree; diff --git a/funcext/tvclib/utslvcltree.tsf b/funcext/tvclib/utslvcltree.tsf index b522f22..54ba016 100644 --- a/funcext/tvclib/utslvcltree.tsf +++ b/funcext/tvclib/utslvcltree.tsf @@ -1779,9 +1779,9 @@ type TcustomTreeCtl = class(ttreelistwnd) FOnlyLeafNodeCheckMark; FOnSelChanging; FonEmptyNodeExapanding; - FOnSelChanged; - FCurrentNode; + FOnSelChanged; autoref + FCurrentNode; FNodeHierarchyWidth; FMulSelected; FMulSelects;