虚表 —— 虚表库简介

光庆 2023-7-26 1880

关于虚表:

1、虚表是一个特殊的listview,一些特性可以通用。

2、虚表并不是将所有数据都加在到列表中,而是随用随取。

3、虚表对显示大数据非常适合,几百万条数据毫无压力。

4、数据量很大的情况下,虚表占用内存也非常少,加载速度也非常快。而传统方式下的listview 占内存非常多,加载速度非常慢。

5、数据在内存中处理速度是很快的,我们看到的慢,一般是加载到组件中并显示出来这段时间太长。

下载虚表库文件,解压到:aardio/lib/godking/ 目录即可

使用方法:

import godking.vlistEx  //引用库
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
vlist={cls="vlistEx";text="自定义控件";left=10;top=10;right=750;bottom=350;z=1}  //创建一个custom组件,将类名改为“vlistEx”
)
winform.vlist.setTable();   // 此处即可通过组件名称进行操作


最新回复 (11)
  • 阿甘 2023-8-2
    0 引用 2
    膜拜大佬
  • tanzh 2023-8-2
    0 引用 3
    setColumnMultiline(__, true) 向大佬学习
  • 光庆 2023-8-2
    0 引用 4
    虚表增强版 V4.2.8 增加支持多行文本功能 注意:设置为多行文本的单元格,不支持图片。如果有图片连接,会当做文本处理。 使用方法: 1、指定某列为多行文本 setColumnMultiline(1,true) ; 2、全部列为多行文本 setColumnMultiline(,true) ;
  • 光庆 2023-8-3
    0 引用 5
    4.2.9 列多行文本模式支持垂直对齐方式设置,可以顶部对齐、居中对齐、底部对齐
  • 阿甘 2023-8-26
    0 引用 6

    使用thread.invoke执行,vlist的checkbox没有显示出来,不清楚原因[尴尬]

    	thread.invoke( 
    		function(winform){
    			import godking.libxl;
    			import godking.vlistEx;
    			book = godking.libxl(winform.edit.text,);
    			var t = { fields={"Sheet页","市场","国家"} };
    			for(i=1;#book.getSheetNames();1){
        			var tt={}
    				tt["Sheet页"]=book.getSheetNames()[i];
    				tt["市场"]=math.random(1000,9999);
    				tt["国家"]=math.random(10,99);
    				..table.push(t,tt);
    			}
    			winform.listview.checkBox.show = true;
    			winform.listview.setHeaderHeight(40);
    			winform.listview.headerAlign = 1;
    			winform.listview.headerBkcolor = 0xDDEEFF;
    			winform.listview.headerLineColor = 0x559999;
    			
    			winform.listview.setTable(t,/*标题或数组*/,{200,100,100}/*列宽或数组*/,{0,1,0},/*字典转为数组*/,/*字符串转为Utf8*/)
    			winform.listview.fillParent(3)
    		}, winform
    	)


    不放在thread.invoke执行的话,checkbox能显示出来:

  • tanzh 2023-8-26
    1 引用 7

    winform.listview.checkBox.show = true; //初始化设置 

    thread.invoke( ... 


  • 小光芒 2023-8-26
    0 引用 8
    此楼层已删除
  • 阿甘 2023-8-26
    0 引用 9
    tanzh winform.listview.checkBox.show = true; //初始化设置  thread.invoke( ... 
    问题解决了,感谢大哥[抱拳]!
  • Xmzzz 2月前
    0 引用 10
    import win.ui;
    import godking.vlistEx;
    import console;
    console.open();
    
    /*DSG{{*/
    winform = win.form(text="vlistEx - table adapter";right=849;bottom=578;maximize=0)
    winform.add(
    vlist={cls="vlistEx";left=8;top=8;right=620;bottom=500;z=1}
    btn_test={cls="button";text="点击我";left=8;top=520;right=108;bottom=540;z=2};
    btn_test2={cls="button";text="删除";left=118;top=520;right=208;bottom=540;z=2};
    )
    /*}}*/
    
    winform.vlist.setColumns({"序号","大小(M)"},{60,-1},{1,0})
    winform.vlist.font = ::LOGFONT(name = "宋体"; point = 10; color = 0xFF0000) /*【属性】项目文本字体*/
    
    var btn_command = function(winform){
    	thread.invoke( 
    		function(winform){
    			for(i=1;50;1){
    				winform.vlist.addRow("[@rowindex]",i)				
    			}
    		},winform
    	)
    }
    
    winform.vlist.onItemChanged = function(row){
    	console.log( "add row: ", row )
    }
    
    winform.btn_test.oncommand = function(id, event) {
    	btn_command(winform)
    }
    
    winform.btn_test2.oncommand = function(id, event) {
    	winform.vlist.delRow(1)
    }
    
    winform.show();
    win.loopMessage();

    请教下大佬,使用虚表时,怎么监听虚表有新增、减少值。我用 onItemChanged 在新增、减少值时没有监听到事件

  • 光庆 2月前
    0 引用 11
    Xmzzz import win.ui; import godking.vlistEx; import console; console.open(); ...
    可以拦截虚表的0x102F/*_LVM_SETITEMCOUNT*/消息,判断是否新增减少。
  • Xmzzz 2月前
    0 引用 12
    光庆 可以拦截虚表的0x102F/*_LVM_SETITEMCOUNT*/消息,判断是否新增减少。
    问题解决了,感谢光庆大佬
返回