建一个选项卡窗体,在窗体上再放一个plus,会把“aaa.txt”的数据逐行读入plus的title标签上,一行数据对应一个title。想实现:1、鼠标移入plus控件内,滚动鼠标中轮,plus内的title标签项随之上下移动。2、或者,前面的实现不了,用滚动条也行。但是发现,两个都实现不了,再怎么滚动,里面的title项根本不为所动。请阿甘老师再帮我指点指点。谢谢!
import win;
import win.ui;
import mouse;
import fonts.fontAwesome
/*DSG{{*/
var winform = win.form(text="选项卡控件演示";right=663;bottom=387)
winform.add(
tab={cls="tab";left=199;top=16;right=645;bottom=360;db=1;dl=1;dr=1;dt=1;z=1}
)
/*}}*/
//添加一个子页面
var frmTabPage1 = winform.tab.add( text="选项1"; bottom=140;right=325 )
frmTabPage1.add(
plusControl={cls="plus";left=195;top=5;right=589;bottom=451;autohscroll=false;autovscroll=false;db=1;dl=1;dr=1;dt=1;edge=1;forecolor=16777215;frame=1;notify=1;z=1};
scrollbar={cls="scrollbar";left=10;top=32;right=94;bottom=343;edge=1;z=2}
)
itemModel = {
{ // 项目背景
type="rect",
click=true;
rectf={x=0;y=3;width=0;height=0},//y可以调节标签之间的间隙
width=1;
color = 0x88FFFFFF;
fillcolor=0xFFBAFFFF,
itemselectedfillcolor=0xFFCdB99c;
disabledfillcolor=0xFFEEEEEE,
},
{
name="title",
type="text",
AntiAlias=true,
rectf={x=15;y=15;width=-10;height=70},
font={name="text",point=11,color=0xFF5d492c},
itemhoverfont={name="text",point=12,color=0xFFFF0000},//鼠标划过时会显示文字
align=0
},
}
itemList = {}
for line in io.lines("aaa.txt"){
a,b = table.unpack(string.split(line," "))
b = b or ""
table.push(itemList,{
title = a+" "+b,
a = a,
})
}
frmTabPage1.plusControl.title = itemList ; // 把itemList变量的内容赋值给frmTabPage1的title
import godking.customPlus
var p = godking.customPlus(frmTabPage1.plusControl/*plus*/,itemModel,itemList,{
itemWidth=582, /*项目宽度,包括title文字的填满的宽度*/
itemHeight=110, /*项目高度*/
autoSizeRow=false, /*自动根据项目行数及plus高度调整项目高度*/
autoSizeCol=true, /*自动根据项目列数及plus宽度调整项目宽度*/
colnum=1, /*项目列数,为0则根据项目宽度和plus宽度自动计算*/
rownum=0, /*项目行数,为0则根据项目高度和plus高度自动计算*/
padLeft=0, /*plus左边空白距离*/
padTop=0, /*plus顶边空白距离*/
padRight=0, /*plus右边空白距离*/
padBottom=0, /*plus底边空白距离*/
})
// 使用鼠标滚轮滚动 plus 内容
frmTabPage1.plusControl.onmouseenter = function(){
p.bindScrollbar(frmTabPage1.scrollbar);
mouse.mb.roll(10, function(delta){
p.scroll(delta);
});
}
// 使用滚动条滚动 plus 内容
frmTabPage1.plusControl.oncommand = function(id,event,pos){
if( event == 5/*_SB_ENDSCROLL*/ ){
p.bindScrollbar(frmTabPage1.scrollbar);
}
}
winform.show(true)
win.loopMessage();