forked from liujianjun/tslediter
编辑器
上传
This commit is contained in:
@@ -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"
|
||||
)
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
//tsl script :atsl
|
||||
@@ -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)\\;\""
|
||||
)
|
||||
@@ -0,0 +1,6 @@
|
||||
//工程E_Action界面库主程序
|
||||
uses tslvcl; //引入界面库
|
||||
app := InitializeApplication(); //获得界面管理器
|
||||
app.CreateForm(class(E_Actionmain),fm); //构造主窗口
|
||||
fm.show(); //显示主窗口
|
||||
app.run(); //开始消息循环
|
||||
@@ -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
|
||||
@@ -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"
|
||||
)
|
||||
@@ -0,0 +1,6 @@
|
||||
//工程E_Menu界面库主程序
|
||||
uses tslvcl; //引入界面库
|
||||
app := InitializeApplication(); //获得界面管理器
|
||||
app.CreateForm(class(E_Menumain),fm); //构造主窗口
|
||||
fm.show(); //显示主窗口
|
||||
app.run(); //开始消息循环
|
||||
@@ -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
|
||||
@@ -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"
|
||||
)
|
||||
@@ -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
|
||||
@@ -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}
|
||||
@@ -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
@@ -0,0 +1 @@
|
||||
"%~dp0..\tsl.exe" "%~dp0tslediter.tsl" -libpath "%~dp0;"
|
||||
@@ -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
@@ -0,0 +1 @@
|
||||
"%~dp0..\tsl.exe" "%~dp0vcldesigner.tsl" -libpath "%~dp0;"
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
tsl界面设计器启动程序
|
||||
}
|
||||
GetTslVclDesignerStart();
|
||||
Reference in New Issue
Block a user