虚表 —— 虚表库简介

光庆 2023-7-26 2785

关于虚表:

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

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

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

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

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

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

使用方法:

Code aardioLine:7复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
    • 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没有显示出来,不清楚原因[尴尬]

      Code AardioLine:23复制
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
    • 18.
    • 19.
    • 20.
    • 21.
    • 22.
    • 23.
      • 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 10月前
      0 引用 10
      Code AardioLine:41复制
    • 1.
    • 2.
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.
    • 8.
    • 9.
    • 10.
    • 11.
    • 12.
    • 13.
    • 14.
    • 15.
    • 16.
    • 17.
    • 18.
    • 19.
    • 20.
    • 21.
    • 22.
    • 23.
    • 24.
    • 25.
    • 26.
    • 27.
    • 28.
    • 29.
    • 30.
    • 31.
    • 32.
    • 33.
    • 34.
    • 35.
    • 36.
    • 37.
    • 38.
    • 39.
    • 40.
    • 41.
      • 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 在新增、减少值时没有监听到事件

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