编辑器

上传
This commit is contained in:
JianjunLiu
2022-04-20 14:33:56 +08:00
commit eb601195fe
286 changed files with 93144 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
array(
"name":"e_listbox",
"version":"1.2.0",
"dir":(
),
"files":(
"e_listboxmain":(
"name":"e_listboxmain",
"type":"form"
),
"e_listbox":(
"name":"e_listbox",
"type":"tsl"
)
),
"mainform":"e_listboxmain",
"time":"2021-02-03 11:10:32"
)
+6
View File
@@ -0,0 +1,6 @@
//工程E_ListBox界面库主程序
uses tslvcl; //引入界面库
app := InitializeApplication(); //获得界面管理器
app.CreateForm(class(E_ListBoxmain),fm); //构造主窗口
fm.show(); //显示主窗口
app.run(); //开始消息循环
@@ -0,0 +1,94 @@
type E_ListBoxmain=class(tdcreateform)
uses tslvcl;
listbox1:tlistbox;
btn1:tbtn;
btn2:tbtn;
btn3:tbtn;
btn4:tbtn;
btn5:tbtn;
btn6:tbtn;
function Create(AOwner);override; //构造
begin
inherited;
end
function btn6_clk(o;e);virtual; //选择当前选中项的后一项
begin
if listbox1.Multisel=0 then
begin
idx := listbox1.getCurrentSelection();
nidx := (idx+1+listbox1.ItemCount) mod listbox1.ItemCount;
listbox1.setCurrentSelection(nidx);
end
end
function btn5_clk(o;e);virtual; //在选中项前插入
begin
listbox1.insertItem(datetimetostr(now()),listbox1.getCurrentSelection());
end
function btn4_clk(o;e);virtual; //在最后加入
begin
listbox1.appendItem(datetimetostr(now()));
end
function btn3_clk(o;e);virtual; //多选单选设置
begin
if o.caption="多选/(单选)" then
begin
listbox1.Multisel := 1;
o.caption :="(多选)/单选";
end else
begin
listbox1.Multisel := 0;
o.caption :="多选/(单选)"
end
end
function btn2_clk(o;e);virtual; //删除选中
begin
listbox1.DeleteSelectedItems();
end
function btn1_clk(o;e);virtual; //初始化数据
begin
InitListData();
end
function InitListData();
begin
listbox1.Items := array(
"龙岗区",
"盐田区",
"坪山区",
"大鹏新区",
"深汕特别合作区",
"宝安区",
"光明区",
"南山区",
"福田",
"南山"
);
end
function e_listboxmain1_close(o;e);virtual;
begin
{**
@explan(说明) 主窗口关闭回调 %%
@param(e)(tuievent) 消息对象 %%
@param(o)(ttimer) 当前主窗口 %%
**}
if MessageBoxA('是否关闭当前窗口','关闭',MB_YESNO,o)<>IDYES then e.skip := true;
end
function DoControlAlign();override;//对齐子控件
begin
//当窗口大小改变时,该函数会被调用,
//可以通过 clientrect 获取客户区大小,设置子控件的位置以及大小
//如果自己处理了子控件的对齐,就可以去掉 inherited
inherited;
end
function Recycling();override; //回收变量
begin
inherited;
ci := self.classinfo(); //将成员变量赋值为nil避免循环引用
for i,v in ci["members"] do
begin
invoke(self,v["name"],nil);
end
end
end
@@ -0,0 +1,53 @@
object e_listboxmain1:e_listboxmain
caption="ListBox 范例"
height=585
left=374
onclose=e_listboxmain1_close
top=189
width=559
object listbox1:tlistbox
caption="listbox1"
height=526
left=6
top=12
width=400
end
object btn1:tbtn
caption="设置初始值"
height=31
left=416
onclick=btn1_clk
top=34
width=94
end
object btn2:tbtn
caption="删除选择"
left=419
onclick=btn2_clk
top=83
end
object btn3:tbtn
caption="多选/(单选)"
left=419
onclick=btn3_clk
top=134
end
object btn4:tbtn
caption="追加一项"
left=419
onclick=btn4_clk
top=187
end
object btn5:tbtn
caption="插入"
left=419
onclick=btn5_clk
top=238
end
object btn6:tbtn
caption="选择后一项"
left=420
onclick=btn6_clk
top=289
end
end
+18
View File
@@ -0,0 +1,18 @@
array(
"name":"e_listview",
"version":"1.2.0",
"dir":(
),
"files":(
"e_listviewmain":(
"name":"e_listviewmain",
"type":"form"
),
"e_listview":(
"name":"e_listview",
"type":"tsl"
)
),
"mainform":"e_listviewmain",
"time":"2021-02-09 16:30:48"
)
@@ -0,0 +1,6 @@
//工程E_Listview界面库主程序
uses tslvcl; //引入界面库
app := InitializeApplication(); //获得界面管理器
app.CreateForm(class(E_Listviewmain),fm); //构造主窗口
fm.show(); //显示主窗口
app.run(); //开始消息循环
@@ -0,0 +1,105 @@
type E_Listviewmain=class(tdcreateform)
uses tslvcl;
listview1:tlistview;
btn1:tbtn;
btn2:tbtn;
btn3:tbtn;
btn4:tbtn;
btn5:tbtn;
btn6:tbtn;
btn7:tbtn;
btn8:tbtn;
function Create(AOwner);override; //构造
begin
inherited;
end
function btn8_clk(o;e);virtual;
begin
Messageboxa(tostn(listview1.SelectedValue),"选中数据",0,self);
end
function btn7_clk(o;e);virtual;
begin
Messageboxa(tostn(listview1.ListValues),"数据",0,self);
end
function btn6_clk(o;e);virtual; //插入
begin
listview1.InsertItem(array(0,datetimetostr(now())),listview1.SelectedId);
ModifyIndex();
end
function btn4_clk(o;e);virtual; //清空所有
begin
listview1.DeleteAllColumns();
end
function btn3_clk(o;e);virtual; //删除数据项
begin
listview1.DeleteAllItems();
end
function btn2_clk(o;e);virtual; //删除选中
begin
listview1.deleteselect();
ModifyIndex();
end
function btn1_clk(o;e);virtual; //追加一项
begin
listview1.appendItem(array(listview1.ItemCount+1,datetimetostr(now())));
end
function btn5_clk(o;e);virtual; //初始数据
begin
listview1.Columns := array(("text":"id"),("text":"value","width":260));
listview1.DeleteAllItems();
d := array((1,"福田"),
(2,"南山"),
(3,"宝安"),
(4,"龙岗"),
(5,"罗湖"),
(6,"盐田")
);
listview1.Appenditems(d);
end
function e_listviewmain1_close(o;e);virtual;
begin
{**
@explan(说明) 主窗口关闭回调 %%
@param(e)(tuievent) 消息对象 %%
@param(o)(ttimer) 当前主窗口 %%
**}
if MessageBoxA('是否关闭当前窗口','关闭',MB_YESNO,o)<>IDYES then e.skip := true;
end
function DoControlAlign();override;//对齐子控件
begin
//当窗口大小改变时,该函数会被调用,
//可以通过 clientrect 获取客户区大小,设置子控件的位置以及大小
//如果自己处理了子控件的对齐,就可以去掉 inherited
inherited;
end
function Recycling();override; //回收变量
begin
inherited;
ci := self.classinfo(); //将成员变量赋值为nil避免循环引用
for i,v in ci["members"] do
begin
invoke(self,v["name"],nil);
end
end
function ModifyIndex(); //修正序号
begin
for i := 0 to listview1.ItemCount-1 do
begin
listview1.SetSubItemByIndex(i,0,i+1);
end
end
end
@@ -0,0 +1,89 @@
object e_listviewmain1:e_listviewmain
caption="Listview范例"
height=608
left=434
minmaxbox=false
onclose=e_listviewmain1_close
top=248
width=728
wssizebox=false
object listview1:tlistview
columns= [<
width=80
text="id"
>
<
width=280
text="value"
>
]
height=532
left=17
top=17
width=384
end
object btn1:tbtn
caption="追加行"
height=31
left=432
onclick=btn1_clk
top=168
width=233
end
object btn2:tbtn
caption="删除选中行"
height=31
left=431
onclick=btn2_clk
top=221
width=233
end
object btn3:tbtn
caption="清空数据"
height=31
left=432
onclick=btn3_clk
top=275
width=232
end
object btn4:tbtn
caption="清空数据和列名"
height=31
left=431
onclick=btn4_clk
top=330
width=233
end
object btn5:tbtn
caption="初始化数据"
height=31
left=431
onclick=btn5_clk
top=73
width=229
end
object btn6:tbtn
caption="在选中位置插入"
height=31
left=432
onclick=btn6_clk
top=125
width=226
end
object btn7:tbtn
caption="获得数据"
height=31
left=429
onclick=btn7_clk
top=381
width=235
end
object btn8:tbtn
caption="获得选中数据"
height=31
left=431
onclick=btn8_clk
top=428
width=232
end
end
+18
View File
@@ -0,0 +1,18 @@
array(
"name":"e_treeview",
"version":"1.2.0",
"dir":(
),
"files":(
"e_treeviewmain":(
"name":"e_treeviewmain",
"type":"form"
),
"e_treeview":(
"name":"e_treeview",
"type":"tsl"
)
),
"mainform":"e_treeviewmain",
"time":"2021-02-18 10:01:20"
)
@@ -0,0 +1,6 @@
//工程E_TreeView界面库主程序
uses tslvcl; //引入界面库
app := InitializeApplication(); //获得界面管理器
app.CreateForm(class(E_TreeViewmain),fm); //构造主窗口
fm.show(); //显示主窗口
app.run(); //开始消息循环
@@ -0,0 +1,119 @@
type E_TreeViewmain=class(tdcreateform)
uses tslvcl;
treeview1:ttreeview;
btn1:tbtn;
btn2:tbtn;
btn3:tbtn;
btn4:tbtn;
btn5:tbtn;
btn6:tbtn;
btn7:tbtn;
btn8:tbtn;
function Create(AOwner);override; //构造
begin
inherited;
end
function btn8_clk(o;e);virtual;
begin
treeview1.HasLine := not treeview1.HasLine;
end
function e_treeviewmain1_close(o;e);virtual;
begin
{**
@explan(说明) 主窗口关闭回调 %%
@param(e)(tuievent) 消息对象 %%
@param(o)(ttimer) 当前主窗口 %%
**}
if MessageBoxA('是否关闭当前窗口','关闭',MB_YESNO,o)<>IDYES then e.skip := true;
end
function btn7_clk(o;e);virtual;
begin
Messageboxa(tostn(treeview1.RootNode.toarray()),"数据",0,self);
end
function btn6_clk(o;e);virtual; //修改文本
begin
nd := treeview1.CurrentNode;
if not nd then return;
r := nd.caption;
wd := new TInPutQuerys(self);
wd.parent := self;
d := array(("Name":"b","value":r,"caption":"标题名:"));
wd.SetData(d);
if wd.ShowDlg(r1,"输入标题") then
begin
nd.caption := r1["b"];
treeview1.InvalidateItem(nd);
end
end
function btn4_clk(o;e);virtual;//checkbox
begin
treeview1.checkbox := not treeview1.checkbox;
treeview1.InvalidateRect(nil,false);
end
function btn5_clk(o;e);virtual; //删除选择
begin
nd := treeview1.CurrentNode;
if nd then
begin
nd.Recycling();
end
end
function btn3_clk(o;e);virtual;//插入子节点
begin
nd := treeview1.CurrentNode;
if nd then
begin
nnd := treeview1.CreateTreeNode();
nnd.caption := datetimetostr(now());
nnd.parent := nd;
treeview1.SetSel(nnd);
end
end
function btn2_clk(o;e);virtual; //初始化
begin
rnd := treeview1.RootNode;
ndsz := treeview1.CreateTreeNode();
ndsz.caption := "深圳";
ndsz.parent := rnd;
ndgz := treeview1.CreateTreeNode();
ndgz.caption := "广州";
ndgz.parent := rnd;
for i,v in array("福田","罗湖","宝安","龙岗","盐田") do
begin
nd := treeview1.CreateTreeNode();
nd.caption := v;
nd.parent := ndsz;
end
for i,v in array("白云","花都","天河") do
begin
nd := treeview1.CreateTreeNode();
nd.caption := v;
nd.parent := ndgz;
end
end
function btn1_clk(o;e);virtual; //清空
begin
treeview1.RootNode.RecyclingChildren();
end
function DoControlAlign();override;//对齐子控件
begin
//当窗口大小改变时,该函数会被调用,
//可以通过 clientrect 获取客户区大小,设置子控件的位置以及大小
//如果自己处理了子控件的对齐,就可以去掉 inherited
inherited;
end
function Recycling();override; //回收变量
begin
inherited;
ci := self.classinfo(); //将成员变量赋值为nil避免循环引用
for i,v in ci["members"] do
begin
invoke(self,v["name"],nil);
end
end
end
@@ -0,0 +1,81 @@
object e_treeviewmain1:e_treeviewmain
caption="树控件范例"
height=520.0
left=483
minmaxbox=false
onclose=e_treeviewmain1_close
top=258
width=632
wssizebox=false
object treeview1:ttreeview
caption="treeview1"
height=420
left=15
top=26
width=371
end
object btn1:tbtn
caption="清空树"
height=31
left=418
onclick=btn1_clk
top=412
width=153
end
object btn2:tbtn
caption="初始化数据"
height=31
left=418
onclick=btn2_clk
top=38
width=155
end
object btn3:tbtn
caption="插入子节点"
height=31
left=420
onclick=btn3_clk
top=91
width=152
end
object btn4:tbtn
caption="checkbox"
height=31
left=418
onclick=btn4_clk
top=204
width=152
end
object btn5:tbtn
caption="删除选择节点"
height=31
left=420
onclick=btn5_clk
top=148
width=150
end
object btn6:tbtn
caption="修改选中节点文本"
height=31
left=420
onclick=btn6_clk
top=308
width=151
end
object btn7:tbtn
caption="获得数据"
height=31
left=419
onclick=btn7_clk
top=360
width=151
end
object btn8:tbtn
caption="hasline"
height=31
left=419
onclick=btn8_clk
top=259
width=150
end
end
+1
View File
@@ -0,0 +1 @@
//tsl script :atsl
+27
View File
@@ -0,0 +1,27 @@
array(
"name":"e_action",
"version":"1.1.2",
"dir":(
),
"files":(
"e_actionmain":(
"name":"e_actionmain",
"type":"form",
"dir":""
),
"e_action":(
"name":"e_action",
"type":"tsl",
"dir":""
),
"atsl":(
"name":"atsl",
"type":"tsl",
"dir":""
)
),
"mainform":"e_actionmain",
"entryscript":"e_action",
"time":"2022-04-08 14:37:00",
"commandline":"\"$(TSL_EXE)\" \"$(FULL_CURRENT_PATH)\" -libpath \"$(SEARCH_PATH)\\;\""
)
+6
View File
@@ -0,0 +1,6 @@
//工程E_Action界面库主程序
uses tslvcl; //引入界面库
app := InitializeApplication(); //获得界面管理器
app.CreateForm(class(E_Actionmain),fm); //构造主窗口
fm.show(); //显示主窗口
app.run(); //开始消息循环
+53
View File
@@ -0,0 +1,53 @@
type E_Actionmain=class(tdcreateform)
uses tslvcl;
btn1:tbtn;
actionlist1:tactionlist;
action1:taction;
btn2:tbtn;
btn3:tbtn;
btn4:tbtn;
btn5:tbtn;
popupmenu1:tpopupmenu;
menu1:tmenu;
btn6:tbtn;
function Create(AOwner);override; //构造
begin
inherited;
end
function btn5_clk(o;e);virtual; //修改caption
begin
action1.caption := datetimetostr(now());
end
function btn6_clk(o;e);virtual; //修改enabled状态
begin
action1.Enabled := not action1.Enabled;
end
function e_actionmain1_close(o;e);virtual;
begin
{**
@explan(说明) 主窗口关闭回调 %%
@param(e)(tuievent) 消息对象 %%
@param(o)(ttimer) 当前主窗口 %%
**}
if MessageBoxA('是否关闭当前窗口','关闭',MB_YESNO,o)<>IDYES then e.skip := true;
end
function DoControlAlign();override;//对齐子控件
begin
//当窗口大小改变时,该函数会被调用,
//可以通过 clientrect 获取客户区大小,设置子控件的位置以及大小
//如果自己处理了子控件的对齐,就可以去掉 inherited
inherited;
end
function Recycling();override; //回收变量
begin
inherited;
ci := self.classinfo(); //将成员变量赋值为nil避免循环引用
for i,v in ci["members"] do
begin
invoke(self,v["name"],nil);
end
end
end
@@ -0,0 +1,76 @@
object e_actionmain1:e_actionmain
caption="action 范例"
height=520.0
left=451
onclose=e_actionmain1_close
popupmenu=popupmenu1
top=256
width=510
object btn1:tbtn
action=action1
caption="btn1"
height=31
left=25
onclick=btn1_clk
top=67
width=163
end
object actionlist1:tactionlist
left=225
top=189
object action1:taction
caption="绑定action的控件"
enabled=true
end
end
object btn2:tbtn
action=action1
caption="btn2"
height=31
left=25
onclick=btn2_clk
top=126
width=163
end
object btn3:tbtn
action=action1
caption="btn3"
height=31
left=25
top=182
width=162
end
object btn4:tbtn
action=action1
caption="btn4"
height=31
left=27
top=241
width=161
end
object btn5:tbtn
caption="修改action的caption"
height=31
left=280
onclick=btn5_clk
top=98
width=140
end
object popupmenu1:tpopupmenu
left=162
top=329
caption="popupmenu1"
object menu1:tmenu
action=action1
caption="menu1"
end
end
object btn6:tbtn
caption="修改action enabed"
height=31
left=281
onclick=btn6_clk
top=248
width=143
end
end
+18
View File
@@ -0,0 +1,18 @@
array(
"name":"e_menu",
"version":"1.2.0",
"dir":(
),
"files":(
"e_menumain":(
"name":"e_menumain",
"type":"form"
),
"e_menu":(
"name":"e_menu",
"type":"tsl"
)
),
"mainform":"e_menumain",
"time":"2021-02-18 11:07:09"
)
+6
View File
@@ -0,0 +1,6 @@
//工程E_Menu界面库主程序
uses tslvcl; //引入界面库
app := InitializeApplication(); //获得界面管理器
app.CreateForm(class(E_Menumain),fm); //构造主窗口
fm.show(); //显示主窗口
app.run(); //开始消息循环
+45
View File
@@ -0,0 +1,45 @@
type E_Menumain=class(tdcreateform)
uses tslvcl;
mainmenu1:tmainmenu;
menu1:tmenu;
menu2:tmenu;
menu3:tmenu;
menu4:tmenu;
menu5:tmenu;
popupmenu1:tpopupmenu;
menu6:tmenu;
menu7:tmenu;
function Create(AOwner);override; //构造
begin
inherited;
end
function Menuclick(o,e);//菜单点击
begin
messageboxa(format("菜单项:%s 被点击",o.caption),"菜单点击:",0,self);
end
function e_menumain1_close(o;e);virtual;
begin
{**
@explan(说明) 主窗口关闭回调 %%
@param(e)(tuievent) 消息对象 %%
@param(o)(ttimer) 当前主窗口 %%
**}
if MessageBoxA('是否关闭当前窗口','关闭',MB_YESNO,o)<>IDYES then e.skip := true;
end
function DoControlAlign();override;//对齐子控件
begin
//当窗口大小改变时,该函数会被调用,
//可以通过 clientrect 获取客户区大小,设置子控件的位置以及大小
//如果自己处理了子控件的对齐,就可以去掉 inherited
inherited;
end
function Recycling();override; //回收变量
begin
inherited;
ci := self.classinfo(); //将成员变量赋值为nil避免循环引用
for i,v in ci["members"] do
begin
invoke(self,v["name"],nil);
end
end
end
@@ -0,0 +1,101 @@
object e_menumain1:e_menumain
caption="²Ëµ¥·¶Àý"
height=392
left=488
mainmenu=mainmenu1
onclose=e_menumain1_close
popupmenu=popupmenu1
top=220
width=375
object mainmenu1:tmainmenu
left=58
top=73
height=30
width=30
object menu1:tmenu
caption="menu1"
object menu3:tmenu
caption="²Ëµ¥3"
onclick=menuclick
end
object menu4:tmenu
caption="menu4"
object menu5:tmenu
caption="menu5"
onclick=menuclick
end
end
end
object menu2:tmenu
caption="menu2"
onclick=menuclick
end
end
object popupmenu1:tpopupmenu
left=172
top=98
height=30
width=30
caption="popupmenu1"
object menu6:tmenu
bitmap={ 0502000000060400000074797065000203000000696D670006040000006461746
100020103000089504E470D0A1A0A0000000D4948445200000020000000200806
000000737A7AF4000000017352474200AECE1CE90000000467414D410000B18F0
BFC6105000000097048597300000EC300000EC301C76FA8640000029649444154
5847ED964B68135114865D894BC1951BE946A42B752356505C54042D882E846A5
BA13B6B151491D295B4882B2D08E293D6422D55918AF5416AC5A22008BAD085D4
5A6D9A986812E3249989B1769263FEDB7BAF379957122DA5900F0EC99C398F7FE
69E99B9CB689159FA02326F5FD3B7CE760AECAF67BFC6D8437EA634FE49803E3A
4293B5AB6862CDF2020B1F3BC423BCF114103BDF455AFF2532E331EEF9CBCCBEE
DACE174FD061687C64284F1CCC7A3DC2910F0BDA79B12B76EF0A379444158A071
27690357C94CFC60E770DBD17C76F23D3B065F5AF7B2D868F729EE71470A885FB
F201B850E37CAA210E56FA893E784059A765162A897B27A8AC509D098D5686FE6
1E77A480ACA153B0A54136800895F4AB17143DDB49D33B36CA1866352B2898BFE
AE4DD01CAFD4C33C1F063494AC13203C6D347ECD6A65F8E738F15E3F918454E9F
A0CFDB6A0BC47C58B792426D0728393C48B95F191EED8EE7107A618CFBE86B471
B4D6DAA2910F371FD6A0A1F6FA5D4C81D22738E475B910252F786D8731CE93AC9
3DE5A3E7DF01688AE6AA18888348FDC903A25C8E47CF2305A80973A120F75A316
311FECF1DDD779FC2475BD8B2A8B5B16CEA7C48017883C52F9FCBDFD251EEB1F2
3BE867457035E5907A3C4CA12307D9C0223F71BB9F9F71980134FAB465ADE551C
260A20086B45250437D746D05884630153701D1331DB6F3632635CABC7BC38FAC
FC3701221E312AFEDD9B995F7D5BAA2CB80027BFA02AA02AA02A606909C8EA49B
9FF2B061B98E24D0CA848C0ECD4844CC477A152C4C70BE6F43AB6150066F66C65
89F12B3DDC533EC81502C446B6184701DACD6B32195F46AC7B39861C91EFF6F97
61400B0D6A248A5A6F55DE4D5EC711500B08ED840408C9D61176C67C829657E3C
052C348B2C80E80FBF5E212863E9B00A0000000049454E44AE42608200 }
caption="menu6"
onclick=menuclick
end
object menu7:tmenu
bitmap={ 0502000000060400000074797065000203000000696D670006040000006461746
100024503000089504E470D0A1A0A0000000D4948445200000020000000200806
000000737A7AF4000000017352474200AECE1CE90000000467414D410000B18F0
BFC6105000000097048597300000EC300000EC301C76FA864000002DA49444154
5847C597BD6A54411886BD066BADD45E11BC01116C6C142F402C2CAC44112C949
47A031606B7515288918022A8202EF107D42A0988C4D5603624EBAE68B2C6282A
9FFB8CE73D993D993973768DF8C040767EDF39F3CDFB4DB6D87F66200193CDAF7
6A6FEC1F6DF7C6FBBAFCDD9B6D1866DEF95BDD7E7ECE0AD79BBF0B46D77DF7DB1
C5D59FD9883449012BDF7FD995A94F6ED1AD97672B9791671DEBACA585940AB8F
8BC637B7A3BF527DE596BD8A189A69D7BDCB61BAF576C7CB66B23BD9D1FB9BD60
BB6A6FFBFAEE1B9BB3B157CBD96C61A2022EBDF8D837D9F9276D9BEE7CCB5AE3C
CF4FA9CAEB7FAC69E7CD8CA5A37121470F4CE423E78C7D586D5E757B396EAD466
965D7C681EE60CB141006A35E8C483A5AC76780EF78E46F371A445FA04705EEAC
CC014A71EB55C49C14662227201442C4143273E5D8A63F716F349F93B0547495F
829A9B2572015C1B4DC8F995E12FAE9212411CA92FD75A380118871A89E032428
BABA4447093E887A7082700F7D2245CA318FEE2136FBAC1BFCB44708DD50F5705
27000BA5122389515C1CF41BAA8AC0C8E883A58313808F53899B85082D0EAA135
544E0A2B4EB189C00920995586A11DF17FCC541F53EBE88900362E1B491CCC009
9063E1EB451045E7E2E2A0858A48446843E40FDAC8A4E004F02326A08C9880322
4405EE304B0432A438ACB1846808E8063072740B93E1684318611A02024F0C109
9041945DC310C308D0353C3BE95DC3974B6BF964654654645001BE1129DE9C003
830FEC70B5256EC33A8007D694AB3FBC3D5E50248106A4C2523A1FE55F0931189
4FE40248917AFF5549C7308800A56352BEFF58CD05008F054D5AE54142445352F
80F92A2D7F40980E3F7D77D7FB39F64A3539FB3DA75360800DD55CA663D4A635F
2A280050ABC194BF7996F35563440500E7A577A2CA20FF9810D4A197B04FA9002
062FDF7629582A770ADFDC7678CA4008171B05B2C141F279970C664529219F984
63C25507A1B2807F83D96FD95753C0FE2C3C9B0000000049454E44AE42608200 }
caption="menu7"
onclick=menuclick
end
end
end
+18
View File
@@ -0,0 +1,18 @@
array(
"name":"e_toolbar",
"version":"1.2.0",
"dir":(
),
"files":(
"e_toolbarmain":(
"name":"e_toolbarmain",
"type":"form"
),
"e_toolbar":(
"name":"e_toolbar",
"type":"tsl"
)
),
"mainform":"e_toolbarmain",
"time":"2021-02-18 10:41:29"
)
+6
View File
@@ -0,0 +1,6 @@
//工程E_Toolbar界面库主程序
uses tslvcl; //引入界面库
app := InitializeApplication(); //获得界面管理器
app.CreateForm(class(E_Toolbarmain),fm); //构造主窗口
fm.show(); //显示主窗口
app.run(); //开始消息循环
@@ -0,0 +1,43 @@
type E_Toolbarmain=class(tdcreateform)
uses tslvcl;
toolbar1:ttoolbar;
controlimagelist1:tcontrolimagelist;
toolbutton1:ttoolbutton;
toolbutton2:ttoolbutton;
toolbutton3:ttoolbutton;
toolbutton4:ttoolbutton;
toolbutton5:ttoolbutton;
function Create(AOwner);override; //构造
begin
inherited;
end
function ToolbarItemClick(o,e);//item 点击
begin
Messageboxa(format("按钮:%s 被点击",o.caption),"点击",0,self);
end
function e_toolbarmain1_close(o;e);virtual;
begin
{**
@explan(说明) 主窗口关闭回调 %%
@param(e)(tuievent) 消息对象 %%
@param(o)(ttimer) 当前主窗口 %%
**}
if MessageBoxA('是否关闭当前窗口','关闭',MB_YESNO,o)<>IDYES then e.skip := true;
end
function DoControlAlign();override;//对齐子控件
begin
//当窗口大小改变时,该函数会被调用,
//可以通过 clientrect 获取客户区大小,设置子控件的位置以及大小
//如果自己处理了子控件的对齐,就可以去掉 inherited
inherited;
end
function Recycling();override; //回收变量
begin
inherited;
ci := self.classinfo(); //将成员变量赋值为nil避免循环引用
for i,v in ci["members"] do
begin
invoke(self,v["name"],nil);
end
end
end
@@ -0,0 +1,168 @@
object e_toolbarmain1:e_toolbarmain
caption="묏야으렀절"
height=520.0
left=429
onclose=e_toolbarmain1_close
top=236
width=664
object toolbar1:ttoolbar
caption="toolbar1"
height=29
imagelist=controlimagelist1
width=648
object toolbutton1:ttoolbutton
caption="객큐1"
imageid=0
onclick=toolbaritemclick
end
object toolbutton2:ttoolbutton
caption="객큐2"
imageid=1
onclick=toolbaritemclick
end
object toolbutton3:ttoolbutton
caption="객큐3"
imageid=2
onclick=toolbaritemclick
end
object toolbutton4:ttoolbutton
caption="toolbutton4"
imageid=4
onclick=toolbaritemclick
end
object toolbutton5:ttoolbutton
caption="toolbutton5"
imageid=3
onclick=toolbaritemclick
end
end
object controlimagelist1:tcontrolimagelist
left=84
top=114
images={ 0502000000060400000074797065000204000000626D707300060500000069746
56D73000505000000000000000005020000000604000000747970650002030000
00696D670006040000006461746100029F02000089504E470D0A1A0A0000000D4
948445200000020000000200806000000737A7AF4000000017352474200AECE1C
E90000000467414D410000B18F0BFC6105000000097048597300000EC300000EC
301C76FA86400000234494441545847ED96CDCB69511487EF5F6BC25061A048C9
409181C840182829C554664AEFC04C0C0C64A0440626C8E0DC9E75D73E6DC7E1E
55EEE3BF1D41A9CB5D6DEFB77F6C7DAFB97F3C37C047C045C08C866B34E201078
DA686768341ABE39582C1693B8CD4B056CB75BDFB8D77ABD9EE4C34B9760381CC
A00D56A553D97CC663389472211F5BC588099C16EB7AB9E4BCEE7B3C483C1A07A
3C0268C83A91F4B7964C269DC3E1A03D5EB2DFEF25271C0EABC712C0BA783B7BD
6CAE5B233994CB4C76BD6EBB5E4C5E371F55802581782ACD3BB582C1632463A9D
568F2520140A49F0743AA9E7F54CA753192397CBA9C712108D4625B8DBEDD4F31
85F5F5FCE6834D2AFFB8CC76319A3542AA9C712904AA524B85C2ED5F318DFED7C
1B734C6BB59A7A2C01F97C5E82F736911FABD5CA4924120F89E8F7FB92D76AB5D
46309A8542A12644A6FC1F16293FA99116157392FE6A4D9425D01CD66538283C1
403DD79829FCCE10E4077F4E9C9930B802FCD479A1D613B78D7658A15090F6C56
251B3AF61EDC9E1470CAE00FE9C2033F12CF57A5DDAB28F8EC7A37AAF61F793C7
6930B802587B82EC8567E8743AD22E93C948A9BD07E79F5CEA81C115C0EE377FF
128F3F95CDA50FF379B8D7A6F4305249F8A68700570FE09520F9E816378EBF2F1
C21DC018DC0906570015902015F15D700B3286BD54AE00EE0082DC09EF8277006
3F02E30B802E09D37227DD2B7FD1A820B019C6B92DE69ED765B47FBC3850040C4
BFBE8AFC8C3E79B078B912F0BFF908F861018EF31BE3A64DABEA5772560000000
049454E44AE426082000001000000050200000006040000007479706500020300
0000696D67000604000000646174610002D303000089504E470D0A1A0A0000000
D49484452000000300000003008060000005702F987000000017352474200AECE
1CE90000000467414D410000B18F0BFC6105000000097048597300000EC300000
EC301C76FA86400000368494441546843ED98DB4B14511CC7FB837AEB35287A08
0A8A1E844088EA2108C948222822BAA0629682742122C9D0BC84B5A246E135EFB
AAEAB99AD46522A5B5E482C5371E7F66DCECE6FDCD9F1CCECCD7194F6035FD839
F33D737EDFD939672E7BB0CB4907709B74002EBF2781BA1380AF981A9CC39900A
3CF80B2BD9A825DD4E80CD60116C781F76781E6F3407B0ED07915E8BD050CE403
83F701FF03400E91D904EBA70718794C8D26E687D4639400DE42A03F0FE8BE017
45C01DAB281A6735ADBCA2C99ADB10E507B3852044FC38FC8C8C118C0CEC74E8E
F198668D9591D11AEB00BC031AB530A2F9E687B5B3CCC48A653207304BE75369F
431CD327A2D482E407D069954DE66F23D769A6ED6FA2E06F8FB753916C0B8BAD4
1CE47BEC345E499D553CC7F81E26C702B009AE136BAEF0642CCC5BC0F7303912C
0739C0CC4DF2030EB4D4C46D8366F1C266702A87FF95632DDC21F87C99100E5FB
B4FB81F9AC26A3892AE0F511FE384C8ECD81ED523A80DB4A07705BE900B1F4EA9
0F640C65B22EDE4BDCB3F9E598E07E8CB257312189F58ADE47880EEEB644E1061
75870460626F506CA04414EF2338F3C6E03F9FC44E2B1D201EB117733650228A6
70233316F0C520BD0758DCC49102B04BB57C4416A01D87B41B2D8050854904943
595A53975E99B6A249FD12B25B46F5CF2D66597D0FAADA0FCCB453012A7FD6211
67E4028A31CA153D5106BE8538E819D33891B4F024B5F69700DB1C2AF156F90DC
33457B35764600F6E992DD9D09A92100B1A43BFC5B2CEE8C0A209CA98132F92BB
C8FE17E005F110DA8A228109F0E6C142B95F9A02CAC40C8AE8B0A2116755207B7
034C54D3606AED3F9721DC6E8E2A9489FD1BF2F08F4DED3AEE04A83E0004B54B8
4C10A14B23C9B8AD425F74D43F28C6D6C4BE57EEAE95680858F34885AFCBB2F51
C572755ABDEE3FCF417CD803E9C510F5D4D8FE006F8ED200EA65E30B42BCD9145
E1EB9851B245CAA8732B3443D236C7F00C34B9058EA8570B911CAE22AC47B1DDC
C299C4DC56286B02F58AC6850077680035405EAB56A05A3C96D7C361CCC54B4FF
AC9CDC73A40DB457E01A9AA258B0600421722CBA3F4D20F796C0EA1CCCA485BED
2839ADB10EC0E0BD906F8508BD505D72D77708EA9C608F0D72C73772D9631FC06
1E4DE2948CF072116B443C8698090590531BF0D72609E1CB17135C056900EE036
BB3C00F00FB4FD2774447C293D0000000049454E44AE426082000002000000050
2000000060400000074797065000203000000696D670006040000006461746100
02DB02000089504E470D0A1A0A0000000D4948445200000020000000200806000
000737A7AF4000000017352474200AECE1CE90000000467414D410000B18F0BFC
6105000000097048597300000EC300000EC301C76FA8640000027049444154584
7D596CB6A2A411086CF0BBA72A3A851541414043722EE44111782BAF182260441
B7826F6188E015DCB81111172AC4B55087BFE89E8CE3CCD8E6C484F341914A55F
7F43F5D3DD5FEA15FE6FF13301C0EA95AAD92C7E32197CB45D1689452A914F5FB
7DDA6EB762943ACA0276BB1D65B35972381CB6562814E870388859B7511230994
C281C0EF3028944823A9D0EAD562B91253A1E8FD4EBF5C8EFF7F398582C46F3F9
5C64EDB92960B3D9F076E3C1E572993E3E3E44E61A942097CB69BBB15C2E45C69
A9B02506F3CAC56AB89C86DBADD2ECF29954A22628DAD80E974CA0F72BBDDBC13
AAA024B21CEFEFEF226A8EAD80F57A4DF1789CDFE85E702620A05EAFF3FFFBFD9
E4EA713FB7A940EE13D542A150A8542D46AB558402693E15D808F9731F2ED02DA
ED362F260DE583C137DB495301AFAFAF6C5F452FC2E974F25F7C41665C09188D4
6DA64F85F65301868CF49A7D3743E9F45E6922B01B27630F8FFC2DBDB1B6F3BBA
A8155702D0DBA500F88FE642C0783CE6859F9E9ED8E023F6482E04BCBCBCF0A2C
D66930D3E62F780CF0EF3A4A121E5F37991BDE64280BC707091C0E023760FFAC5
8D66862660369BF1A060302822C43E62C8A9625C0CDD54DE0DC56251443FD1043
C3F3F6B938D869C2A728E1E79A7F87C3E11F94413100804B4C946434E153947CF
4D018BC582074422110EEA410C398C51C12800259017936509E489470B3522DB2
AC6A820059899D9D7C002BC5E2F0F306BBDB235638C0AFA05AD4C0F0BC0AFDA46
A3C1013392C9247FDF2A982D02ACBE06ED107E17560280D961FC5101D805E4D01
D253F26006F2F4BA03F8C0F1360677ABE5D80F1329286BADBB6E2DFE2970510FD
05E1AD4F7F1B5448FE0000000049454E44AE42608200000300000005020000000
60400000074797065000203000000696D67000604000000646174610002F80200
0089504E470D0A1A0A0000000D4948445200000020000000200806000000737A7
AF4000000017352474200AECE1CE90000000467414D410000B18F0BFC61050000
00097048597300000EC300000EC301C76FA8640000028D494441545847C5973D6
814411480B7B25050045B259D8595A0A5550AB5B00A626163255A5A5B28B676E9
2C14091A8B84E01F88281844A208FE8128722268E7DE9D5E363197E4923CF79B9
BB7EEE6CE9DD9BDD3FD608ED937F3E6BD9B7DF3DE6C209EB456D665E2735BC69E
B464FFDDA6EC996AC8D61BA169F4919D989D9799AFCB12AD6E582D374E073EB43
A72F679243B26EB125CFF6EDA968950764FD5E5C0BDA669F491E9F8CEC9D0E8A0
EB22D781F3AF1765FBCDAEE1C38F7ECA85370B3217AEDAD15E5E353A72F9FD2F3
912CF45075DD6C8E3AF0E1C9F6D9945F6CE34E46AAD6DA5FEA0832E6B1C7AF0C3
4A7BE9EBC0C87457F14CBC8DF5F6BA9516075DFD23BB6E85569AA5C70126A2C07
60F8B934FE7CD9AFCB1CD641C60AB9888C2B0E10FB1363B9226718060E9376198
F04AB1910E4CE300C7858825680679E72E581B1BD8D2236A1CE0CCE259D1683FF
73232AD08D8C0163621206B91388EC667B7282C442B0A3985C446760D489D2C32
FE71C90EFB53D6818B6FBBF1466A0FC8DF3CD4A2353BEC4F5907C8A6E85157028
AC8B6B8A094A1AC0340EDC0764025EB97207C18C4010A18B603CAE9C1FB4D2B2E
C6200E5045B16D1CE0218F53CF22B34BD76AD940EDE70073988B4E1E89036C03D
B9187462DEDD2BB5416DBE400632A73D592E415100804848B2B9F9692C54FCFD9
24629F01993E33D74512847A0CB94CB8B8F36DD9242DE61F7BDCBD74A4FB8C31C
745E6186A22E226E3C38B7A47F6DD8E3DB7C6B52163CC07AD8C2611692AE61AE5
CB978535197DF86707E823F325938A119429468B9D0DF3DE69F47DE92946FC545
E8EA1D20B8952E9954CA9F452AA3011854AAEE58A2A123445AF6A800EBAAC51F8
C3442158885816F9EF9F660AC785335BC9C7699A7FF3792EF21B1F1CB3C87955C
3470000000049454E44AE42608200000400000005020000000604000000747970
65000203000000696D670006040000006461746100028E02000089504E470D0A1
A0A0000000D4948445200000020000000200806000000737A7AF4000000017352
474200AECE1CE90000000467414D410000B18F0BFC61050000000970485973000
00EC300000EC301C76FA86400000223494441545847ED972DAB024114860D824D
2C7693C560103409FA038C62B008828A3FC0EA57B268320882980D822206838A4
530F80BC42236ABC570EE3D7BE7EC9DFD9A9D5D96850BF78117768ECE99675777
56032049201080CD66C34662B2D92C9CCF673612232DF07ABD20994CB2D10FEFF
71B2E970B7C3E1F56F9A1DFEFB3237BA4059056AB05F3F91CDAED36643219E5AA
6082C120A4D369A8D7EB50AD56E1F97CB219F6480BDCEF77A8542AEAA25689442
2301C0ED92C7BA404F6FBBDE962A2148B45365B8CADC0E974825028A4344DA552
301E8F0D8BF1E16565246C054AA592DA1005ECAE06BE1E0E87D5F16432619DCC1
10ADC6E37F5ECDD06A5450805F01B6FD6D4691E8F07EB684428D068344C1B3A8D
6853D208D0AD869F2372381C6C733C1EA582E0FE81E1D108C46231D57A3A9D42A
7D3D19C89DBE009E11D41E372B9CC56E404F4DFEE5C2E07BD5E4F53731BB33B87
F04560B7DB196A84A5403E9FF74C60BBDD1A6A842F02EBF5DA50237C11582E978
61A2114E876BB9A9ADB2C160B438DF04560B55A196A842F02FADE184228E0E546
A4AF11BF47DFE0938BDE8093BC14A8D56AEA188F098DC0F57A85D168A44C4070D
FE61BB90DF6C3E7CC6C365382C78446408F9702560805F08A98357492783CCEBA
99231440D01E9F0B187D73AAEB5FA3DA6030605DACB115E0E117C11028C9D7717
159FE05FE960036365B04FF0BF202FADF7D221C09E0CE98482494E81769369B10
8D46A15028B08A0C005F1ECEF59244AA69250000000049454E44AE42608200 }
end
end
+228
View File
@@ -0,0 +1,228 @@
//启动tsl编辑器
uses tslvcl;
deletefuncacheini();
//mtic ;
ops := "";
GLobal G_OpenHostory;
G_OpenHostory := true; //默认打开历史进程
hasinstance := true; //单独进程
for i:= 0 to sysparamcount() do
begin
if (i<sysparamcount())and ("-f" = sysparamstr(i) ) then //打开文件
begin
ops := sysparamstr(i+1) ;
//break;
end else
if (i<sysparamcount())and ("-h" = sysparamstr(i) ) then //是否打开历史
begin
if "0" = sysparamstr(i+1) then G_OpenHostory := false;
//break;
end else
if (i<sysparamcount())and ("-i" = sysparamstr(i) ) then //启用其他进程
begin
if "1" = sysparamstr(i+1) then
begin
hasinstance := false;
end
end else
if (i<=sysparamcount())and ("-install" = sysparamstr(i) ) then //注册右键打开
begin
InStallToMenu();
//return sleep(5000); //停留8秒
echo "\r\n press enter exit";
return readln();
end else
if (i<=sysparamcount())and ("-uninstall" = sysparamstr(i) ) then //卸载右键打开
begin
UnInStallToMenu();
echo "\r\n press enter exit";
return readln();
end
end
if sysparamcount()=0 then //处理单独一个文件
begin
ops := sysparamstr(0);
end
if ops and ifstring(ops) then
begin
if not FileList("",ops) then
begin
s := "";
n := 512;
setlength(s,n);
GetCurrentDirectoryA(n,s);
for i:= 1 to n do
begin
if s[i]="\0" then
begin
if i = 1 then break;
ops := s[1:i-1]+ops;
break;
end
end
end
end
if hasinstance then //实现一个编辑器进程
begin
//判断
h := FindWindowA("tslediter_a_a_1",nil);
if h then
begin
basepath := TS_GetUserProfileHome();
handlefile := basepath+"editer\\whandle.tsm";
exportfile(ftstream(),"",handlefile,ops);
PostMessageA(h,0x400,303,1);
return ;
end
end else
begin
global g_dotsavehistory;
g_dotsavehistory := true;
end
app := initializeapplication();
//mtic;
//setprofiler(7);
app.createform(class(TRunEditerForm),fm);
fm.OpenAndGotoFileByName(ops);
fm.show();
//echo mtoc;
//d := Getprofilerinfo(true);
//exportfile(ftstream(),"",format("d:\\tst\\profile\\%ssynprofile.stm",tostn(random())),d);
app.run();
type TRunEditerForm = class(TEditerForm)
function Create(AOwner);override;
begin
inherited;
end
function WMUSER(o,e):WM_USER;override;
begin
if e.wparam = 303 and e.lparam=1 then
begin
basepath := TS_GetUserProfileHome();
handlefile := basepath+"editer\\whandle.tsm";
if (importfile(ftstream(),"",handlefile,n)=1) and ifstring(n) and n then
begin
OpenAndGotoFileByName(n);
end
//_wapi.ShowWindow(self.Handle, SW_SHOWNORMAL);
PostMessageA(self.Handle,WM_USER,303,10);
end else
if e.wparam = 303 and e.lparam=10 then
begin
//Show(SW_SHOWNORMAL);
FCurrentRect := BoundsRect ;
Show(SW_MINIMIZE);
PostMessageA(self.Handle,WM_USER,303,20);
end else
if e.wparam = 303 and e.lparam = 20 then
begin
Show(SW_SHOWNORMAL);
_wapi.bringWindowToTop(self.Handle);
if FCurrentRect then
begin
if ((FCurrentRect[3]-FCurrentRect[1])>200) and ((FCurrentRect[2]-FCurrentRect[0])>200) then
BoundsRect := FCurrentRect;
end
//_wapi.SetForegroundWindow(seLF.Handle);
end
inherited;
end
function CreateParams(p);override;
begin
inherited;
p.WinClassName := "tslediter_a_a_1";
end
private
FCurrentRect;
end
function InStallToMenu(); //注册
begin
k1 := new TRegKey(class(TRegKey).HKEY_CLASSES_ROOT);
tek := k1.openKeyA("*\\shell\\tslediter");
if not ifobj(tek) then
begin
return echo "Please run with administrator rights!!";
end
tek.SetValueStringA(nil,"TSL本地编辑器");
tek.SetValueStringA("Icon",SysExecName());
tc := tek.openKeyA("command");
if not ifobj(tc) then
begin
echo "Please run with administrator rights!!";
end else
begin
tc.SetValueStringA(nil,SysExecName()+ ' "%1"');
bkcl := k1.openKeyA("Directory\\Background\\shell\\tslediter\\command");
if bkcl then bkcl.SetValueStringA(nil,SysExecName());
bkcl := k1.openKeyA("Directory\\Background\\shell\\tslediter");
bkcl.SetValueStringA(nil,"TSL Editer");
if bkcl then bkcl.SetValueStringA("Icon",SysExecName());
echo "register tslediter ok ~~";
end
end
function UnInStallToMenu(); //卸载
begin
k1 := new TRegKey(class(TRegKey).HKEY_CLASSES_ROOT);
tc := k1.openKeyA("*\\shell");
if not ifobj(tc) then
begin
echo "Please run with administrator rights!!";
return;
end else
begin
if 0=tc.DeleteKeyA("tslediter\\command") then
begin
if 0=tc.DeleteKeyA("tslediter") then
begin
bkcl := k1.openKeyA("Directory\\Background\\shell");
if ifobj(bkcl) then
begin
if 0=bkcl.DeleteKeyA("tslediter\\command") then
begin
if 0=bkcl.DeleteKeyA("tslediter") then
begin
end
end
end
echo "unregister tslediter ok~~";
return ;
end
end
echo "tslediter not installed~~";
return ;
end
end
function deletefuncacheini();
begin
plg := pluginpath();
{$ifdef linux}
sp :="/";
{$else}
sp := "\\";
{$endif}
for i:= length(plg)-1 downto 1 do
begin
if plg[i]=sp then
begin
fn := plg[1:i]+"FunCache.ini";
r := filedelete("",fn);
return r;
end
end
end
{$ifdef linux}
function PostMessageA(hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer)begin end ;
function FindWindowA(lpClassName:string;lpWindowName:string)begin end ;
function GetCurrentDirectoryA(nBufferLength:integer; var lpBuffer:string)begin end ;
function TS_GetUserProfileHome()begin end ;
{$else}
function PostMessageA(hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer):integer;stdcall;external "User32.dll" name "PostMessageA";
function FindWindowA(lpClassName:string;lpWindowName:string):pointer;stdcall;external "User32.dll" name "FindWindowA";
function GetCurrentDirectoryA(nBufferLength:integer; var lpBuffer:string):integer;stdcall;external "Kernel32.dll" name "GetCurrentDirectoryA";
function TS_GetUserProfileHome():string;cdecl;external "TSSVRAPI.dll" name "TS_GetUserProfileHome";
{$endif}
+71
View File
@@ -0,0 +1,71 @@
{
tsl界面设计器启动程序
}
uses tslvcl,tslvclDesigner;
deletefuncacheini();
h := FindWindowA("tsluidesigner_a_a_1",nil); //查找唯一窗口
if h then
begin
return PostMessageA(h,0x400,303,10);
end
app := InitializeApplication();
app.createform(class(TVclDesignerStart),Desginer);
Desginer.Show();
r := app.run();
return r;
type TVclDesignerStart = class(TVclDesigner) //实现唯一的窗口
function create(AOwner);
begin
inherited;
end
function WMUSER(o,e):WM_USER;override;
begin
if e.wparam = 303 and e.lparam=10 then
begin
Show(SW_SHOWMINIMIZED);
PostMessageA(self.handle,WM_USER,303,12);
end
else if e.wparam = 303 and e.lparam=12 then
begin
Show(SW_SHOWNORMAL);
_wapi.bringWindowToTop(self.Handle);
end
inherited;
end
function CreateParams(p);override;
begin
inherited;
p.WinClassName := "tsluidesigner_a_a_1";
end
end
function deletefuncacheini();
begin
plg := pluginpath();
{$ifdef linux}
sp :="/";
{$else}
sp := "\\";
{$endif}
for i:= length(plg)-1 downto 1 do
begin
if plg[i]=sp then
begin
fn := plg[1:i]+"FunCache.ini";
r := filedelete("",fn);
return r;
end
end
end
{$ifdef linux}
function PostMessageA();
begin
end
function FindWindowA();
begin
end
{$else}
function PostMessageA(hWnd:pointer;Msg:integer;wParam:pointer;lParam:pointer):integer;stdcall;external "User32.dll" name "PostMessageA"; //引入api
function FindWindowA(lpClassName:string;lpWindowName:string):pointer;stdcall;external "User32.dll" name "FindWindowA";//引入api
{$endif}
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
"%~dp0..\tsl.exe" "%~dp0tslediter.tsl" -libpath "%~dp0;"
+3
View File
@@ -0,0 +1,3 @@
//tsl代码编辑器-天软-ljj
//20201019
return GetTslEditerStart();
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
"%~dp0..\tsl.exe" "%~dp0vcldesigner.tsl" -libpath "%~dp0;"
+4
View File
@@ -0,0 +1,4 @@
{
tsl界面设计器启动程序
}
GetTslVclDesignerStart();