当前位置: 首页 > news >正文

aardio - 虚表 —— 绘制整行背景进度条功能

基础用法:

import win.ui;
import godking.vlistEx;
import thread.works
/*DSG{{*/
var mainForm = win.form(text="aardio form";right=1031;bottom=551)
mainForm.add(
button2={cls="button";text="随机进度赋值";left=408;top=480;right=560;bottom=528;z=2};
vlist={cls="vlistEx";left=10;top=10;right=1024;bottom=464;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=1}
)
/*}}*/
mainForm.show();
var t = { fields={"序号","网址","文件","进度"} };
for(i=1;30;1){..table.push(t,{"序号"="[@rowindex]"});
}
mainForm.vlist.setTable(t,/*列标题*/,{scale=true,1,1,1,2}/*列宽*/,1/*对齐方式*/,/*字典转为数组*/,/*字符串转为Utf8*/,/*是否克隆新表*/);
mainForm.vlist.fillParent(-1/*列号支持负数*/,-1/*滚动条计算方式-1或-2*/);//使用下面的函数,启用绘制整行背景进度条功能
mainForm.vlist.enableRowProgress(true,4);//设置随机进度值
mainForm.button2.oncommand = function(id,event){//数字开头的,可转为数值。仔细对比下列几行的处理效果mainForm.vlist.setCellText( 4/*行号*/,4/*列号或字典key*/,math.random(0,100)/*单元格文本*/);mainForm.vlist.setCellText( 5/*行号*/,4/*列号或字典key*/,"非数值文本:"++math.random(0,100)/*单元格文本*/);mainForm.vlist.setCellText( 6/*行号*/,4/*列号或字典key*/,math.random(0,100)++":我也是数值,因为我数字开头"/*单元格文本*/);mainForm.vlist.setCellText( 7/*行号*/,4/*列号或字典key*/,"我是一串文本"/*单元格文本*/);
}
win.loopMessage();

使用内置函数启用绘制整行背景进度条,多线程下载示例:

import win.ui;
import godking.vlistEx;
import thread.works
/*DSG{{*/
var mainForm = win.form(text="aardio form";right=1031;bottom=551)
mainForm.add(
button={cls="button";text="停止下载";left=296;top=480;right=448;bottom=528;z=2};
button2={cls="button";text="开始下载";left=520;top=480;right=672;bottom=528;z=3};
vlist={cls="vlistEx";left=10;top=10;right=1024;bottom=464;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=1}
)
/*}}*/var t = { fields={"序号","url","保存文件","下载进度"} };
for(i=1;30;1){..table.push(t,{"序号"="[@rowindex]"});
}mainForm.vlist.setTable(t,/*列标题*/,{scale=true,0.5,5,3,2}/*列宽*/,1/*对齐方式*/,/*字典转为数组*/,/*字符串转为Utf8*/,true/*是否克隆新表*/);
mainForm.vlist.fillParent();
..io.createDir("\down");//调用默认函数,启用绘制整行背景进度条功能
mainForm.vlist.enableRowProgress(true,4);import thread.command
thread.command.instance().setinfo = function(row,v,url,file){if #url mainForm.vlist.setCellText(row,2,url);if #file mainForm.vlist.setCellText(row,3,file);mainForm.vlist.setCellText(row,4,v);
}var work = thread.works(5,function(param) {if thread.var("stop").get() return ;import godking.http;import thread.command;thread.command.setinfo(param.index,"开始 "++param.index,param.url);var t,n={info = "超时或终止"},0;var callback = function(id,v,all,url,file){thread.command.setinfo(id,..math.round((v:0)*100/all,2)++"%",url,file);return thread.var("stop").get();}; do{n++;if n>3 or thread.var("stop").get() break; // 下载失败重试,共3次后结束。_,_,t = godking.http({url = param.url; callback = callback; callbackID = param.index;file = "\down\QQ_"+param.index+".exe"; fileResume = true; })} while ( !t.success and t.info!=="下载被终止" )if t.success===true {thread.command.setinfo(param.index,"下载完毕",param.url,t.file);} elseif t.success===false {thread.command.setinfo(param.index,"下载失败:"++(t.info:"")++..math.round(t.downsize*100/t.allsize,2)++"%",param.url,t.file);} else {thread.command.setinfo(param.index,"下载失败:"++(t.info:""));}return ;} 
);
mainForm.show();mainForm.button.oncommand = function(id,event){thread.var("stop").set(true);
}mainForm.button2.oncommand = function(id,event){thread.var("stop").set(false);mainForm.vlist.setTable(t,false/*列标题*/,/*列宽*/,/*对齐方式*/,/*字典转为数组*/,/*字符串转为Utf8*/,true/*是否克隆新表*/);for(i=1;50;1){if thread.var("stop").get() return ;work.push({index=i,url="https://dldir1.qq.com/qqfile/qq/QQNT/Windows/QQ_9.9.15_240902_x86_01.exe"});}
}mainForm.onClose = function(hwnd,message,wParam,lParam){import processprocess().terminate();
} // 定时刷新虚表
mainForm.vlist.autoRedraw = false;
mainForm.setInterval( function(){mainForm.vlist.redraw(true);},200
)win.loopMessage();

高级点的用法,使用事件函数启用绘制整行背景进度条,多线程下载示例: 

import win.ui;
import godking.vlistEx;
import thread.works
/*DSG{{*/
var mainForm = win.form(text="aardio form";right=1031;bottom=551)
mainForm.add(
button={cls="button";text="停止下载";left=296;top=480;right=448;bottom=528;z=2};
button2={cls="button";text="开始下载";left=520;top=480;right=672;bottom=528;z=3};
vlist={cls="vlistEx";left=10;top=10;right=1024;bottom=464;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=1}
)
/*}}*/var t = { fields={"序号","url","保存文件","下载进度"} };
for(i=1;30;1){..table.push(t,{"序号"="[@rowindex]"});
}mainForm.vlist.setTable(t,/*列标题*/,{scale=true,0.5,5,3,2}/*列宽*/,1/*对齐方式*/,/*字典转为数组*/,/*字符串转为Utf8*/,true/*是否克隆新表*/);
mainForm.vlist.fillParent();
..io.createDir("\down");//使用事件函数,实现绘制整行背景进度条功能
mainForm.vlist.onDrawCellRectBg = function(row,col,hdc,rect,bkcolor,text,font,align,valign,recall){//成功绘制进度条的直接返回if mainForm.vlist.drawRowProgress(row,4,hdc,rect) return true;//否则将下载完毕的单元格改变背景色if owner.getCellText(row,"下载进度")=="下载完毕" return false,0xE6F0FA;
}import thread.command;
thread.command.instance().setinfo = function(row,v,url,file,rowprogress){if #url mainForm.vlist.setCellText(row,2,url);if #file mainForm.vlist.setCellText(row,3,file);mainForm.vlist.setCellText(row,4,v);
}var work = thread.works(5,function(param) {if thread.var("stop").get() return ;import godking.http;import thread.command;thread.command.setinfo(param.index,"开始 "++param.index,param.url,,true);var t,n={info = "超时或终止"},0;var callback = function(id,v,all,url,file){thread.command.setinfo(id,..math.round((v:0)*100/all,2)++"%",url,file,null);return thread.var("stop").get();}; do{n++;if n>3 or thread.var("stop").get() break; // 下载失败重试,共3次后结束。_,_,t = godking.http({url = param.url;callback = callback;callbackID = param.index;file = "\down\QQ_"+param.index+".exe";fileResume = true;})} while ( !t.success and t.info!=="下载被终止" );if t.success===true {thread.command.setinfo(param.index,"下载完毕",param.url,t.file,false);} elseif t.success===false {thread.command.setinfo(param.index,"下载失败:"++(t.info:"")++..math.round(t.downsize*100/t.allsize,2)++"%",param.url,t.file,false);} else {thread.command.setinfo(param.index,"下载失败:"++(t.info:""),,,false);}return ;} 
);
mainForm.show();mainForm.button.oncommand = function(id,event){thread.var("stop").set(true);
}mainForm.button2.oncommand = function(id,event){thread.var("stop").set(false);mainForm.vlist.setTable(t,false/*列标题*/,/*列宽*/,/*对齐方式*/,/*字典转为数组*/,/*字符串转为Utf8*/,true/*是否克隆新表*/);for(i=1;50;1){if thread.var("stop").get() return;work.push({index=i,url="https://dldir1.qq.com/qqfile/qq/QQNT/Windows/QQ_9.9.15_240902_x86_01.exe"});}
}mainForm.onClose = function(hwnd,message,wParam,lParam){import process;process().terminate();
} // 定时刷新虚表
mainForm.vlist.autoRedraw = false;
mainForm.setInterval(function(){mainForm.vlist.redraw(true);},200
)win.loopMessage();

相关文章:

  • RASP的运行时注入与更新
  • Pycharm的终端执行allure命令出现command not found
  • 通信算法之274 : SCFDE与OFDM技术对比分析‌
  • 高并发系统设计需要考虑哪些问题
  • DIFY教程第七弹:Echarts可视化助手生成图表
  • 【Axure视频教程】中继器表格间批量控制和传值
  • 榕壹云搭子系统技术解析:基于Spring Boot+MySQL+UniApp的同城社交平台开发实践
  • NumPy 2.x 完全指南【九】常量
  • git经验
  • 基于Qt的app开发第八天
  • 聊一聊Electron中Chromium多进程架构
  • 如何优化 Linux 服务器的磁盘 I/O 性能
  • 自动化测试基础知识详解
  • 蓝桥杯12届国B 纯质数
  • (七)深度学习---神经网络原理与实现
  • vue 中绑定样式 【style样式绑定】
  • 3d关键点 可视化
  • 阳光学院【2020下】计算机网络原理-A卷-试卷-期末考试试卷
  • 北斗如何赋能雨水情监测?
  • 南方科技大学Science! 自由基不对称催化新突破 | 乐研试剂
  • 足球少年郎7月试锋芒,明日之星冠军杯构建顶级青少年赛事
  • 上海团队在医学顶刊连发两文,率先提出“证据污染”循证概念
  • 全国汽车以旧换新补贴申请量突破1000万份
  • 宁德时代港股募资预计最高至50亿美元:90%将投向匈牙利项目
  • 来伊份深夜回应“粽子中吃出疑似创可贴”:拿到实物后会查明原因
  • 三大股份制银行入局AIC,一级市场再迎“活水”