虚表 —— 多线程异步下载显示图片

光庆 10天前 168

import win.ui;
import godking.vlistEx;
/*DSG{{*/
mainForm = win.form(text="vlistEx - table adapter";right=583;bottom=727;border="thin")
mainForm.add(
vlist={cls="vlistEx";left=10;top=10;right=576;bottom=720;edge=1;transparent=1;z=1}
)
/*}}*/
mainForm.show();
str = /*************
[杀毒软件]
软件名称=驱动精灵BATW
软件图标=https://img.onlinedown.net/download/202401/135322-65b1f7529ae05.jpg
软件介绍=360出品的杀毒软件
软件大小=65.2 MB
软件链接=https://sfdl.360safe.com/360sd/360sd_x64_std_7.0.0.1060.exe
——————————————————————————————————————
软件名称=360浏览器
软件图标=https://img.onlinedown.net/download/202408/184132-66b9e6dc71d00.png
软件介绍=360出品的网页浏览软件
软件大小=98 MB
软件链接=https://down.360safe.com/se/360se15.3.6272.64.exe
——————————————————————————————————————
软件名称=WPS办公
软件图标=https://img3.downza.cn/download/202404/145505-662609c96c2aa.jpg
软件介绍=金山公司出品的办公软件
软件大小=155 MB
软件链接=https://official-package.wpscdn.cn/wps/download/WPS_Setup_18912.exe
——————————————————————————————————————
软件名称=永中文字
软件图标=http://img3.downza.cn/download/202008/183039-5f4639cf775d1.jpg
软件介绍=永中公司出品的办公软件
软件大小=125 MB
软件链接=https://dl.yozosoft.com/yozo/project/file/20240812_094642_267975/9.0.5004.101ZH.S1.exe
——————————————————————————————————————
软件名称=360浏览器
软件图标=http://img3.downza.cn/download/202108/134640-611c9ec0c442e.jpg
软件介绍=360出品的网页浏览软件
软件大小=98 MB
软件链接=https://down.360safe.com/se/360se15.3.6272.64.exe
——————————————————————————————————————
软件名称=WPS办公
软件图标=http://img3.downza.cn/download/202112/132522-61b97c428c698.jpg
软件介绍=金山公司出品的办公软件
软件大小=155 MB
软件链接=https://official-package.wpscdn.cn/wps/download/WPS_Setup_18912.exe
——————————————————————————————————————
软件名称=永中文字
软件图标=https://img.onlinedown.net/download/202411/152557-6735a60547e5a.png
软件介绍=永中公司出品的办公软件
软件大小=125 MB
软件链接=https://dl.yozosoft.com/yozo/project/file/20240812_094642_267975/9.0.5004.101ZH.S1.exe
——————————————————————————————————————
软件名称=苗
软件图标=http://img3.downza.cn/download/201812/093213-5c184e1da25b6.jpg
软件介绍=360出品的杀毒软件
软件大小=65.2 MB
软件链接=https://sfdl.360safe.com/360sd/360sd_x64_std_7.0.0.1060.exe
——————————————————————————————————————
软件名称=360浏览器
软件图标=http://img3.downza.cn/mobile/202010/094613-5f8506e5bace3.jpg
软件介绍=360出品的网页浏览软件
软件大小=98 MB
软件链接=https://down.360safe.com/se/360se15.3.6272.64.exe
——————————————————————————————————————
软件名称=WPS办公
软件图标=http://img3.downza.cn/mobile/202109/141759-61516217adff6.jpg
软件介绍=金山公司出品的办公软件
软件大小=155 MB
软件链接=https://official-package.wpscdn.cn/wps/download/WPS_Setup_18912.exe
——————————————————————————————————————
软件名称=永中文字
软件图标=http://img3.downza.cn/mobile/202010/145434-5f87f22aa6c8d.jpg
软件介绍=永中公司出品的办公软件
软件大小=125 MB
软件链接=https://dl.yozosoft.com/yozo/project/file/20240812_094642_267975/9.0.5004.101ZH.S1.exe
——————————————————————————————————————
软件名称=360浏览器
软件图标=http://img3.downza.cn/mobile/202307/100932-64a4d0dc3a703.jpg
软件介绍=360出品的网页浏览软件
软件大小=98 MB
软件链接=https://down.360safe.com/se/360se15.3.6272.64.exe
——————————————————————————————————————
软件名称=WPS办公
软件图标=http://downza1.zz314.njxzwh.com/apple/iphone/video-1099/2017-05-17/a47fc838281615632756dcbf99e21185.png
软件介绍=金山公司出品的办公软件
软件大小=155 MB
软件链接=https://official-package.wpscdn.cn/wps/download/WPS_Setup_18912.exe
——————————————————————————————————————
软件名称=永中文字
软件图标=https://img3.downza.cn/download/202312/101234-657a6492967bb.jpg
软件介绍=永中公司出品的办公软件
软件大小=125 MB
软件链接=https://dl.yozosoft.com/yozo/project/file/20240812_094642_267975/9.0.5004.101ZH.S1.exe
软件名称=苗
软件图标=https://img3.downza.cn/download/202302/151212-63fda94c226df.jpg
软件介绍=360出品的杀毒软件
软件大小=65.2 MB
软件链接=https://sfdl.360safe.com/360sd/360sd_x64_std_7.0.0.1060.exe
——————————————————————————————————————
软件名称=360浏览器
软件图标=https://img3.downza.cn/download/202108/135444-611ca0a4b421d.jpg
软件介绍=360出品的网页浏览软件
软件大小=98 MB
软件链接=https://down.360safe.com/se/360se15.3.6272.64.exe
——————————————————————————————————————
软件名称=WPS办公
软件图标=https://img3.downza.cn/download/202109/183238-6141cbc684960.jpg
软件介绍=金山公司出品的办公软件
软件大小=155 MB
软件链接=https://official-package.wpscdn.cn/wps/download/WPS_Setup_18912.exe
——————————————————————————————————————
软件名称=永中文字
软件图标=https://img3.downza.cn/download/202206/103057-6296cf61b8670.jpg
软件介绍=永中公司出品的办公软件
软件大小=125 MB
软件链接=https://dl.yozosoft.com/yozo/project/file/20240812_094642_267975/9.0.5004.101ZH.S1.exe
——————————————————————————————————————
软件名称=360浏览器
软件图标=https://img.onlinedown.net/download/202408/184132-66b9e6dc71d00.png
软件介绍=360出品的网页浏览软件
软件大小=98 MB
软件链接=https://down.360safe.com/se/360se15.3.6272.64.exe
——————————————————————————————————————
软件名称=WPS办公
软件图标=https://img.onlinedown.net/download/202410/145050-6708caca5238d.jpg
软件介绍=金山公司出品的办公软件
软件大小=155 MB
软件链接=https://official-package.wpscdn.cn/wps/download/WPS_Setup_18912.exe
——————————————————————————————————————
*************/

import inet.http
var t = {fields={"序号","图标","软件名称","软件介绍","软件大小","下载"}};
pattern = "软件名称=(\C+)\r\n软件图标=(\C+)\r\n软件介绍=(\S+)\r\n软件大小=(\d+.?\d+\sMB)\r\n软件链接=(\S+.exe)\r\n"
for s1,s2,s3,s4,s5 in string.gmatch( str, pattern ){
    var tt={};
    tt["序号"]="[@rowindex]";  // 行序号标记是不允许编辑修改的
    tt["图标"]="";
    tt["软件名称"]=s1;
    tt["软件介绍"]=s3;
    tt["软件大小"]=s4;
    tt["下载"]="";
    tt["地址"]=s5;
    tt["图标网址"]=s2;
    ..table.push(t,tt);
}
mainForm.vlist.setHeaderHeight(50);
mainForm.vlist.headerAlign = 1;
mainForm.vlist.setRowHeight(45);
mainForm.vlist.textColor = 0x666666;
mainForm.vlist.selectedTextColor = 0xFF0000;
mainForm.vlist.lineColorH =0xCFCFCF; 
mainForm.vlist.lineWidthV = null; 
mainForm.vlist.setTable(t,,{40,50,150,180,60,60},1);
mainForm.vlist.addImg("正常按钮","https://img0.baidu.com/it/u=455566450,2846820088&fm=253")
mainForm.vlist.addImg("悬停按钮","https://pic.616pic.com/ys_bnew_img/00/23/27/DaOI5NZeGV.jpg")
mainForm.vlist.setColumnType(2,6/*_vlistEx_ColType_OwnerDraw*/ );
mainForm.vlist.setColumnType(6,5/*_vlistEx_ColType_Button*/,1/*0居中1缩放2填满*/,"正常按钮"/*正常图片*/,"悬停按钮"/*鼠标悬停图片*/ )

var mypic = ..raw.buffer(1024*1024*10);
import thread.command

thread.command.instance().resetImg = function(row,imgfile,len){
	if row and imgfile and len { 
		var buf = ..string.left(mypic,len);
		if mainForm.vlist.addImg(imgfile,buf/*图片文件*/,false/*是否替换*/,100/*宽度*/,100/*高度*/) {
			mainForm.vlist.redrawRow(row);
		}
	}
}

import godking.paint
mainForm.vlist.ownerDraw = function (row,col,hdc,x,y,w,h,param,...){
	var url = mainForm.vlist.getCellText(row,"图标网址");
	var buf = mainForm.vlist.getImg(url);
	if buf {
		var  p = godking.paint.fromHdc(hdc);
		p.drawImageF(x,y,w,h,buf/*图片*/,/*透明度或图片属性*/,true/*保持比例*/)
		p.close()
		return ; 
	}
	..gdi.fillRect(hdc,0xEEEEEE,::RECT(x,y,x+w,y+h));
	thread.invoke( 
		function(row,imgfile,mypic){
			import inet.http;
			var pic = inet.http.get(imgfile);
			import thread.command;
			if type.isString(pic) {
				thread.lock("临界区名称");
				..raw.copy(mypic,pic,#pic);
				thread.command.resetImg(row,imgfile,#pic);
				thread.unlock("临界区名称");
			}
		}
	,row,url,..raw.toPointer(mypic));
}

mainForm.vlist.onClick = function(row/*行*/,col/*列*/,x,y){
	mainForm.vlist.disabled = true;
	if col==6 {..win.msgbox(mainForm.vlist.getCellText(row,"地址"))}
	mainForm.vlist.disabled = false;
}

mainForm.vlist.redraw(true);

win.loopMessage();


最新回复 (0)
返回