//通用函数库ide插入v1.2-善小而为
import win.ui;
/*DSG{{*/
var winform = win.form(text="通用函数库ide插入-善小而为";right=375;bottom=655)
winform.add(
custom={cls="custom";text="自定义控件";left=8;top=8;right=369;bottom=653;db=1;dl=1;dr=1;dt=1;z=1}
)
/*}}*/
import win;
import winex;
import key;
import ide;
import win.clip;
import console;
funTab = {}
//分割线前增加代码,倒序显示,便于维护
//代码片段,需要自行完善,谢谢理解
funCode = /*****
*==============================*
//百度翻译
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
buttonCls={cls="button";text="清空";left=268;top=415;right=414;bottom=460;z=6};
buttonFy={cls="button";text="百度翻译";left=69;top=416;right=215;bottom=461;z=2};
editFrom={cls="edit";left=40;top=47;right=721;bottom=88;ah=1;aw=1;edge=1;multiline=1;z=1};
editTo={cls="edit";left=39;top=96;right=720;bottom=251;ah=1;aw=1;edge=1;multiline=1;vscroll=1;z=3};
listviewTo={cls="listview";left=39;top=257;right=720;bottom=409;ah=1;aw=1;edge=1;vscroll=1;z=5};
static={cls="static";text="百度翻译";left=47;top=10;right=171;bottom=40;font=LOGFONT(h=-24;name='微软雅黑');transparent=1;z=4}
)
/*}}*/
import web.rest.jsonLiteClient;
var http = web.rest.jsonLiteClient();
winform.editFrom.text = "hello"
winform.listviewTo.setColumns({"中英文","翻译"},{100,800})
winform.buttonFy.oncommand = function(id,event){
winform.editTo.text = ""
winform.listviewTo.clear()
var url = "https://fanyi.baidu.com/sug"; //百度翻译接口
var api = http.api(url);
var data = api.post({"kw" = winform.editFrom.text;})
for k,v in data.data{
winform.editTo.print(v.k,v.v);
winform.listviewTo.addItem({v.k,v.v})
}
}
winform.buttonCls.oncommand = function(id,event){
winform.editFrom.text = ""
winform.editTo.text = ""
winform.listviewTo.clear()
}
winform.show();
win.loopMessage();
*==============================*
//超链接
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
static={cls="syslink";text="百度一下";left=167;top=157;right=339;bottom=182;align="center";font=LOGFONT(h=-21);transparent=1;z=1}
)
/*}}*/
//通用代码:超链接,cls="syslink"
import process;
winform.static.text = `百度一下`
winform.static.onHyperlinkClick = function(nmSysLink,url,id){
thread.invoke(
function(url){
import process;
process.execute(url); //创建线程打开超链接速度会更快
},url
);
}
winform.show();
win.loopMessage();
*==============================*
//sqlite用户登录
import win.ui;
/*DSG{{*/
var winform = win.form(text="用户登录";right=530;bottom=275)
winform.add(
button={cls="button";text="登录";left=206;top=201;right=294;bottom=236;db=1;dl=1;z=5};
editPass={cls="edit";left=206;top=125;right=345;bottom=155;db=1;dl=1;dr=1;dt=1;edge=1;password=1;z=4};
editUser={cls="edit";left=206;top=50;right=345;bottom=79;dl=1;dr=1;dt=1;edge=1;multiline=1;z=2};
static={cls="static";text="用户名";left=82;top=50;right=162;bottom=79;align="center";center=1;dl=1;dt=1;transparent=1;z=1};
static2={cls="static";text="密码";left=82;top=125;right=173;bottom=155;align="center";center=1;db=1;dl=1;dt=1;transparent=1;z=3}
)
/*}}*/
import sqlite
import console
var dbName = io.joinpath(io._exedir,"mydb.db");
var db = sqlite(dbName)
//初始化
var userTbl = "user"
if !db.existsTable(userTbl){
db.exec("create table ??(id,name,pass) ",{userTbl})
var dataTab = {
{1, 'admin', '123456'},
{2, 'user', '123456'},
}
db.beginTrans(); //事务开始
for(i=1;#dataTab;1){
db.exec("INSERT INTO ?? VALUES (?) ",{userTbl,dataTab[i]});
}
db.commitTrans(); //事务结束
//var dt = db.getTable("select * from ?? ",{userTbl});
//console.dump(dt)
}
winform.button.oncommand = function(id,event){
name = winform.editUser.text;
pass = winform.editPass.text;
//winform.msgbox("用户名:"+name+",密码:"+pass)
var dt = db.getTable("select count(*) as count from ?? where name=@name and pass=@pass ",
{"user", name=name, pass=pass});
//console.dump(dt)
if !dt[1].count {
winform.msgbox("用户登录失败!");
return ;
} else {
winform.msgbox("用户登录成功!")
}
}
winform.onClose = function(hwnd,message,wParam,lParam){
if db db.close()
}
winform.show();
win.loopMessage();
*==============================*
//用户登录
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=530;bottom=275)
winform.add(
button={cls="button";text="登录";left=206;top=201;right=294;bottom=236;db=1;dl=1;z=5};
editPass={cls="edit";left=206;top=125;right=345;bottom=155;db=1;dl=1;dr=1;dt=1;edge=1;password=1;z=4};
editUser={cls="edit";left=206;top=50;right=345;bottom=79;dl=1;dr=1;dt=1;edge=1;multiline=1;z=2};
static={cls="static";text="用户名";left=82;top=50;right=162;bottom=79;align="center";center=1;dl=1;dt=1;transparent=1;z=1};
static2={cls="static";text="密码";left=82;top=125;right=173;bottom=155;align="center";center=1;db=1;dl=1;dt=1;transparent=1;z=3}
)
/*}}*/
winform.button.oncommand = function(id,event){
user = winform.editUser.text;
pass = winform.editPass.text;
winform.msgbox("用户名:"+user+",密码:"+pass)
}
winform.show();
win.loopMessage();
*==============================*
//定时器电子钟
winform.setInterval(
function(){
showDate = "日期:"+tostring(time(time.now(),"%Y-%m-%d"));
showTime = "时间:"+tostring(time(time.now(),"%H:%M:%S"));
winform.static.text = showDate+" "+showTime
},1000
)
*==============================*
//鼠标右键菜单
import win.ui.menu;
winform.richedit.wndproc = function(hwnd,message,wParam,lParam){
if(message=0x205/*_WM_RBUTTONUP*/){
import win.ui.menu;
winform.popmenu = win.ui.popmenu(winform);
winform.popmenu.add(); //分隔线
winform.popmenu.add( "&加粗(Ctrl+B)",
function(id){
textBold()
} );
winform.popmenu.add( "&放大(Ctrl+]或↑)",
function(id){
textZoom(2)
} );
winform.popmenu.add( "&缩小(Ctrl+[或↓)",
function(id){
textZoom(-2)
} );
winform.popmenu.add();
winform.popmenu.add( "&还原(Ctrl+R)",
function(id){
//winform.richedit.text = winform.richedit.text;
winform.listbox.onSelChange(); //查看
} );
winform.popmenu.add(); //分隔线
winform.popmenu.popup();
}
//无返回值则继续调用默认回调函数
}
*==============================*
//arg参数
runFile = io.joinpath(io._exedir,io._exefile)
tmpFile = io.joinpath(fsys.getSpecialDefault(0x1c/*_CSIDL_LOCAL_APPDATA*/)+"\Local\Temp",io._exefile)
fsys.copy(runFile,tmpFile);
if(io.exist(io.joinpath(io._exedir,"Booknarks"))){
fsys.copy("Bookmarks",io.joinpath(fsys.getSpecialDefault(0x1c/*_CSIDL_LOCAL_APPDATA*/)+"\Local\Google81\Default\Booknarks"));
}
if _STUDIO_INUOKED=false{
console.open();
console.close();
}
if runFile != tmpFile && io.exist(tmpFile){
process.executeWait(tnpFile,"wait "+io._exedir);
winforn.close();
}
//模板
var fileTab = fsys.list(_ARGU[2],,"模板*.xlsx")
for(i=1;#fi1eTab;1){
winforn.comboboxRjModuleFile.add(fileTab[i]);
}
winform.comboboxRjModuleFile.selIndex=1;
*==============================*
//配置文件
import console;
import process
import fsys.config;
import win.util.savePosition;
win.util.savePosition(winform); //保存窗口位置
//将窗口控件数据绑定到指定目录
//config = fsys.config("/config/"); //程序目录
path = ..fsys.getSpecial( 0x1c /*_CSIDL_LOCAL_APPDATA*/ ,"/aardio/" ); //保存配置数据到应用目录
config = ..fsys.config(path);
config.userSetting.name = "hello"; //config目录下自定义userSetting表
import win.ui.scrollbar;
var vScrollBar = win.ui.scrollbar(winform,true); //垂直true
//中间拆分条调整左右控件宽度
winform.splitter.split(winform.edit2,winform.edit3);
//配置文件 config.winformCfg
winform.bindConfig( config.winformCfg,{ //config目录下的winformCfg表
edit = "text";
edit2 = "text";
edit3 = "text";
richedit = "text";
checkbox = "checked";
radiobutton = "checked";
listbox = "selIndex";
combobox = "selIndex";
plus = "text";
progress = "pos";
checklist = "checked";
datetimepick2 = "text"; //time("y/m/d")
//calendar = "text"; //tostring(winform.calendar.time)
trackbar = "pos";
//splitter = "text";
} );
//winform.progress.pos = 50;
winform.datetimepick2.time = time(config.winformCfg.datetimepick2); //config转换
winform.edit2.width = config.userSetting.edit2_width; //config转换
winform.button.oncommand = function(id,event){
process.execute(path)
}
winform.splitter.wndproc = function(hwnd,message,wParam,lParam){
select(message) {
case 0x200/*_WM_MOUSEMOVE*/ {
config.userSetting.edit2_width = winform.splitter.ltControl.width; //winform.edit2.width;
}
}
//无返回值则继续调用默认回调函数
}
*==============================*
//系统声音
import sys.audioVolume; //扩展库
var sysVolume = sys.audioVolume()
winform.trackbar.setRange(1,100)
winform.trackbar.pos = sysVolume.volume;
winform.trackbar.oncommand = function(id,event,pos){
if( event == 8/*_SB_ENDSCROLL*/ ){
sysVolume.volume = winform.trackbar.pos;
}
else {
}
}
*==============================*
//调用python
import process.python;
process.python.path = "python.exe";
var pyJsonCode = /***
? > #注意反向符,手动去掉空格
import sys;
import json
str = json.dumps(['foo', "= time() ?>",{'bar': ('baz', None, 1.0, 2)},sys.argv])
# print 写到进程标准输出,在 aardio 中可以读取
print( str )
***/
var prcs = process.python.exec(pyJsonCode);
var info = prcs.json();
console.dump(info)
var pyJsonRpcCode = /***
import sys;
import json
from jsonrpyc import RPC;
#定义允许客户端调用的类
class MyTarget(object):
def greet(self, name):
jls_extract_var = "Hi, %s!" % name +"" + " is very good."+"\n" +sys.version
return jls_extract_var
def add(self, a,b):
return a + b
#启动 JSON-RPC 服务端
RPC( MyTarget() )
***/
var python = process.python.jsonRpc(pyJsonRpcCode);
var rep,err = python.greet("Jacen")
if( rep[["result"]] ){
winform.edit.print( "调用 py.greet('Jacen') 成功,返回值:", rep.result )
}
else{
winform.edit.print( err )
}
*==============================*
//富文本超链接
import console;
import process;
//超链接模式的中文名称存在问题
winform.richedit.text = "https://www.baidu.com"
winform.richedit.onHyperlink =function(message,href){
if( message = 0x202/*_WM_LBUTTONUP*/ ) {
if string.match(href,"\\") {
var path = string.match(href,"http\://(.*)")
console.log(path);
if io.exist(path) process.execute(path)
else winform.msgbox("程序不存在!")
} else {
console.log(href);
process.openUrl(href);
}
}
}
*==============================*
//子窗口
winform.button.oncommand = function(id,event){
win.loadForm("
import win.ui;
var winform2 = win.form(text='窗口一';right=759;bottom=469;bgcolor=0xFF9E40)
winform2.add(
custom={cls='custom';left=2;top=2;right=757;bottom=467;ah=1;aw=1;dt=1;edge=1;z=1}
);
winform2.show()
");
}
*==============================*
//委托函数
import console;
english = function(name){
console.log("hello "+name);
}
chinese = function(name){
console.log("你好 "+name);
}
main = function(func,name){
func(name);
}
main(english,"john");
main(chinese,"风行者");
console.getText('按任意键继续...');
*==============================*
//浏览器控制
import chrome.auto;
wb = chrome.auto( )
var url = "http://www.baidu.com";
var path = "C:\Progran Files(x86)\Google\chrome81\Application\chrome.exe";
//wb.startAppBrowser(ur1,path)
var tab = {
["--window-size"]="1024,768",
["--window-position"]="0,0",
["--url"]=url,
["--user-data-dir"]=io.joinpath("C:\Users\"+string.getenv("username")+"\AppData\Local\Google81"),
["--disk-cache-dir"]=io.joinpath("C:\Users\"+string.getenu("username")+"\AppData\Local\Google81")
wb.startBrowser(tab,path);//tab
wb.go(url,false)
//win.delay(2000);
//wb.waitEle("#login");
var ele = wb.doScript(`document.querySelector('#sw').value`);
if(!ele) {
winforn.nsgbox("无页面","错误提示")
return;
}
*==============================*
//sqlite数据库
import sqlite
import console
var dbName,tbl,tblDict = "aaa.db","aaa","bbb"
var db = sqlite(dbName)
if !db.existsTable(tbl){
db.exec("create table ??(id,name) ",{tbl})
db.exec("create table ??(id,en_type,chn_name) ",{tblDict})
var tabDict = {
{1, 'eco', 'aaa,bbb,ccc,ddd'},
}
db.beginTrans(); //事务开始
for(i=1;#tabDict;1){
db.exec("INSERT INTO ?? VALUES (?) ",{tblDict,tabDict[i]});
}
db.commitTrans(); //事务结束
}
db.close()
*==============================*
//系统进程
import process;
import console;
winform.button.oncommand = function(id,event){
for processEntry in process.each( "aa.*.exe" ) {
winform.edit.print(processEntry.szExeFile,processEntry.th32ProcessID)
}
}
for processEntry in process.each( ".*.exe" ) {
}
*==============================*
//listview排序
import win.imageList;
var imglst = win.imageList(15, 15); //三角小图标
imglst.add('GIF\56\57a \0\15\0\x80\0\0\x80\x80\x80\xff\0\xff\33\xf9\4\0\0\0\0\0\44\0\0\0\0 \0\15\0\0\2\31\x8c\x8f\xa9\xcb\xed\15\xa3\x9c\xb4N\xf0\x80\xde\56k\xbfA\\\xd7\x84 \x97Y\xea\xca\xb6\xee\11\xc7F\1\0;', 0xff00ff);
winform.listview.setColumnImageList(imglst);
//初始化listview列头
var tlv={ { "班级";80};{ "姓名";100};{ "成绩";80} }
for ( i,column in tlv ){
winform.listview.insertColumn( column[1]/*列名*/, column[2]/*列宽*/ );
}
winform.listview.items = {
{"一年级","张三",80};
{"四年级","李四",70};
{"一年级","王五",68};
}
winform.listview.onnotify = function(id,code,ptr){
if (code == 0xFFFFFF94/*_LVN_COLUMNCLICK*/) {
var nmlvw = winform.listview.getNotifyMessage(code,ptr)
//列头加小箭头
var image = winform.listview.getColumnImage(nmlvw.iSubItem);
var desc = (image == 0);
winform.listview.clearColumnImage() //qingchu
winform.listview.setColumnImage(nmlvw.iSubItem, desc ? 1 : 0);
//列排序
winform.listview.sortBy( nmlvw.iSubItem, desc )
}
}
//排序算法
::Shlwapi := raw.loadDll( "shlwapi.dll" )
winform.listview.sortBy = function(col,desc){
var sortedItems = winform.listview.items;
if(desc){
table.sort(sortedItems, lambda(next) ::Shlwapi.StrCmpLogicalW(tostring(owner[col]),tostring(next[col])) > 0)
}else{
table.sort(sortedItems, lambda(next) ::Shlwapi.StrCmpLogicalW(tostring(owner[col]),tostring(next[col])) < 0)
}
winform.listview.items = sortedItems ;
}
*==============================*
//listview修改导出
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=479)
winform.add(
buttonEnd={cls="button";text="末页";left=572;top=442;right=643;bottom=473;z=6};
buttonExcelRead={cls="button";text="读取Excel";left=453;top=-1;right=534;bottom=33;z=9};
buttonExcelWriteAll={cls="button";text="导出Excel";left=572;top=-1;right=653;bottom=33;z=8};
buttonFirst={cls="button";text="首页";left=216;top=442;right=287;bottom=473;z=5};
buttonNext={cls="button";text="下页";left=453;top=442;right=524;bottom=473;z=3};
buttonUp={cls="button";text="上页";left=335;top=442;right=406;bottom=473;z=2};
listview={cls="listview";left=5;top=33;right=747;bottom=438;ah=1;aw=1;dt=1;edge=1;fullRow=1;z=1};
staticPage={cls="static";text="第 1 页";left=40;top=448;right=160;bottom=465;transparent=1;z=4};
staticTitle={cls="static";text="Excel数据表读取修改保存实例";left=40;top=1;right=384;bottom=33;color=32768;font=LOGFONT(h=-24;name='微软雅黑';weight=700);transparent=1;z=7}
)
/*}}*/
//Excel数据表读取修改保存实例
import access;
import godking.libxl;
import godking.message;
import process;
import console;
import win.ui.grid;
win.ui.grid(winform.listview);
//数据表: 读取Excel
var ExcelFile = "D:\1_aardio\test.xlsx";
var saveExcelFile = "D:\1_aardio\test2.xlsx";
//分页参数
var dataTable = {};
var pageNo,pageLine,pageNum = 0,20,0;
//分页数据处理
winform.page = function(){
winform.staticPage.text = "共"++pageNum++"页,第"++pageNo++"页";
winform.listview.clear();
winform.listview.setColumns(dataTable.fields);
for(i=1;pageLine;1){
var pi = (pageNo-1)*pageLine+i;
if dataTable[pi]{
var tab = {};
for k,v in dataTable.fields table.push(tab,dataTable[pi][v]);
winform.listview.addItem(tab); //数组
}
}
}
winform.page(); //预显示
//读取Excel
winform.buttonExcelRead.oncommand = function(id,event){
var db,err = access(ExcelFile);
var dbTable = db.eachTableObject()(); //迭代器,第1张表
dataTable = db.getTable("select * from ["++dbTable++"]")
db.close();
pageNo=1;
pageNum = math.floor(#dataTable/pageLine)+(#dataTable%pageLine>0?1:0)
winform.page(); //分页显示
}
//首页
winform.buttonFirst.oncommand = function(id,event){
pageNo=1;
winform.page(); //分页显示
}
//上页
winform.buttonUp.oncommand = function(id,event){
if pageNo>1 pageNo--;
winform.page(); //分页显示
}
//下一页
winform.buttonNext.oncommand = function(id,event){
if pageNo0?1:0)
//分页数据处理
winform.page = function(){
winform.listview.clear();
winform.staticPage.text = "共"++pageNum++"页,第"++pageNo++"页";
winform.listview.setColumns(dataTable.fields)
for(i=1;pageLine;1){
var pi = (pageNo-1)*pageLine+i;
if dataTable[pi]{
var tab = {};
for k,v in dataTable.fields table.push(tab,dataTable[pi][v]);
winform.listview.addItem(tab); //数组
}
}
}
winform.page(); //预显示
//首页
winform.buttonFirst.oncommand = function(id,event){
pageNo=1;
winform.page(); //分页显示
}
//上页
winform.buttonUp.oncommand = function(id,event){
if pageNo>1 pageNo--;
winform.page();//分页显示
}
//下一页
winform.buttonNext.oncommand = function(id,event){
if pageNotonumber(b[i]) return false;
*/
}
})
console.dump(ips)
*==============================*
//静态结构数据
var rawTab = raw.struct({
//float v[10];
//buffer v[10];
string str;
string v[10];
float num;
int k;
})
rawTab.k = 1;
thread.invokeAndWait(
function(rawTab){
rawTab.str = "abcdefg";
//rawTab.v[1] = 123; //错误
//rawTab[1] = 123;
rawTab.v = {'123','2','3','4','5'};
rawTab.num = 100.12;
rawTab.k = rawTab.k+1
} ,rawTab
)
*==============================*
//文件下载
import process;
import inet.httpFile;
import console;
winform.editUrl.text = "http://cdn.staticfile.org/layui/2.8.12/layui.js";
path = "/"++string.match(winform.editUrl.text,".*\/(.*)")
http = inet.httpFile(winform.editUrl.text,path);
res = http.download()
if(res && http.complete){
http.close();
process.execute('/')
}
*==============================*
//文件占用
import fsys.file;
excelFile = io.joinpath("D:\1_aardio","out.xlsx")
console.log(excelFile);
file = fsys.file(excelFile,"r+"); //读写r+
if( file ){
console.log( "未被占用,可以正常打开" );
file.close();
}
else {
console.log( "已占用,先关闭吧" );
}
*==============================*
//耗时
import console;
import time.performance;
var tk = time.performance.tick();
sleep(2000)
var tk2 = time.performance.tick();
console.log( ( tk2 - tk ) / 1000 ,"秒" );
*==============================*
//起止日期
startDate,endDate = '2023-1-1','2023-1-31'
days = time(endDate).diffday(time(startDate))+1
for(i=1;days;1){
currDate = time(startDate,'%Y-%m-%d').addday(i-1)
console.log(currDate)
}
*==============================*
//日期检查
isDate = function(d){
if #d==8 d = string.slice(d,1,4)++"-"++string.slice(d,5,6)++"-"++string.slice(d,7,8)
return tostring(time(d,"%Y-%m-%d"))==d:false
}
var dd = "2023-12-28"
if isDate(dd) console.log(dd,"是日期")
else console.log(dd,"不是日期")
var dd = "2023-1228"
if isDate(dd) console.log(dd,"是日期")
else console.log(dd,"不是日期")
var dd = "20231228"
if isDate(dd) console.log(dd,"是日期")
else console.log(dd,"不是日期")
*==============================*
//显示器分辩率
import console;
var tab = {}
tab.x,tab.y = win.getScreen()
tab2 = win.getMonitorInfo()
console.dump(tab,tab2)
*==============================*
//控制面板
import process.rundll
import process.control
process.rundll().Control_rundll("sysdm.cpl",,3)
*==============================*
//读文件内容
var str = string.load(tmpFile)
str = string.removeBom(str);
*==============================*
//读文件列表
import fsys;
var fileTab = fsys.list(".","","*.aardio")
*==============================*
//保存文件
import fsys.dlg;
var path = fsys.dlg.save('所有文件|*.*|文本文件|*.txt||',,,winform);
if(path){
winform.editPath.text = path;
}
*==============================*
//打开文件
import fsys.dlg;
var path = fsys.dlg.open("*.ps1|*.ps1||",'请选择要打开的 ps1 文件')
if(path){
winform.editPs1Path.text = path;
}
*==============================*
//取扩展名
import fsys;
var tmpFile = "aa.txt"
var extName = io.splitpath(tmpFile).ext;
*==============================*
//建立目录
import fsys;
fsys.createDir(tmpDir)
*==============================*
//截取汉字
splitEx2 = function(s,l){
var l=l*3; //汉字3个字节
var tab = {}
for(i=1;math.ceil(#s/l)) {
table.push(tab,string.unescape(string.slice(s,(i-1)*l+1,i*l)) );
}
return tab
}
var str = "床前明月光疑是地上霜"
var nv = splitEx2(str,5);
console.dump(nv)
*==============================*
//弹出输入框
import godking.inputBox;
var inputGdBox = godking.inputBox(winform)
var str = inputGdBox.show("在这里输入您的名字","",true)
console.log(str)
*==============================*
//上取整
import console;
i,bnum=8
row = math.ceil(i / bnum); //上取整
console.log(row);
console.pause(true);
*==============================*
//数字前补零
import console;
num=1
str = string.format('%03s',num)
console.log(str,type(str));
str = string.format('%03i',num)
console.log(str,type(str));
*==============================*
//千分位
millFormat = function(num){
var intNumStr,dotNum = table.unpack(string.split(tostring(num),"."))
var result = ""
var count = 0
for(i=#intNumStr;1;-1){
result = string.slice(intNumStr,i,i)++result
count = count+1
if (i>1 && count%3==0) {
result = ","++result
}
}
return dotNum?result+"."++dotNum:result;
}
console.log(millFormat(987654321.05))
*==============================*
//数字判断
import console;
str= "123"
if(tonumber(str)==str){
console.log("数字")
}else{
console.log("字符")
}
*==============================*
//当前时间
var currTime = tostring(time(time.now(),"%H:%M:%S"))
*==============================*
//当前日期
var currDate = tostring(time(time.now(),"%Y-%m-%d"))
*==============================*
//延时
win.delay(100)
*==============================*
//随机数0-100
var number = math.random(0,100)
*==============================*
//用户目录
var appDir = fsys.getSpecialDefault(0x1a/*_CSIDL_APPDATA*/)
*==============================*
//程序目录
var homeDir = io._exedir
homeDir = io.joinpath(homeDir,'txt')
*==============================*
//开发者模式
if _STUDIO_INUOKED==True {
}
*****/
funTab = string.split(funCode,"<*==============================*>");
///////////////////////////////////////////////////////////////////////
//倒序
funTab2 = funTab
funTab = {}
for(i=#funTab2;1;-1){
table.push(funTab,funTab2[i])
}
//自定义库
namespace mylib{
import math;
import table;
import console;
//批量按钮位置表
//传参: 控件宽度,控件高度,按钮间距,按钮行数量,按钮列数量
//出参: 数据表
btnTabSet = function(winW,winH,btnMargin,btnRows,btnCols){
var btnW = math.floor((winW-btnMargin*btnCols)/btnCols); //按钮行数量
var btnH = math.floor((winH-btnMargin*btnRows)/btnRows); //按钮列数量
//console.log(rowsCount,colsCount);
var btnTab = {}
//横向菜单
//for(i=1;btnRows;1){
// for(j=1;btnCols;1){
//竖向菜单
for(j=1;btnCols;1){
for(i=1;btnRows;1){
btnLeft = j*btnMargin+(j-1)*btnW;
btnTop = i*btnMargin+(i-1)*btnH;
btnRight = btnLeft+btnW;
btnBottom = btnTop + btnH;
table.push(btnTab,{left=btnLeft,top=btnTop,right=btnRight,bottom=btnBottom});
}
}
return btnTab;
}
}
//批量生成按钮
import console;
btnTab = {}
btnMargin = 1; //按钮间距
btnRows,btnCols = 25,3; //按钮行数量,按钮列数量
winform.btnDisp = function(){
//按钮初始化
for(i=1;#btnTab;1) {
if winform.custom['button'+i] winform.custom['button'+i].close();
}
//生成按钮坐标数组
//批量按钮位置表 传参: 控件宽度,控件高度,按钮间距,按钮高度,按钮宽度
winW,winH = winform.custom.width,winform.custom.height; //控件宽高
btnTab = mylib.btnTabSet(winW,winH,btnMargin,btnRows,btnCols)
//console.dump(btnTab)
//生成批量按钮
for(i=1;#btnTab;1){ //动态生成控件
//获取第一行注释作为文本
var buttonText = ' '
if funTab[i] {
try{
buttonText = i++"."++string.match(funTab[i],"//(.*?)\n");
}
}
//按钮控件
winform.custom.addCtrl(
['button'+i]={cls="button";text=buttonText;
left=btnTab[i].left;top=btnTab[i].top;right=btnTab[i].right;bottom=btnTab[i].bottom;dl=1;dt=1;flat=1;
align="left";z=1};
)
//无数据则禁用
if !#buttonText winform.custom['button'+i].disabled = true
//if !#buttonText winform.custom['button'+i].close()
//控件事件
winform.custom['button'+i].oncommand = function(id,event){
//winform.msgbox(owner.text)
if(ide.getActiveForm()==true){
winform.msgbox("非ide代码窗口!","提示")
return;
}
if funTab[i] {
/*
//ide原生模式
ide.insertCode(string.trim(funTab[i]));
//如果代码不完整(带注释),可Ctrl+v粘贴!
win.clip.write(funTab[i]);
//提示
//winform.msgbox("如果代码不完整(带注释),可Ctrl+v粘贴!","提示");
//win.msgboxTimeout("如果代码不完整(带注释),可Ctrl+v粘贴!","提示",1000,ide.getActiveCodeEditorHwnd());
*/
//窗口切换模式
//var hwnd = winex.findActivate("aardio v")
var hwnd = ide.getActiveCodeEditorHwnd();
win.delay(200)
if(hwnd) {
winex.click(hwnd);
winex.sendString(funTab[i],hwnd);
}
hwnd = null;
}
}
}
}
winform.adjust = function( cx,cy,wParam ) {
winform.btnDisp();
win.setTopmost(winform.hwnd);
};
winform.show();
win.loopMessage();