虚表 —— 图片按钮

光庆 4小时前 60

请下载新版虚表:增加 _vlistEx_ColType_Button 图片按钮类型,增加 onMouseMove() 事件。

效果如下:

import win.ui;
import godking.vlistEx;
import godking.paint;
/*DSG{{*/
mainForm = win.form(text="vlistEx - table adapter";right=607;bottom=463;border="thin")
mainForm.add(
listview={cls="vlistEx";left=16;top=16;right=595;bottom=448;acceptfiles=1;aw=1;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;vscroll=1;z=1}
)
/*}}*/
mainForm.listview.headerAlign = 1;
mainForm.listview.setRowHeight(50);
mainForm.listview.addImg("正常图片"/*图片名称*/,"/a1.png"/*图片文件名或数据*/,false/*是否替换*/,/*宽度*/,/*高度*/);
mainForm.listview.addImg("鼠标悬停图片"/*图片名称*/,"/a2.png"/*图片文件名或数据*/,false/*是否替换*/,/*宽度*/,/*高度*/);
mainForm.listview.setColumns({"图片按钮演示"});
var t = {
        {"/b1.png|/b2.png"} //指定本地文件名
        {"正常图片|鼠标悬停图片"} //指定虚表图片名称
        {""} //使用列默认按钮图片
        {"/off.png|/off2.png",false} // 可切换按钮
        {"/off.png|/off2.png",false} // 可切换按钮
        {'@ownerDrawImg'} //使用自绘图片按钮
    }
mainForm.listview.setTable(t,false);
mainForm.listview.setColumnType( 1,5/*_vlistEx_ColType_Button*/,1/*0居中1缩放2填满*/,"/c1.png" /*正常图片*/,"/c2.png" /*鼠标悬停图片*/ );
//鼠标点击按钮事件
mainForm.listview.onClick = function(row/*行*/,col/*列*/,x,y){
	/*鼠标左键点击项目事件。x、y为鼠标相对于虚表的坐标*/
	if row>=4 and row<=5{
		mainForm.listview.dataAdapter._dataSource[row][2] =! mainForm.listview.dataAdapter._dataSource[row][2];
		if mainForm.listview.dataAdapter._dataSource[row][2]{
			mainForm.listview.dataAdapter._dataSource[row][1]="/on.png|/on2.png"
		} else {
			mainForm.listview.dataAdapter._dataSource[row][1]="/off.png|/off2.png"
		}
		mainForm.listview.redrawRow(row);
	} else {
		if row and col ..win.msgbox("您点击了第"++row++"行的按钮!");
	}
}
//自绘图片按钮
mainForm.listview.ownerDrawImg = function (row,col,hdc,x,y,w,h,param){
	w /= 2;
	x += w/2;
	var p = godking.paint.fromHdc(hdc);
	if param {
		p.fillRoundRectF(x,y/*y*/,w/*宽度*/,h/*高度*/,25,0xFFFF0000);
		p.drawImageF(x,y,h,h,"/a1.png",/*透明度或图片属性*/,/*保持比例*/);
	} else {
		p.fillRoundRectF(x,y/*y*/,w/*宽度*/,h/*高度*/,25,0xFF0000FF);
		p.drawImageF(x,y,h,h,"/a2.png",/*透明度或图片属性*/,/*保持比例*/);
	}
	p.drawTextF(x,y,w,h,"自绘按钮",::LOGFONT(name="宋体";h=16;color=0xFFFFFFFF;brush=null),0/*格式*/,1/*水平*/,1/*垂直*/);
	p.close();
}
mainForm.show();
win.loopMessage();

代码及素材,可下载附件。

最新回复 (0)
返回