虚表 —— 下拉框过滤函数

光庆 11月前 1135

Code AardioLine:51复制
  • 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.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
    • import win.ui;
    • import godking.comboboxEx;
    • import godking.vlistEx;
    • /*DSG{{*/
    • mainForm = win.form(text="vlistEx - table adapter";right=607;bottom=319;border="thin")
    • mainForm.add(
    • listview={cls="vlistEx";left=16;top=24;right=304;bottom=304;acceptfiles=1;aw=1;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;vscroll=1;z=1};
    • vlistEx={cls="vlistEx";left=320;top=24;right=592;bottom=304;acceptfiles=1;aw=1;db=1;dl=1;dr=1;dt=1;edge=1;z=2}
    • )
    • /*}}*/
    • //======================= 创建虚表 =======================
    • mainForm.listview.setColumns("下拉列表框(双击下拉)")
    • mainForm.vlistEx.setColumns("下拉列表框(双击下拉)")
    • var t = { {"张三"}, {"李四"}, {"王五"}, {"SSS"}, {"AAA"}}
    • mainForm.listview.setTable(t,false/*列标题*/,/*列宽*/,/*0左1中2右*/,/*字典转为数组*/,/*字符串转为Utf8*/,true/*是否克隆新表*/)
    • mainForm.vlistEx.setTable(t,false/*列标题*/,/*列宽*/,/*0左1中2右*/,/*字典转为数组*/,/*字符串转为Utf8*/,true/*是否克隆新表*/)
    • //======================= 功能演示 =======================
    • mainForm.listview.setColumnType(1, 1/*_vlistEx_ColType_ComboBox*/, true/*显示小箭头*/, 0xFF00FF/*箭头颜色*/ )
    • mainForm.listview.setComboBoxItems({"张三", "李四", "王五", "SSS", "AAA"}); //设置下拉列表项目
    • mainForm.listview.onEditBegin = true; //允许编辑才能下拉
    • mainForm.listview.editOnClick = true; //单击编辑
    • mainForm.vlistEx.setColumnType(1, 1/*_vlistEx_ColType_ComboBox*/, true/*显示小箭头*/, 0xFF00FF/*箭头颜色*/ )
    • mainForm.vlistEx.setComboBoxItems({"张三", "李四", "王五", "SSS", "AAA"}); //设置下拉列表项目
    • mainForm.vlistEx.onEditBegin = true; //允许编辑才能下拉
    • mainForm.vlistEx.editOnClick = true; //单击编辑
    • //======================= 下拉框筛选功能演示 =======================
    • mainForm.listview.comboboxFilter = function(row,col,text){
    • /*** 下拉框单元格筛选函数。返回值:
    • 1、true:以【下拉框】模式进行编辑;
    • 2、0: 转为以【编辑框】模式编辑;/*_vlistEx_ColType_Text*/
    • 3falsenull:禁止编辑;
    • ***/
    • return ..string.find(text,":"):0;//有汉字的下拉框,没汉字的编辑框。
    • }
    • mainForm.vlistEx.comboboxFilter = function(row,col,text){
    • /*** 下拉框单元格筛选函数。返回值:
    • 1、true:以【下拉框】模式进行编辑;
    • 2、0: 转为以【编辑框】模式编辑;/*_vlistEx_ColType_Text*/
    • 3falsenull:禁止编辑;
    • ***/
    • return row%2:false;//奇数行下拉框,偶数行禁止编辑。
    • }
    • mainForm.show();
    • win.loopMessage();


    最新回复 (7)
    • mndsoft 11月前
      0 引用 2

      大师,能否改进同一列同时支持下拉框,也支持文字编辑,类似aardio 属性面板表格。


      还有那个红色小箭头换成下拉框图标更直观, ,这样虚表又有新功能了,如下视图:




    • 光庆 11月前
      0 引用 3
      mndsoft 大师,能否改进同一列同时支持下拉框,也支持文字编辑,类似aardio 熟悉面板表格。还有那个红色小箭头换成下拉框图标更直观, ,这样虚表又有新功能了,如下视图:
      已经支持了,看例程
    • mndsoft 11月前
      0 引用 4
      谢谢大师,我看了,貌似这个同一列绑定后,同一列的其他单元格需要编辑的话如何处理?如图一,第2列绑定下拉框后,下面有一些单元格需要修改。
    • 光庆 11月前
      0 引用 5

      修改返回值。false改为0,或直接把:false去掉即可。看函数说明里面有。

    • mndsoft 11月前
      0 引用 6
      谢谢,已搞定。 再提个奢侈的需求:目前貌似只能绑定一组内容下拉框,能否绑定多个内容的下拉框?这样就可以做属性表格了 :-)
    • 光庆 11月前
      0 引用 7
      mndsoft 谢谢,已搞定。 再提个奢侈的需求:目前貌似只能绑定一组内容下拉框,能否绑定多个内容的下拉框?这样就可以做属性表格了 :-)

      内容没有固定的绑定。可以在弹出下拉框之前的事件中,随时改变下拉框内容。

      Code AardioLine:4复制
    • 1.
    • 2.
    • 3.
    • 4.
      • mainForm.listview.onComboBoxDropDown = function(comboBox,row,col){
      • /*下拉列表框即将弹出。参数:下拉列表框或高级下拉框组件、虚表行号、虚表列号*/
      • owner.setComboBoxItems(items,0/*可见项数量*/,null/*图片组*/);
      • }


    • mndsoft 11月前
      0 引用 8

      ok,可以了,感谢,贴一下供其他需要的朋友参考。

      可以指定某行,列绑定,可以绑定下拉框不同内容,有点类型 属性表格。

      佩服大师虚表的强大


      Code AardioLine:78复制
    • 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.
    • 42.
    • 43.
    • 44.
    • 45.
    • 46.
    • 47.
    • 48.
    • 49.
    • 50.
    • 51.
    • 52.
    • 53.
    • 54.
    • 55.
    • 56.
    • 57.
    • 58.
    • 59.
    • 60.
    • 61.
    • 62.
    • 63.
    • 64.
    • 65.
    • 66.
    • 67.
    • 68.
    • 69.
    • 70.
    • 71.
    • 72.
    • 73.
    • 74.
    • 75.
    • 76.
    • 77.
    • 78.
      • import win.ui;
      • import godking.comboboxEx;
      • import godking.vlistEx;
      • /*DSG{{*/
      • mainForm = win.form(text="vListEX修改文字";right=607;bottom=319;border="thin")
      • mainForm.add(
      • listview={cls="vlistEx";left=16;top=24;right=304;bottom=304;acceptfiles=1;aw=1;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;vscroll=1;z=1};
      • vlistEx={cls="vlistEx";left=320;top=24;right=592;bottom=304;acceptfiles=1;aw=1;db=1;dl=1;dr=1;dt=1;edge=1;z=2}
      • )
      • /*}}*/
      • //======================= 创建虚表 =======================
      • mainForm.listview.setColumns({"序号序号序号","下拉列表框(双击下拉"})
      • mainForm.vlistEx.setColumns("下拉列表框(双击下拉)")
      • var t = { {"张三"}, {"李四"}, {"王五"}, {"SSS"}, {"AAA"}}
      • var tt = {
      • {"1","01"}
      • {"2","02"}
      • {"3","03"}
      • {"4","04"}
      • }
      • mainForm.listview.setTable(tt,false/*列标题*/,/*列宽*/,/*0左1中2右*/,/*字典转为数组*/,/*字符串转为Utf8*/,true/*是否克隆新表*/)
      • mainForm.vlistEx.setTable(t,false/*列标题*/,/*列宽*/,/*0左1中2右*/,/*字典转为数组*/,/*字符串转为Utf8*/,true/*是否克隆新表*/)
      • //======================= 功能演示 =======================
      • mainForm.listview.setColumnType(2, 1/*列,0,文本,1,下拉_vlistEx_ColType_ComboBox*/, true/*显示小箭头*/, 0xFF00FF/*箭头颜色*/ )
      • mainForm.listview.setComboBoxItems({"01", "02", "03", "08"}); //设置下拉列表项目
      • mainForm.listview.onEditBegin ={true,2}; // true; //允许编辑才能下拉
      • mainForm.listview.editOnClick = true; //单击编辑
      • mainForm.vlistEx.setColumnType(1, 1/*_vlistEx_ColType_ComboBox*/, true/*显示小箭头*/, 0xFF00FF/*箭头颜色*/ )
      • mainForm.vlistEx.setComboBoxItems({"张三", "李四", "王五", "SSS", "AAA"}); //设置下拉列表项目
      • mainForm.vlistEx.onEditBegin = true; //允许编辑才能下拉
      • mainForm.vlistEx.editOnClick = true; //单击编辑
      • mainForm.listview.onComboBoxDropDown = function(comboBox,row,col){
      • /*下拉列表框即将弹出。参数:下拉列表框或高级下拉框组件、虚表行号、虚表列号*/
      • if row ===2 {
      • items ={"01", "02", "03", "04", "08"}
      • }
      • if row ===3 {
      • items ={"8F", "9F", "2F", "00", "01"}
      • }
      • owner.setComboBoxItems(items,0/*可见项数量*/,null/*图片组*/);
      • }
      • //======================= 下拉框筛选功能演示 =======================
      • mainForm.listview.comboboxFilter = function(row,col,text){
      • /*** 下拉框单元格筛选函数。返回值:
      • 1、true:以【下拉框】模式进行编辑;
      • 2、0: 转为以【编辑框】模式编辑;/*_vlistEx_ColType_Text*/
      • 3falsenull:禁止编辑;
      • ***/
      • if row =1 or row =4 {
      • return 0 //..string.find(text,":"):0; //有汉字的下拉框,没汉字的编辑框。
      • }
      • if row === 2 or row === 3{
      • return row
      • }
      • }
      • mainForm.vlistEx.comboboxFilter = function(row,col,text){
      • /*** 下拉框单元格筛选函数。返回值:
      • 1、true:以【下拉框】模式进行编辑;
      • 2、0: 转为以【编辑框】模式编辑;/*_vlistEx_ColType_Text*/
      • 3falsenull:禁止编辑;
      • ***/
      • return row%2:false;//奇数行下拉框,偶数行禁止编辑。
      • }
      • mainForm.show();
      • win.loopMessage();


    返回