界面库

整理代码
This commit is contained in:
JianjunLiu 2022-11-18 14:23:25 +08:00
parent c1a3ad1423
commit 8eeacc5a24
4 changed files with 54 additions and 137 deletions

View File

@ -1018,33 +1018,7 @@ E3F61E39BFFD2F1B893355116B4AC7C0595C10E4EDDFAF65F27E736863E1026CA
3DD02743C30169816DEC5AA981CECDDF8106A2A9205FB2E7D0157EAD834908275 3DD02743C30169816DEC5AA981CECDDF8106A2A9205FB2E7D0157EAD834908275
73EEFC3F77F73BD454240B40E02FB0A1F00C5814808A0372F0F377BFA126C1C0F 73EEFC3F77F73BD454240B40E02FB0A1F00C5814808A0372F0F377BFA126C1C0F
FFF00F43790467FB950B60000000049454E44AE42608200"; 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 end
function getbackwardbitmapinfo(); function getbackwardbitmapinfo();
begin begin
@ -1204,32 +1178,7 @@ B4F5651D24CDD9CD213598D5F4AE4BC9EEBB762D51949B0A4234D80C1B3BF6BD8
EE868D87933AAC54DE39AC98B352B68B9BF9CF68FC829B01DB048EB908D46B77D EE868D87933AAC54DE39AC98B352B68B9BF9CF68FC829B01DB048EB908D46B77D
6704184CCC164FF993FE57816CD86101E03733D36B2144974A6E0000000049454 6704184CCC164FF993FE57816CD86101E03733D36B2144974A6E0000000049454
E44AE42608200"; 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 end
function gettslcodeformatbitmapinfo(); function gettslcodeformatbitmapinfo();
begin begin
@ -1252,23 +1201,6 @@ E0B401814C1B0603A7FF7FBFF7FC0B0564D43049B7CD2CDFF39339E814B509818
0CC3005E0B9071E9BC17E01C8A4D0E1B8601A22D2015C300FD2C005512D814928 0CC3005E0B9071E9BC17E01C8A4D0E1B8601A22D2015C300FD2C005512D814928
315536E414D45B2005465820A326C1A48C1A0D404320B06E016D00AD0D882FFFF 315536E414D45B2005465820A326C1A48C1A0D404320B06E016D00AD0D882FFFF
01032FD2B573B4A8F80000000049454E44AE42608200"; 01032FD2B573B4A8F80000000049454E44AE42608200";
return "0502000000060400000074797065000203000000696D670006040000006461746
10002E601000089504E470D0A1A0A0000000D4948445200000018000000180806
000000E0773DF8000000017352474200AECE1CE90000000467414D410000B18F0
BFC6105000000097048597300000EC300000EC301C76FA8640000017B49444154
484BCD96CD2B04611CC7FD390E8E5C1D957273578E0E2E4AED897FC045EBA58D1
4DBA675D8C8A64424D12E566B6D1B4931C94611C9719E9FF93EBF999E31EF333B
C9A77E87797E2F9F79E6ADE92293A90341DD593D561C3F0AB3DB1F29687F916CA
83E89483152E2404FF936582205684271542CC1E239F7151AFE928E0460A9C6BD
0B67DE928E0560B5CEFDD98A7B462A02B07EED2D492C185873D76FDDF09CB9AA9
22712945A5C3F54E09D380339CC0489040067E9351C918A2088FF2FC0E539D5D4
8D74D29160A349345C0CAE8D2CC85FF14DB33398D7A9D8E435E4F0FC3B0915E42
E04F5E6749AD81574FF6E2E1AD49E897AE6551D72A8E9336A972F952850603D7E
56819D4963D8CC897B1DB5E899AD702E74078D17A2F11D215FA46DF373FCFACD8
DDAA73C9420879AB1B2A07A5B89430516B804993D2EC4376674530D01997D4177
6FE6818DC8023BFD2B828E1E7E0BFC882D40DE6A8842A21DC4E1EF05DA875A4C2
3300B3F12400AC0F42127D208FC0231443F28BE427F9C549A270000000049454E
44AE42608200";
end end
function getformbitmapinfo(); function getformbitmapinfo();
begin begin
@ -1514,26 +1446,4 @@ BFC6105000000097048597300000EC300000EC301C76FA864000000A849444154
0EF0594008906401B620220406970F686A01C850644C2C20CA024A008D2DF8FF1 0EF0594008906401B620220406970F686A01C850644C2C20CA024A008D2DF8FF1
F0006015AA04B38837B0000000049454E44AE42608200"; F0006015AA04B38837B0000000049454E44AE42608200";
end end
{ GetSaveFileBitmapInfo
//±£´æÎļþ
"0502000000060400000074797065000203000000696D670006040000006461746
100022702000089504E470D0A1A0A0000000D4948445200000020000000200806
000000737A7AF4000000017352474200AECE1CE90000000467414D410000B18F0
BFC6105000000097048597300000EC300000EC301C76FA864000001BC49444154
5847ED97CD2E035114C7EF4AB045B011ED0295D06D173E1296880891B0A88588F
00E3C000F6021165D88442CBD869022AA3A65CC0C8BAA36165A334D8FFEAF7B5B
7442FA35ABF927279973EE9C737E776E663287514196A191B1BE48515F1B457A9
A1A6AE8A1AFCDD387728BD6C4D03C36DC657B73232D36D4C937CEB07304B49559
B29E0DCA84CFB81F1F1B20538DD7C5500B3551DB7AD2490BCE70DFD85822261F3
B16A022C0A49FFB952A6F59A4AFCE91693C8A08F15A1200C2CEE1477DEDC47001
93AA15207B73C9F3D3C7211129078064DFBA03C8FCD4E1BE88380C90BD3AE7F9E
9A303117118209F79A758C0C38F42AA2280ECF505F7EFC77D2252BBE45B80DA52
B26F19402E99A0486F3345BDAD646A0F225ABDF01A463C2DBC662E9514D13F002
02D38CD63CA683FA5427BF4767A5295215719E9E3B5F09DF92ED9D716C0D4557E
8E72AD565302DE1FDF0548AED90240388AC4CE16A90B13A44E05AAB3426E62779
B72AF2FA26A49FF02345A2E800BE002B8002E800BE00214017E0F264EA838980C
7610C3A00807E3921310682E7FF98CCD65629852312822E0A4DDF9BBF9864BE37
96150C4AC6677733D0D3DB0F3AFA74DF409837977A59FB64D730000000049454E
44AE42608200";
}
end. end.

View File

@ -1008,7 +1008,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) //
function Create(AOwner);override; function Create(AOwner);override;
begin begin
inherited; inherited;
ftmemlockv := new tmemlockv(); ftmemlockv := new tcountkernel();
FGutterColor := rgb(228,228,228); FGutterColor := rgb(228,228,228);
fcurrentLineColor := rgb(232,232,255); fcurrentLineColor := rgb(232,232,255);
fselectbkcolor := rgb(192,192,192); fselectbkcolor := rgb(192,192,192);
@ -1109,7 +1109,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) //
end end
function MouseDown(o,e);override; //°´ÏÂÊó±ê function MouseDown(o,e);override; //°´ÏÂÊó±ê
begin begin
if ftmemlockv.haslocker then return ; if ftmemlockv.locked then return ;
inherited; inherited;
if e.skip then return ; if e.skip then return ;
IncPaintLock(); IncPaintLock();
@ -1169,7 +1169,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) //
end end
function MouseUp(o,e);override; function MouseUp(o,e);override;
begin begin
if ftmemlockv.haslocker then return ; if ftmemlockv.locked then return ;
inherited; inherited;
if e.skip then return; if e.skip then return;
UnClipCursor(); UnClipCursor();
@ -1196,7 +1196,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) //
end end
function keypress(o,e);override; //ÊäÈë×Ö·û function keypress(o,e);override; //ÊäÈë×Ö·û
begin begin
if ftmemlockv.haslocker then return ; if ftmemlockv.locked then return ;
if e.skip then return; if e.skip then return;
c := e.wparam; c := e.wparam;
if ReadOnly then return; if ReadOnly then return;
@ -1264,7 +1264,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) //
begin begin
if fUndoList.CanUndo then if fUndoList.CanUndo then
begin begin
lk := new tmemlocker(ftmemlockv); lk := new tcountlocker(ftmemlockv);
UndoItem(); UndoItem();
end end
end end
@ -1272,7 +1272,7 @@ type TCustomMemo = class(TCustomScrollControl,TCustomMemoCmd) //
begin begin
if fRedoList.CanUndo then if fRedoList.CanUndo then
begin begin
lk := new tmemlocker(ftmemlockv); lk := new tcountlocker(ftmemlockv);
RedoItem(); RedoItem();
end end
end end
@ -4117,33 +4117,6 @@ type TSynMemoNorm = class(TsynCustomMemo) //
FSheetTabFlage; FSheetTabFlage;
end end
Implementation 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); function CreateATslMemoUndoItem(AReason,AStart,AEnd,ChangeText,SelMode);
begin begin
return new TTslMemoUndoItem(AReason,AStart,AEnd,ChangeText,SelMode); return new TTslMemoUndoItem(AReason,AStart,AEnd,ChangeText,SelMode);

View File

@ -2117,6 +2117,39 @@ type TCanvsRgnClipAutoSave=class
FCvsHandle; FCvsHandle;
FW32api; FW32api;
end 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 implementation
function includestate(u,s); function includestate(u,s);
begin begin

View File

@ -1641,6 +1641,7 @@ type TcustomTreeCtl = class(TVirtualList)
function Create(AOwner);override; function Create(AOwner);override;
begin begin
inherited; inherited;
fcountlocker := new tcountkernel();
FSingleExpand := false; FSingleExpand := false;
FCheckBox := false; FCheckBox := false;
FHasLine := false; FHasLine := false;
@ -1705,12 +1706,11 @@ type TcustomTreeCtl = class(TVirtualList)
@explan(˵Ã÷) ÉèÖÃÑ¡Öнڵã %% @explan(˵Ã÷) ÉèÖÃÑ¡Öнڵã %%
@param(it)(TcustomTreeCtlNode) ½Úµã %% @param(it)(TcustomTreeCtlNode) ½Úµã %%
**} **}
if flockchangedcall then if fcountlocker.locked then return ;
begin if it=FCurrentNode then return ;
return ;// lk := new tcountlocker(fcountlocker);
end
if ifnil(it) or ( (it is class(TcustomTreeCtlNode))and (it.Owner=self)) then if ifnil(it) or ( (it is class(TcustomTreeCtlNode))and (it.Owner=self)) then
begin begin
r := CallSelChange(it); r := CallSelChange(it);
if r then return; if r then return;
if it=RootNode then return ; if it=RootNode then return ;
@ -1719,7 +1719,6 @@ type TcustomTreeCtl = class(TVirtualList)
GoToNode(it); GoToNode(it);
end end
if not r then InValidateRect(nil,false); if not r then InValidateRect(nil,false);
//CallSelChange(it);
end end
end end
function GoToNode(it); function GoToNode(it);
@ -1831,9 +1830,8 @@ type TcustomTreeCtl = class(TVirtualList)
end end
function Recycling();override; function Recycling();override;
begin begin
flockchangedcall := true; lk := new tcountlocker(fcountlocker);
if FRootItem then FRootItem.Recycling(); if FRootItem then FRootItem.Recycling();
flockchangedcall := false;
FRootItem := nil; FRootItem := nil;
FCurrentNode := nil; FCurrentNode := nil;
FOnSelChanging := nil; FOnSelChanging := nil;
@ -1863,12 +1861,11 @@ type TcustomTreeCtl = class(TVirtualList)
begin begin
if FRootItem then if FRootItem then
begin begin
flockchangedcall := true; lk := new tcountlocker(fcountlocker);
FRootItem.DeleteChildren(); FRootItem.DeleteChildren();
flockchangedcall := false;
end end
end end
property CurrentNode read FCurrentNode; property CurrentNode read FCurrentNode write setcurrentnode; //20221118 加上写
property CheckBox:bool read FCheckBox write SetCheckBox; property CheckBox:bool read FCheckBox write SetCheckBox;
property HasLine:bool read FHasLine write SetHasLine; property HasLine:bool read FHasLine write SetHasLine;
property OnlyLeafNodeCheckMark read FOnlyLeafNodeCheckMark write FOnlyLeafNodeCheckMark; property OnlyLeafNodeCheckMark read FOnlyLeafNodeCheckMark write FOnlyLeafNodeCheckMark;
@ -1891,12 +1888,16 @@ type TcustomTreeCtl = class(TVirtualList)
return FRootItem; return FRootItem;
end end
private private
fcountlocker; //锁定changed回调
fnodecreator; fnodecreator;
flockchangedcall;//
FOnlyLeafNodeCheckMark; FOnlyLeafNodeCheckMark;
FNodeHierarchyWidth; FNodeHierarchyWidth;
FMulSelected; FMulSelected;
FMulSelects; FMulSelects;
function setcurrentnode(nd);
begin
setsel(nd);
end
function setnodecreator(nd); function setnodecreator(nd);
begin begin
if (fnodecreator<>nd) and (nd is class(TcustomTreeCtlNode)) then if (fnodecreator<>nd) and (nd is class(TcustomTreeCtlNode)) then