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

JS宏实例:数据透视工具的制作(四)

上一节中,我们完成了核心的计算代码部分,本节中将完善事件代码

一、创建所有需求的事件函数

1、窗体初始化

// 窗体初始化
function pivotForm_Initialize(){} 
function typeSet_Initialize(){} 
function valueSet_Initialize(){} 
function allColTypeSet_Initialize(){}

上述是四个窗体显示前会执行的事件

2、主窗体部分事件

// pivotForm 主窗体事件
function pivotForm_CommandButton1_Click(){} 
function pivotForm_CommandButton2_Click(){} 
function pivotForm_CommandButton3_Click(){} 
function pivotForm_CommandButton4_Click(){} 
function pivotForm_CommandButton5_Click(){} 
function pivotForm_CommandButton6_Click(){}
function pivotForm_TextEdit1_Change(){} 
function pivotForm_ListBox1_DblClick(cancel){} 
function pivotForm_ListBox2_DblClick(cancel){}
function pivotForm_ListBox3_DblClick(cancel){} 
function pivotForm_ListBox4_DblClick(cancel){} 
function pivotForm_ListBox5_DblClick(cancel){}

3、附属窗体事件

// typeSet 单个字段设置窗体事件
function typeSet_CommandButton1_Click(){} 
function typeSet_CommandButton2_Click(){} 
function typeSet_CommandButton3_Click(){}
function typeSet_ComboBox1_Change(){} 
function typeSet_ComboBox2_Change(){}// valueSet 值字段设置窗体事件
function valueSet_CommandButton1_Click(){} 
function valueSet_CommandButton2_Click(){} 
function valueSet_CommandButton3_Click(){}
function valueSet_ComboBox1_Change(){} 
function valueSet_ComboBox2_Change(){} 
function valueSet_ComboBox3_Change(){}
function valueSet_ComboBox4_Change(){} 
function valueSet_ListBox1_Click(){}// allColTypeSet 字段类型设置窗体事件
function allColTypeSet_CommandButton1_Click(){} 
function allColTypeSet_ComboBox1_Change(){} 
function allColTypeSet_ComboBox2_Change(){}

注意:上述事件函数可以在全局定义,然后通过代理或闭包的方式去拦截它的调用,从而更改它的行为,因此,我们可以定义一个事件类和一个事件绑定方法来完成这一操作

二、事件类的构造函数

1、代码

commandButtonClick

// 事件类
function Events() {}
Events.prototype = {formInitialize: function(userform, obj, moveObj) {// userform 是一个窗体对象// obj 是一个对象,对象中的key是控件名称,值是一个数组存储默认值,或初始化// moveObj key = 要移动的控件名称,value = [left, top, height, width]for (let key in obj) {let str = key.match(/[a-zA-Z]+/g);if (str === "CommandButton" || str === "Label") {userform.Controls(key).Caption = obj[key][0];} else if (str === "ComboBox" || str === "ListBox") {obj[key].slice(1).forEach(i => userform.Controls(key).AddItem(i));userform.Controls(key).Value = obj[key][0];} else if (str === "TextEdit") {userform.Controls(key).Value = obj[key][0];}}for (let key in moveObj) {userform.Controls(key).Left = moveObj[0];userform.Controls(key).Top = moveObj[1];userform.Controls(key).Height = moveObj[2];userform.Controls(key).Width = moveObj[3];}},commandButtonClick: function(fu) {return fu;},textEditChange: function(fu) {return fu;},comboBoxChange: function(fu) {return fu;},listBoxDblClick: function(fu, cancel) {return fu;},
}

2、说明

在原型链中,定义了五个方法:

  • formInitialize:窗体初始化事件,也就是打开窗体要执行的操作
    • 参数
      • userform:窗体对象
      • obj:对象中的key是控件名称,值是一个数组存储默认值,或初始化操作数据
      • moveObj:key 是要移动的控件名称,value = [left, top, height, width]
    • 局限性
      • 未给出所有控件的操作方式
      • 为给出所有属性的操作
    • 优化方式
      • 通过Proxy对象来拦截该函数的调用,给他增加其他行为
      • 通过闭包,给它添加额外的操作等
  • commandButtonClick:命令按钮的点击事件,点击按钮时,执行传入的函数fu
  • textEditChange:文本框内容发生变化时,执行传入的操作函数fu
  • comboBoxChange:组合框内容发生变化时,执行传入的操作函数fu
  • listBoxDblClick:在列表框中双击某一元素时,执行传入的操作函数fu

暂未写玩,后续直接在这里补充

相关文章:

JS宏实例:数据透视工具的制作(四)

上一节中,我们完成了核心的计算代码部分,本节中将完善事件代码 一、创建所有需求的事件函数 1、窗体初始化 // 窗体初始化 function pivotForm_Initialize(){} function typeSet_Initialize(){} function valueSet_Initialize(){} function allCol…...

5. Go 方法(结构体的方法成员)

Go语言没有传统的 class ,为了让函数和结构体能够关联,Go引入了“方法”的概念。 当普通函数添加了接收者(receiver)后,就变成了方法。 一、函数和方法示例 // 普通函数 func Check(s string) string {return s }//…...

20250223学习记录

之前HDFview查看.hdf5文件的时候,看到土壤湿度数据是分为AM和PM,当时我有一个这样的疑问 但是后来用Python处理的时候,直接就是对整个的.hdf5文件处理,当时没有注意这一块,所以就没有这个疑问了。 今天突然看到一篇论…...

WPS携手DeepSeek:开启智能办公新时代

在数字化办公的浪潮中,效率与智能成为了人们追求的核心目标。近年来,人工智能技术的飞速发展为办公领域带来了前所未有的变革契机。DeepSeek作为一款备受瞩目的人工智能工具,以其强大的功能吸引了众多用户,然而在使用过程中&#…...

无需服务器,浏览器跑700+AI模型?!

Transformers.js 是一个创新的网络机器学习库,它将先进的 Transformer 模型直接带入浏览器,无需服务器端支持。这个库与 Hugging Face 的 Python transformers 库功能对等,提供相似的 API 接口来运行预训练模型,涵盖了自然语言处理…...

WSL2下ubuntu开启NFS服务

1. wsl2下ubuntu配置 安装 NFS 服务: sudo apt-get install nfs-kernel-server rpcbindnfs 配置文件/etc/exports: sudo vi /etc/exports打开/etc/exports 以后在后面添加如下所示内容: /home/mk/nfs *(rw,sync,no_subtree_check,no_root…...

深入了解 DevOps 基础架构:可追溯性的关键作用

在当今竞争激烈的软件环境中,快速交付强大的应用程序至关重要。尽管如此,在不影响质量的情况下保持速度可能是一项艰巨的任务,这就是 DevOps 中的可追溯性发挥作用的地方。通过提供软件开发生命周期 (SDLC) 的透明视图…...

k2路由器登录校园网

教程1刷入Breed,并手动刷入Padavan固件:斐讯K1、K2、K2P 刷机、刷入Breed 辅助工具 | tb (tbvv.net) Padavan下载网址: 我用的是: Padavan 登录的网址是 192.168.123.1 Padavan配置教程: 先用网线连上校园网&#…...

构建知识图谱的关键:高效三元组抽取技术在文本挖掘中的应用

在当今数字化时代,数据如潮水般涌来,文本数据更是海量且复杂。从科研论文到社交媒体动态,从新闻报道到电商商品描述,文本蕴含着丰富信息。而要让机器理解这些文本、挖掘有价值知识, “三元组抽取” 成为自然语言处理&a…...

超高清大图渲染性能优化实战:从页面卡死到流畅加载

目录 问题背景:1.为什么大图会导致页面卡死?一、DOM树构建(HTML Parsing)二、 资源加载:下载完整图片文件(可能高达30MB)三、解码处理(Decoding & Rasterization)、四…...

当使用vcpkg安装的qt5时,在VS调用出现libcrypto-*-x64.dll不是有效路径时

英文解决站点 applocal.ps1 fails in Visual Studio 2019 because of wildcard path in VcpkgAppLocalDLLs Issue #28614 microsoft/vcpkg 虽然这个bug不影响生成exe文件,第一次会弹出该错误,再次运行就正常,vcpkg会把对应的libcrypto-*-x64.dll版本复制到exe路径下..但是对…...

在 Vue 中处理跨域请求:全面解析与实践指南

在 Vue 中处理跨域请求:全面解析与实践指南 在现代 Web 开发的复杂生态中,跨域请求(CORS)如同一个无处不在的难题,时刻考验着开发者的技术能力。当我们构建基于 Vue.js 的前端应用时,这一问题尤为凸显。因为…...

标量化rknn的输入输出向量转换处理

这是一篇技术探索。yolo11模型生成后,我发现它无法在rknn环境正确识别出目标对象。而在宿主机上,或者直接调用.pt转换过的.onnx模型是可以得到正确结果的。这篇文章对应近乎一天的工作。最终的结论就是。这是一个模型量化的问题,与yolo的版本…...

认知重构 | 自我分化 | 苏格拉底式提问

注:本文为 “认知重构 | 自我分化” 相关文章合辑。 心理学上有一个词叫:认知重构(改变 “非黑即白,一分为二” 的思维方式) 原创 心理师威叔 心理自救 2024 年 10 月 26 日 19:08 广东 你有没有过这样的时候&#x…...

Java集合之ArrayList(含源码解析 超详细)

1.ArrayList简介 ArrayList的底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。 ArrayList继承于Ab…...

Java笔记18

2-10-3Cookie&Session 1.会话跟踪技术概述 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次…...

LangChain大模型应用开发:构建Agent智能体

介绍 大家好,博主又来给大家分享知识了。今天要给大家分享的内容是使用LangChain进行大模型应用开发中的构建Agent智能体。 在LangChain中,Agent智能体是一种能够根据输入的任务或问题,动态地决定使用哪些工具(如搜索引擎、数据库查询等)来…...

巧用GitHub的CICD功能免费打包部署前端项目

近年来,随着前端技术的发展,前端项目的构建和打包过程变得越来越复杂,占用的资源也越来越多。我有一台云服务器,原本打算使用Docker进行部署,以简化操作流程。然而,只要执行sudo docker-compose -f deploy/…...

【2】常用cmd命令大全、使用cmd运行和编译Java程序

文章目录 一、常用cmd命令大全文件和目录操作系统信息查看磁盘管理网络操作其他常用命令 二、使用cmd命令运行和编译Java程序 一、常用cmd命令大全 cmd的常用命令较多,java初学者只需了解这几个即可 dir:查看当前路径下的所有文件夹 cd:进入指…...

UniApp SelectorQuery 讲解

一、SelectorQuery简介 在UniApp中,SelectorQuery是一个非常强大的工具,它允许开发者查询节点信息。通过这个API,我们可以获取到页面元素的尺寸、位置、滚动条位置等信息。这在处理动态布局、动画效果或是用户交互时尤为重要。 二、基本使用…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

Cursor实现用excel数据填充word模版的方法

cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

2023赣州旅游投资集团

单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...