From 8eeacc5a24ffde05ae61d625ae310b5958dc6a71 Mon Sep 17 00:00:00 2001 From: JianjunLiu Date: Fri, 18 Nov 2022 14:23:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=95=8C=E9=9D=A2=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 鏁寸悊浠g爜 --- designer/utslvcldesignerresource.tsf | 94 +--------------------------- funcext/tvclib/utslmemo.tsf | 39 ++---------- funcext/tvclib/utslvclauxiliary.tsf | 33 ++++++++++ funcext/tvclib/utslvcltree.tsf | 25 ++++---- 4 files changed, 54 insertions(+), 137 deletions(-) diff --git a/designer/utslvcldesignerresource.tsf b/designer/utslvcldesignerresource.tsf index b3b1b44..433f9bc 100644 --- a/designer/utslvcldesignerresource.tsf +++ b/designer/utslvcldesignerresource.tsf @@ -1018,33 +1018,7 @@ E3F61E39BFFD2F1B893355116B4AC7C0595C10E4EDDFAF65F27E736863E1026CA 3DD02743C30169816DEC5AA981CECDDF8106A2A9205FB2E7D0157EAD834908275 73EEFC3F77F73BD454240B40E02FB0A1F00C5814808A0372F0F377BFA126C1C0F FFF00F43790467FB950B60000000049454E44AE42608200"; - return "0502000000060400000074797065000203000000696D670006040000006461746 -100022A03000089504E470D0A1A0A0000000D4948445200000020000000200806 -000000737A7AF4000000017352474200AECE1CE90000000467414D410000B18F0 -BFC6105000000097048597300000EC300000EC301C76FA864000002BF49444154 -5847BD974B681341188073F289F80005116C6BA10F15D48B56A8AF832858A8288 -8F460412A420F05A9079182E2C1E20391422B88A055F060050F2282482D689552 -2A5AA14DB24D9A3449D39A36469B64934DB2BFFB4FA6D34C36AF26BBFBC17FC8F -E9BFFFF6676323B314101486E2744C67ED24FDA925720F47500849A8D602E5B09 -A12FFDF4AA76E414C0E6D6EA0D60DEBE824468F013CD68475681F0D067106A37B -1E6735D9D34A32D1905B8E6CAD4FB9F74D18CF6A80454CD9F76D38C3E7002E9CD -FFF43EA219FD60025CF38AD51078D54B33FA4204D29BFF7DFD82245359F8F80E7 -E775E2F2870C1E200A2360BFD76764CAAE66F5ED2D412F1791F98CB5725EF5966 -D88FEE26EB4896A2B41A8FC9D5DCC86E7634D667BC518EC5C0717C1F5778B9613 -B540DE1916FB4E212A644380453E74FB01B5D171A408E88349D422241B664C969 -CF1BE2F72108F43D0777CB19B0EE58C36A5B2AD7A96698AC8182258A202A8C73B -5F13107073ED02C1540F49480781C663ADA586DEBAE2D109B769314B70F1089A6 -93FA48C832785A9B586DEFD54BE4322780C862583789B87F0EAC3B37276B2B8F4 -29A9A540B207A4AF8EEDF6475FD8F1F661640D2D784FBE269F24B2895C8F82F56 -13079955004997107F0CD34C6990038E52CF565F955B0041096F7B0B9901AD1E8 -3FD700D11B054ADCF2FA00713FBCB8880B067ABF102388B8BBB236EEF860B04FB -DF93E618D36DCDC60B782E9F6302FFDEF6192B101E1E24272D6C2EECDD0689E08 -2710231DF2C4C1C2867A3F73FEB21D70D11C093D1E4915AD6DC79F69872C69048 -4E578178C00FBE07B7D8C68361AFAB24B3B1082780070EDC9FE77BEE151FDD776 -1F6C615B2CD5A2BD6B2C6188E868310F37A68B7249C007770D030F0EF9DEF4E07 -79C9A5C309CC5C6BCD58A0A85056BBF3549D7242BEAD1A752AFC1A50DE7691B15 -11047474A0AC9E500391AA1457301F01FDA4F2FDFE8B101E70000000049454E44 -AE42608200"; + end function getbackwardbitmapinfo(); begin @@ -1204,32 +1178,7 @@ B4F5651D24CDD9CD213598D5F4AE4BC9EEBB762D51949B0A4234D80C1B3BF6BD8 EE868D87933AAC54DE39AC98B352B68B9BF9CF68FC829B01DB048EB908D46B77D 6704184CCC164FF993FE57816CD86101E03733D36B2144974A6E0000000049454 E44AE42608200"; - return "0502000000060400000074797065000203000000696D670006040000006461746 -100021B03000089504E470D0A1A0A0000000D4948445200000020000000200806 -000000737A7AF4000000017352474200AECE1CE90000000467414D410000B18F0 -BFC6105000000097048597300000EC300000EC301C76FA864000002B049444154 -5847E597CB6B13511487FD5F5CB8115C09EE74A12E4437D58D2B455011DC88822 -86215AD8A2DA1A550954A7D9582A4565B4DB56A158D4A11ADD6BE93B44D62D264 -92A6499C344D3331C79CE39921D3492693718C0B3FB884FBE33E3EEECCBD77B20 -6FE31550B48C20F488F06203D16845C2CC5A9792A0A64A6C310BAE880D93DD761 -6CED694D99D8701EBCFB6F41F8CA5358F12E702FE3E80A084DCF6162FD399AC87 -BE036241E7D858C5B809F6206A4A808A2D305D1F6B710386E2FB4AB87A94D9720 -76E703F736465901FFD12E9A187F97867D9C9667E9E31C7876B52AB2462929202 -F6FB27F9413E3044ED895FE46D008A0BDD1CEE548BDF7D01842F34B4ECAA312C0 -E7871DC397FB3931CF42C73B1A0BDF1B3D14017C83F1259AA96BE3E4CFF11DBC0 -B737BDBB9561A452074E10919E3F25985383845638A4E37275A1481E9CD8DB4D7 -AD06572170F201D7B490406A68864CF1C0B19AE88D37E0DA66E39A161248F48D9 -080996D5789B8FD138D9D5FCE72A28604A2379DD4480A2529B412F1D5EFF76079 -32C4891A1290B74C3618A7D04A6401BC534A4102B8F4D828D1ABBF67CD808F607 -CDD19C84B394ED49040C6132181F9B3BD145A49A4ED357876B6724D0B0920B3BB -AF8167470BD7AC037798DE91AC08445A06691516BB3F73521B14815C220DEEC27 -EC503A9962802C862E710AD42F0540F277F1F950062C5758CDB1A8B113402080A -60A9F664942222CCD7F729FDABFE1E28A6DA4FB2F8C32FE0DA6AA33EA106077C3 -F76DF9044590104F7B07B7B330D84178AFFF03D101A0720F17804928E6F20D85E -80AF90B9B634511BEFBE0EFA3694C15BB09284AE0092CFE620DE330CFE239D345 -87199DCD800BE4305A9C204C98171EEA1060F373D898A02AB91FF98ACF8629C54 -061F094AE059B39AAA05CC12BEFAACE44AD44C00C1C951A2989A0A94E27F1700F -805D0F3420D05EDA5310000000049454E44AE42608200"; + end function gettslcodeformatbitmapinfo(); begin @@ -1252,23 +1201,6 @@ E0B401814C1B0603A7FF7FBFF7FC0B0564D43049B7CD2CDFF39339E814B509818 0CC3005E0B9071E9BC17E01C8A4D0E1B8601A22D2015C300FD2C005512D814928 315536E414D45B2005465820A326C1A48C1A0D404320B06E016D00AD0D882FFFF 01032FD2B573B4A8F80000000049454E44AE42608200"; - return "0502000000060400000074797065000203000000696D670006040000006461746 -10002E601000089504E470D0A1A0A0000000D4948445200000018000000180806 -000000E0773DF8000000017352474200AECE1CE90000000467414D410000B18F0 -BFC6105000000097048597300000EC300000EC301C76FA8640000017B49444154 -484BCD96CD2B04611CC7FD390E8E5C1D957273578E0E2E4AED897FC045EBA58D1 -4DBA675D8C8A64424D12E566B6D1B4931C94611C9719E9FF93EBF999E31EF333B -C9A77E87797E2F9F79E6ADE92293A90341DD593D561C3F0AB3DB1F29687F916CA -83E89483152E2404FF936582205684271542CC1E239F7151AFE928E0460A9C6BD -0B67DE928E0560B5CEFDD98A7B462A02B07EED2D492C185873D76FDDF09CB9AA9 -22712945A5C3F54E09D380339CC0489040067E9351C918A2088FF2FC0E539D5D4 -8D74D29160A349345C0CAE8D2CC85FF14DB33398D7A9D8E435E4F0FC3B0915E42 -E04F5E6749AD81574FF6E2E1AD49E897AE6551D72A8E9336A972F952850603D7E -56819D4963D8CC897B1DB5E899AD702E74078D17A2F11D215FA46DF373FCFACD8 -DDAA73C9420879AB1B2A07A5B89430516B804993D2EC4376674530D01997D4177 -6FE6818DC8023BFD2B828E1E7E0BFC882D40DE6A8842A21DC4E1EF05DA875A4C2 -3300B3F12400AC0F42127D208FC0231443F28BE427F9C549A270000000049454E -44AE42608200"; end function getformbitmapinfo(); begin @@ -1514,26 +1446,4 @@ BFC6105000000097048597300000EC300000EC301C76FA864000000A849444154 0EF0594008906401B620220406970F686A01C850644C2C20CA024A008D2DF8FF1 F0006015AA04B38837B0000000049454E44AE42608200"; end -{ GetSaveFileBitmapInfo -//保存文件 -"0502000000060400000074797065000203000000696D670006040000006461746 -100022702000089504E470D0A1A0A0000000D4948445200000020000000200806 -000000737A7AF4000000017352474200AECE1CE90000000467414D410000B18F0 -BFC6105000000097048597300000EC300000EC301C76FA864000001BC49444154 -5847ED97CD2E035114C7EF4AB045B011ED0295D06D173E1296880891B0A88588F -00E3C000F6021165D88442CBD869022AA3A65CC0C8BAA36165A334D8FFEAF7B5B -7442FA35ABF927279973EE9C737E776E663287514196A191B1BE48515F1B457A9 -A1A6AE8A1AFCDD387728BD6C4D03C36DC657B73232D36D4C937CEB07304B49559 -B29E0DCA84CFB81F1F1B20538DD7C5500B3551DB7AD2490BCE70DFD85822261F3 -B16A022C0A49FFB952A6F59A4AFCE91693C8A08F15A1200C2CEE1477DEDC47001 -93AA15207B73C9F3D3C7211129078064DFBA03C8FCD4E1BE88380C90BD3AE7F9E -9A303117118209F79A758C0C38F42AA2280ECF505F7EFC77D2252BBE45B80DA52 -B26F19402E99A0486F3345BDAD646A0F225ABDF01A463C2DBC662E9514D13F002 -02D38CD63CA683FA5427BF4767A5295215719E9E3B5F09DF92ED9D716C0D4557E -8E72AD565302DE1FDF0548AED90240388AC4CE16A90B13A44E05AAB3426E62779 -B72AF2FA26A49FF02345A2E800BE002B8002E800BE00214017E0F264EA838980C -7610C3A00807E3921310682E7FF98CCD65629852312822E0A4DDF9BBF9864BE37 -96150C4AC6677733D0D3DB0F3AFA74DF409837977A59FB64D730000000049454E -44AE42608200"; -} end. \ No newline at end of file diff --git a/funcext/tvclib/utslmemo.tsf b/funcext/tvclib/utslmemo.tsf index 3c0e62e..3dda317 100644 --- a/funcext/tvclib/utslmemo.tsf +++ b/funcext/tvclib/utslmemo.tsf @@ -1008,7 +1008,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) // function Create(AOwner);override; begin inherited; - ftmemlockv := new tmemlockv(); + ftmemlockv := new tcountkernel(); FGutterColor := rgb(228,228,228); fcurrentLineColor := rgb(232,232,255); fselectbkcolor := rgb(192,192,192); @@ -1109,7 +1109,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) // end function MouseDown(o,e);override; //按下鼠标 begin - if ftmemlockv.haslocker then return ; + if ftmemlockv.locked then return ; inherited; if e.skip then return ; IncPaintLock(); @@ -1169,7 +1169,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) // end function MouseUp(o,e);override; begin - if ftmemlockv.haslocker then return ; + if ftmemlockv.locked then return ; inherited; if e.skip then return; UnClipCursor(); @@ -1196,7 +1196,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) // end function keypress(o,e);override; //输入字符 begin - if ftmemlockv.haslocker then return ; + if ftmemlockv.locked then return ; if e.skip then return; c := e.wparam; if ReadOnly then return; @@ -1264,7 +1264,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) // begin if fUndoList.CanUndo then begin - lk := new tmemlocker(ftmemlockv); + lk := new tcountlocker(ftmemlockv); UndoItem(); end end @@ -1272,7 +1272,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) // begin if fRedoList.CanUndo then begin - lk := new tmemlocker(ftmemlockv); + lk := new tcountlocker(ftmemlockv); RedoItem(); end end @@ -4117,33 +4117,6 @@ type TSynMemoNorm = class(TsynCustomMemo) // FSheetTabFlage; end Implementation -type tmemlockv = class() - haslocker; - function create(); - begin - haslocker := 0; - end - function add(); - begin - haslocker++; - end - function del(); - begin - haslocker--; - end -end -type tmemlocker = class() //锁定对象 - function create(v); - begin - flk := v; - flk.add(); - end - function destroy(); - begin - flk.del(); - end - flk; -end function CreateATslMemoUndoItem(AReason,AStart,AEnd,ChangeText,SelMode); begin return new TTslMemoUndoItem(AReason,AStart,AEnd,ChangeText,SelMode); diff --git a/funcext/tvclib/utslvclauxiliary.tsf b/funcext/tvclib/utslvclauxiliary.tsf index 6f556d2..3aec299 100644 --- a/funcext/tvclib/utslvclauxiliary.tsf +++ b/funcext/tvclib/utslvclauxiliary.tsf @@ -2117,6 +2117,39 @@ type TCanvsRgnClipAutoSave=class FCvsHandle; FW32api; end +type tcountkernel = class() //锁定对象 + function create(); + begin + Flocked := 0; + end + function add(); + begin + Flocked++; + end + function del(); + begin + Flocked--; + end + property locked read Flocked; + private + Flocked; +end +type tcountlocker = class() //锁 + function create(v); + begin + if v is class(tcountkernel) then + begin + fkernel := v; + fkernel.add(); + end + end + function destroy(); + begin + if fkernel then fkernel.del(); + end + private + fkernel; +end implementation function includestate(u,s); begin diff --git a/funcext/tvclib/utslvcltree.tsf b/funcext/tvclib/utslvcltree.tsf index 0b72802..bb5e901 100644 --- a/funcext/tvclib/utslvcltree.tsf +++ b/funcext/tvclib/utslvcltree.tsf @@ -1641,6 +1641,7 @@ type TcustomTreeCtl = class(TVirtualList) function Create(AOwner);override; begin inherited; + fcountlocker := new tcountkernel(); FSingleExpand := false; FCheckBox := false; FHasLine := false; @@ -1705,12 +1706,11 @@ type TcustomTreeCtl = class(TVirtualList) @explan(说明) 设置选中节点 %% @param(it)(TcustomTreeCtlNode) 节点 %% **} - if flockchangedcall then - begin - return ;// - end + if fcountlocker.locked then return ; + if it=FCurrentNode then return ; + lk := new tcountlocker(fcountlocker); if ifnil(it) or ( (it is class(TcustomTreeCtlNode))and (it.Owner=self)) then - begin + begin r := CallSelChange(it); if r then return; if it=RootNode then return ; @@ -1719,7 +1719,6 @@ type TcustomTreeCtl = class(TVirtualList) GoToNode(it); end if not r then InValidateRect(nil,false); - //CallSelChange(it); end end function GoToNode(it); @@ -1831,9 +1830,8 @@ type TcustomTreeCtl = class(TVirtualList) end function Recycling();override; begin - flockchangedcall := true; + lk := new tcountlocker(fcountlocker); if FRootItem then FRootItem.Recycling(); - flockchangedcall := false; FRootItem := nil; FCurrentNode := nil; FOnSelChanging := nil; @@ -1863,12 +1861,11 @@ type TcustomTreeCtl = class(TVirtualList) begin if FRootItem then begin - flockchangedcall := true; + lk := new tcountlocker(fcountlocker); FRootItem.DeleteChildren(); - flockchangedcall := false; end end - property CurrentNode read FCurrentNode; + property CurrentNode read FCurrentNode write setcurrentnode; //20221118 加上写 property CheckBox:bool read FCheckBox write SetCheckBox; property HasLine:bool read FHasLine write SetHasLine; property OnlyLeafNodeCheckMark read FOnlyLeafNodeCheckMark write FOnlyLeafNodeCheckMark; @@ -1891,12 +1888,16 @@ type TcustomTreeCtl = class(TVirtualList) return FRootItem; end private + fcountlocker; //锁定changed回调 fnodecreator; - flockchangedcall;// FOnlyLeafNodeCheckMark; FNodeHierarchyWidth; FMulSelected; FMulSelects; + function setcurrentnode(nd); + begin + setsel(nd); + end function setnodecreator(nd); begin if (fnodecreator<>nd) and (nd is class(TcustomTreeCtlNode)) then