当前位置: 首页 > article >正文

aardio - 虚表 —— 两个虚表之间互相拖动交换数据

插入到虚表末尾的方法: 

import win.ui;
import godking.vlistEx;
/*DSG{{*/
mainForm = win.form(text="vlistEx - table adapter";right=849;bottom=578;border="thin")
mainForm.add(
radiobutton={cls="radiobutton";text="移动";left=768;top=8;right=848;bottom=40;checked=1;z=3};
radiobutton2={cls="radiobutton";text="复制";left=768;top=40;right=848;bottom=72;z=4};
vlist={cls="vlistEx";left=10;top=10;right=380;bottom=570;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=1};
vlistEx={cls="vlistEx";left=392;top=8;right=762;bottom=568;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=2}
)
/*}}*/

mainForm.show();
var t = { fields={"序号","姓名","年龄","地址","身份证"} };
mainForm.vlistEx.setTable(..table.clone(t),,,1);
mainForm.vlistEx.onDragRow = true;
mainForm.vlistEx.onDragRowEnd = function(draglist/*要拖动的行号数组*/,dragtorow/*拖到的目标行号*/){
    import winex;
    import mouse;
    if ..winex.fromPoint(..mouse.getPos()) === mainForm.vlist.hwnd {
        for(i=1;#draglist;1){
            if mainForm.radiobutton.checked {
                mainForm.vlist.addRow(mainForm.vlistEx.getRowData(draglist[i]));
            } else {
                mainForm.vlist.addRow(..table.clone(mainForm.vlistEx.getRowData(draglist[i])));
            }
        }
        if mainForm.radiobutton.checked mainForm.vlistEx.delRow(draglist);
        mainForm.vlistEx.setSelected( /*行号*/);
        return ; 
    }
    return true; 
}

for(i=1;10;1){
    var tt={};
    tt["序号"]="[@rowindex]";
    tt["姓名"]=math.random(1000,9999)+"姓名";
    tt["年龄"]=math.random(10,99);
    tt["地址"]=math.random(1,9999999)+"地址";
    tt["身份证"]=math.random(1000,9999)+"身份证";
    ..table.push(t,tt);
}

mainForm.vlist.setTable(t,,,1);
mainForm.vlist.onDragRow = true;
mainForm.vlist.onDragRowEnd = function(draglist/*要拖动的行号数组*/,dragtorow/*拖到的目标行号*/){
    import winex;
    import mouse;
    if ..winex.fromPoint(..mouse.getPos()) === mainForm.vlistEx.hwnd {
        for(i=1;#draglist;1){
            if mainForm.radiobutton.checked {
                mainForm.vlistEx.addRow(mainForm.vlist.getRowData(draglist[i]));
            } else {
                mainForm.vlistEx.addRow(..table.clone(mainForm.vlist.getRowData(draglist[i])));
            }
        }
        if mainForm.radiobutton.checked mainForm.vlist.delRow(draglist);
        mainForm.vlist.setSelected( /*行号*/);
        return ; 
    }
    return true; 
}

win.loopMessage();

 插入到鼠标所在行位置的方法:

import win.ui;
import godking.vlistEx;
/*DSG{{*/
mainForm = win.form(text="vlistEx - table adapter";right=849;bottom=578;border="thin")
mainForm.add(
radiobutton={cls="radiobutton";text="移动";left=768;top=8;right=848;bottom=40;checked=1;z=3};
radiobutton2={cls="radiobutton";text="复制";left=768;top=40;right=848;bottom=72;z=4};
vlist={cls="vlistEx";left=10;top=10;right=380;bottom=570;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=1};
vlistEx={cls="vlistEx";left=392;top=8;right=762;bottom=568;db=1;dl=1;dr=1;dt=1;edge=1;transparent=1;z=2}
)
/*}}*/
import winex;
import mouse;
mainForm.show();
var t = { fields={"序号","姓名","年龄","地址","身份证"} };
//设置右侧虚表
mainForm.vlistEx.setTable(..table.clone(t),,,1);
mainForm.vlistEx.onDragRow = true;
mainForm.vlistEx.onDragRowEnd = function(draglist/*要拖动的行号数组*/,dragtorow/*拖到的目标行号*/){
    var x,y = ..mouse.getPos();
    if ..winex.fromPoint(x,y) === mainForm.vlist.hwnd {
        var row = mainForm.vlist.hitTest(x,y,true):(mainForm.vlist.count+1);
        for(i=#draglist;1;-1){
            if mainForm.radiobutton.checked {
                mainForm.vlist.insertRow(row,mainForm.vlistEx.getRowData(draglist[i]));
            } else {
                mainForm.vlist.insertRow(row,..table.clone(mainForm.vlistEx.getRowData(draglist[i])));
            }
        }
        if mainForm.radiobutton.checked mainForm.vlistEx.delRow(draglist);
        mainForm.vlistEx.setSelected( /*行号*/);
    }
    return true; 
}
//生成左侧虚表初始数据
for(i=1;10;1){
    var tt={};
    tt["序号"]="[@rowindex]";
    tt["姓名"]=math.random(1000,9999)+"姓名";
    tt["年龄"]=math.random(10,99);
    tt["地址"]=math.random(1,9999999)+"地址";
    tt["身份证"]=math.random(1000,9999)+"身份证";
    ..table.push(t,tt);
}
//设置左侧虚表
mainForm.vlist.setTable(t,,,1);
mainForm.vlist.onDragRow = true;
mainForm.vlist.onDragRowEnd = function(draglist/*要拖动的行号数组*/,dragtorow/*拖到的目标行号*/){
    var x,y = ..mouse.getPos();
    if ..winex.fromPoint(x,y) === mainForm.vlistEx.hwnd {
        var row = mainForm.vlistEx.hitTest(x,y,true):(mainForm.vlistEx.count+1);
        for(i=#draglist;1;-1){
            if mainForm.radiobutton.checked {
                mainForm.vlistEx.insertRow(row,mainForm.vlist.getRowData(draglist[i]));
            } else {
                mainForm.vlistEx.insertRow(row,..table.clone(mainForm.vlist.getRowData(draglist[i])));
            }
        }
        if mainForm.radiobutton.checked mainForm.vlist.delRow(draglist);
        mainForm.vlist.setSelected( /*行号*/);
    }
    return true; 
}

win.loopMessage();


http://www.kler.cn/a/574065.html

相关文章:

  • 走进聚类的世界:用日常例子解释复杂的算法概念
  • npm install 报错 no such file or directory 的解决方法
  • GoLang的select是什么?在什么时候场景下用
  • Unity多Pass渲染与GPU Instancing深度优化指南
  • OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()
  • 浅谈Manus智能体与其他AI助手(如ChatGPT、Claude等)的优势
  • 【C++进阶学习】第一讲——继承(下)---深入挖掘继承的奥秘
  • JS—组成:2分钟掌握什么是ECMAScript操作,什么是DOM操作,什么是BOM操作
  • 利用Python爬虫获取17网(17zwd)商品详情:实战指南
  • MySQL学习笔记(3)InnoDB存储引擎对MVCC的实现
  • 计算机毕业设计SpringBoot+Vue.js青年公寓服务平台(源码+文档+PPT+讲解)
  • 深度学习中TorchScript原理、作用浅析(Trace/Script)
  • MySQL事务,函数,性能,索引
  • 【GoTeams】-2:项目基础搭建(下)
  • BGP服务器主要是指什么?
  • 硬件学习【1】74HC165D-并行信号输入-串行输出
  • VSCode 配置优化指南:打造极致高效的前端开发环境
  • 系统架构设计师—软件工程基础篇—软件开发方法
  • 【无标题】养老护理初级考题抽取——2大题抽1+7小题抽2-共有432种可能。
  • 【LeetCode 热题 100】438. 找到字符串中所有字母异位词 | python 【中等】