虚表 —— 隐藏行(简单版)

光庆 3月前 639

因为隐藏行改变了listview内部行号处理机制,需要处理大量细节,如listview内部用于传递行号的各种消息、通知等、封装的各种读取行号的函数等。

所以在工作量很大,一处纰漏可能导致重大bug的情况下,仅对隐藏行功能进行了简单封装,仅部分功能适用,请勿用于复杂操作。

具体哪些功能不适用,请自行测试。

import win.ui;
import godking.vlistEx;
/*DSG{{*/
mainForm = win.form(text="vlistEx - table adapter";right=575;bottom=449)
mainForm.add(
listview={cls="vlistEx";left=8;top=8;right=518;bottom=438;acceptfiles=1;aw=1;db=1;dl=1;dr=1;dt=1;hscroll=1;vscroll=1;z=1}
)
/*}}*/
mainForm.listview.setColumns("索引,内容",300/*列宽*/,/*格式*/);
var tree = {0,1,2,3,3,3,3,2,3,3,1,1,2,3,0,1,2,2,1,1,2,2,3,3,0,1,2,3,3,3,1}
var t = {};
for(i=1;#tree;1){
    ..table.push(t,{string.repeat(tree[i],"    ")++` <img name="E:\图片素材\png\png60_清新网页设计\ (`++(5+i)++`).png",w=18,h=18> [@rowindex]、哈哈哈`,"单元格内容", "[@treeLevel]"=tree[i],"[@treeImg]"="E:\图片素材\png\png32_漂亮图标\image"++(i+10)++".png"})
}
mainForm.listview.onClick = function(row/*行*/,col/*列*/,x,y,buttonIndex/*按钮序号*/){
	var rrow = mainForm.listview.getHideRowRealIndex(row /*虚表当前显示行号*/);
	if col===1 {
		var ishide = mainForm.listview.isUnHideSubRow(rrow);
		mainForm.listview.hideSubRow( rrow /*行号*/,ishide/*是否隐藏*/,true/*是否立即刷新*/);
	}
	win.msgbox("您点击了:第"++rrow++"行,第"++col++"列");	
}
mainForm.listview.setTable(t,false);
mainForm.listview.refreshTree();
mainForm.show();
win.loopMessage();


最新回复 (5)
  • 小肥羊 3月前
    0 引用 2
    这个很复杂啊,但是很炫。
  • zhengbei2 3月前
    0 引用 3
    期待大神---虚表树形控件功能越来越好
  • zhhyit 12天前
    0 引用 4
    光大,列能不能隐藏,比如虚表某列不想展示出来,但也不影响通过 getCellText(row, col)取这列的值
  • 光庆 11天前
    0 引用 5
    zhhyit 光大,列能不能隐藏,比如虚表某列不想展示出来,但也不影响通过 getCellText(row, col)取这列的值

    列宽设为0,不允许拖动列宽

    import win.ui;
    import godking.vlistEx;
    /*DSG{{*/
    mainForm = win.form(text="vlistEx - table adapter";right=575;bottom=449)
    mainForm.add(
    listview={cls="vlistEx";left=8;top=8;right=518;bottom=438;acceptfiles=1;aw=1;db=1;dl=1;dr=1;dt=1;hscroll=1;vscroll=1;z=1}
    )
    /*}}*/
    
    mainForm.listview.setColumns("索引,内容",{300,0}/*列宽*/,/*格式*/);
    var tree = {0,1,2,3,3,3,3,2,3,3,1,1,2,3,0,1,2,2,1,1,2,2,3,3,0,1,2,3,3,3,1}
    var t = {};
    for(i=1;#tree;1){
        ..table.push(t,{string.repeat(tree[i],"    ")++` <img name="E:\图片素材\png\png60_清新网页设计\ (`++(5+i)++`).png",w=18,h=18> [@rowindex]、哈哈哈`,"单元格内容", "[@treeLevel]"=tree[i],"[@treeImg]"="E:\图片素材\png\png32_漂亮图标\image"++(i+10)++".png"})
    }
    mainForm.listview.onClick = function(row/*行*/,col/*列*/,x,y,buttonIndex/*按钮序号*/){
        var rrow = mainForm.listview.getHideRowRealIndex(row /*虚表当前显示行号*/);
        if col===1 {
            var ishide = mainForm.listview.isUnHideSubRow(rrow);
            mainForm.listview.hideSubRow( rrow /*行号*/,ishide/*是否隐藏*/,true/*是否立即刷新*/);
        }
        win.msgbox("您点击了:第"++rrow++"行,第"++col++"列");    
    }
    mainForm.listview.setTable(t,false);
    mainForm.listview.onResizeCol = {false,2}; 
    mainForm.listview.refreshTree();
    mainForm.show();
    win.loopMessage();


  • zhhyit 9天前
    0 引用 6
    光庆 列宽设为0,不允许拖动列宽import&nbsp;win.ui; import&nbsp;godking.vlistEx; /*DSG{{*/ mainForm&nbsp ...
    好滴,多谢光大,没想到可以这样用。
返回