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

news2025/3/13 10:17:52

插入到虚表末尾的方法: 

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.coloradmin.cn/o/2311363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一:goland安装

GOPROXY (会话临时性),长久的可以在配置文件中配置 go env -w GOPROXYhttps://goproxy.cn,direct 长久的,在~/.bashrc文件中添加: export GOPROXYhttps://goproxy.cn,direct ----&#xff0d…

Dockerfile 深入浅出:从基础到进阶全解析

Dockerfile 深入浅出:从基础到进阶全解析 各位同学,大家好!欢迎来到今天的 Dockerfile 课程。Docker 技术在当今的软件开发和部署领域可以说是非常热门,而 Dockerfile 作为构建 Docker 镜像的关键文件,掌握它对于我们…

Mybatis中的分页操作,如何使用PageHelper进行分页,以及Spring Boot整合Mybatis Plus分页

目的: 学会分页功能,学会分页方法 场景: 将下面的数据进行分页: 文章目录 Mybatis 单独使用分页(没有整合)1. PageHelper 插件 Spring Boot 整合 Mybatis Plus 使用分页1. selectPage 方法实现分页2. selec…

【网络安全】API安全防护完整指南

文章目录 API安全为什么 API 安全性重要?API 安全性与通用应用程序安全性的区别传统 Web 安全的主要特征API 安全的关键特征OWASP API 前 10 大安全威胁API1:2019 - 破坏对象级授权(Broken Object-Level Authorization)API2:2019 - 破坏用户身份验证(Broken User Authentic…

Docker 学习(四)——Dockerfile 创建镜像

Dockerfile是一个文本格式的配置文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了Dockerfile,当我们需要定制自己额外的需求时,只需在D…

本地部署 DeepSeek:从 Ollama 配置到 Spring Boot 集成

前言 随着人工智能技术的迅猛发展,越来越多的开发者希望在本地环境中部署和调用 AI 模型,以满足特定的业务需求。本文将详细介绍如何在本地环境中使用 Ollama 配置 DeepSeek 模型,并在 IntelliJ IDEA 中创建一个 Spring Boot 项目来调用该模型…

算法之 前缀和

文章目录 前缀和基础3427.变长子数组求和 前缀和与哈希表1524.和为奇数的子数组数目 距离和1685.有序数组中绝对值之和 前缀异或和1177.构建回文串检测 其他一维前缀和1310.子数组异或查询 二维前缀和1314.矩阵区域和 前缀和,就是定义pre[i] 为nums的前i个元素的和值…

机器视觉运动控制一体机在天地盖同步跟随贴合解决方案

市场应用背景 纸盒天地盖是一种包装形式,广泛应用于消费电子、食品礼盒、奢侈品及化妆品等领域。其采用高强度纸板,经过预组装处理,结构坚固稳定,能有效保护产品并提升品牌形象。随着包装行业快速发展,市场对天地盖的…

B站文生视频模型工程实践

1.前言 近年来,AI 内容生成(AIGC)领域的快速发展令人雀跃,OpenAI 在 2023 年初推出大型语言模型(LLM)GPT-4 受到了学术界和工业界的极大关注。OpenAI 随后在 2024 年初推出文生视频(T2V&#xf…

嵌入式开发:傅里叶变换(5):基于STM32,实现CMSIS中的DSP库

目录 步骤 1:准备工作 步骤 2:创建 Keil 项目,并配置工程 步骤 3:在MDK工程上添加 CMSIS-DSP 库 步骤 5:编写代码 步骤 6:配置时钟和优化 步骤 7:调试与验证 步骤 8:优化和调…

【人工智能】GPT-4 vs DeepSeek-R1:谁主导了2025年的AI技术竞争?

前言 2025年,人工智能技术将迎来更加激烈的竞争。随着OpenAI的GPT-4和中国初创公司DeepSeek的DeepSeek-R1在全球范围内崭露头角,AI技术的竞争格局开始发生变化。这篇文章将详细对比这两款AI模型,从技术背景、应用领域、性能、成本效益等多个方…

【Python项目】基于深度学习的车辆特征分析系统

【Python项目】基于深度学习的车辆特征分析系统 技术简介:采用Python技术、MySQL数据库、卷积神经网络(CNN)等实现。 系统简介:该系统基于深度学习技术,特别是卷积神经网络(CNN),用…

【江科大STM32】TIM输入捕获模式PWMI模式测频率

一、输入捕获测频率 接线图: 测信号的输入引脚为PA6,信号从PA6进来,待测的PWM信号也是STM32自己生成的,输出引脚是PA0,所以接线这里直接用一根线将PA0引到PA6就可以了。 如果有信号发生器的话,也可以设置成…

K8S学习之基础十六:k8s中Deployment更新策略

滚动更新 滚动更新是一种自动化程度较高的发布方式、用户体验比较平滑、是目前成熟型技术组织采用的主流发布方式,一次滚动发布一般有若干发布批次组成,每批的数量一般都是可配置的,可通过发布模板定义,例如第一批10%&#xff0c…

EtherNet/IP转Modbus解析基于网关模块的罗克韦尔PLC与Modbus上位机协议转换通讯案例

在工业自动化控制系统中,常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中,客户现场采用了 AB PLC,但需要控制的变频器仅支持 Modbus 协议。为了实现 AB PLC 对变频器的有效控制与监控,引入了捷米特 JM-EIP-RTU 网…

Devart dbForge Studio for MySQL Enterprise 9.0.338高效数据库管理工具

Devart dbForge Studio for MySQL Enterprise 9.0.338 是一款功能强大的 MySQL 数据库管理工具,专为数据库开发人员和管理员设计。它提供了丰富的功能,帮助用户更高效地管理、开发和维护 MySQL 数据库 Devart dbForge Studio for MySQL Enterprise 9.0.…

STM32-USART串口数据包

一:HEX数据包发送 1.为了收发数据包,先定义两个缓存区的数组 ,这4个数据只存储发送或者接收的载荷数据,包头和包尾不存 uint8_t Serial_TxPacket[4]; uint8_t Serial_RxPacket[4]; uint8_t Serial_RxFlag;//接收一个数据包就置F…

轻闪PDF(Windows傲软PDF编辑软件)2.15.2中文安装版

前言 轻闪pdf是个很好用的文件编辑软件,它能让大家编辑文档变得更简单、更快。这个软件特别厉害,能从照片里直接“抓”出文字来,让你打字变得更轻松。而且,它还能把PDF文件变成其他格式的文件,反过来也行。还有啊&…

Python-07PDF转Word

2025-03-04-PDF转Word DeepSeek等大模型从来都不是简单的写一个静态博客这么肤浅(太多博主都只讲这个内容了)借助全网大神的奇思妙想,拓展我狭隘的思维边界。 文章目录 2025-03-04-PDF转Word [toc]1-参考网址2-学习要点3-核心逻辑4-核心代码 …

Arcgis中添加脚本工具箱

文章目录 准备资料1、打开arcmap2、找到目录窗口3、复制粘贴工具箱的路径4、添加或者确认python脚本路径准备资料 (1)工具箱 (2)python脚本 1、打开arcmap 2、找到目录窗口 3、复制粘贴工具箱的路径 4、添加或者确认python脚本路径 脚本上右键属性(注意:脚本内容和路径…