请下载新版虚表:增加 _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();
代码及素材,可下载附件。