unigui 中 为uniDBGrid设置文字操作栏(转)

news/2025/3/21 10:41:46/文章来源:https://www.cnblogs.com/XDSoft/p/18780395

unigui中为uniDBGrid设置文字操作栏,如下图的效果,用户点击审核,执行审核代码,点退回,执行退回代码:

 

对于Web应用界面,这是最常见的方式,那对于我等Delphi开发者来说,基于uniGUI该怎么实现呢?

首先,为uniDBGrid准备“操作”这一栏的显示内容,具体说,在数据集中准备好显示的数据。

我是为数据集加了一列,叫operation。

然后在operation的TField.OnGetText中返回显示的数据:

<a class="btnopbtn" style="color: #148a14" onclick="ajaxRequest(O430,'audit',['id=C42EBDFDDA9B4526B67EECE72FD7AF5F']);">审核</a><a class="btnopbtn" style="color: #f94936" onclick="ajaxRequest(O430,'unaudit',['id=C42EBDFDDA9B4526B67EECE72FD7AF5F']);">退回</a>

对应的Delphi代码:

复制代码
procedure TCustomBillBrowserFrame.OperationFieldGetText(Sender: TField; var Text: string; DisplayText: Boolean);
begininherited;Text:= '<a class="btnopbtn" style="color: #148a14" onclick="ajaxRequest('+UniDBGrid1.JSName+',' +QuotedStr('audit')+',[''id='+Sender.DataSet.FieldByName('fid').AsString+''']);">'+'审核</a>|' +'<a class="btnopbtn" style="color: #f94936" onclick="ajaxRequest('+UniDBGrid1.JSName+',' +QuotedStr('unaudit')+',[''id='+Sender.DataSet.FieldByName('fid').AsString+''']);">'+'退回</a>';

end;

复制代码

要说明的是:

1.ajaxRequest会触发对应控件的OnAjaxEvent事件

2.具体是哪一个控件呢,由ajaxRequest的第一个参数决定,那这里我们要写成UniDBGrid1.JSName

3.第二个audit:对应EventName,第三个参数对应Params,参考下面的代码:

复制代码
procedure TCustomBillBrowserFrame.UniDBGrid1AjaxEvent(Sender: TComponent;EventName: string; Params: TUniStrings);
begininherited;
//
end;
复制代码

明白上面的原理,可以直接看下面的实际代码了:

复制代码
procedure TAudit2YmJHSBFrame.UniDBGrid1AjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings);
varid: string;
begininherited;// uniSession.Log('EventName='+EventName);if EventName = 'audit' thenbeginid := Params['id'].AsString;//执行审核操作的代码,这里省了...end;if EventName = 'unaudit' thenbeginid := Params['id'].AsString;//执行退回操作的代码,这里省了end;

end;

复制代码

补充:

一定要重新定位对应的数据集,要清楚,你点击的单元格所在的行,与uniDBGrid对应数据集的当前记录不一定是对应的。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901383.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCode 开启 Javascript 内嵌的类型提示

默认情况,VSCode 的代码类型提示需要鼠标放置在函数名或者变量名上才出现,有没有觉得这样比较傻瓜~ VSCode 早在 1.60 版本就引入了内嵌提示配置,每次更新都没仔细看文档,感觉错过了很多的小惊喜啊。 默认的代码显示 你的编辑器代码是不是显示这个样子:开启内嵌的类型提示…

系统高可用的 10 条军规

前言 系统高可用是非常经典的问题,无论在面试,还是实际工作中,都经常会遇到。 这篇文章跟大家一起聊聊,保证系统高可用的10个小技巧,希望对你会有所帮助。1 冗余部署 场景:某电商大促期间,数据库主节点突然宕机,导致全站交易瘫痪。 问题:单节点部署的系统,一旦关键组…

phpStudy常见问题

问题一: 图中的错误提示显示,MySQL 无法切换到指定的目录,可能是文件或目录不存在 。以下是一些可能的原因和解决方法: 目录路径错误: 原因:MySQL 配置文件中设置的 datadir (数据存储目录)路径错误,或者该路径下的文件夹结构有变动,导致 MySQL 无法找到对应的目录。…

OpenHarmony 开源鸿蒙北向开发——hdc工具安装

​ hdc(OpenHarmony Device Connector)是为开发人员提供的用于设备连接调试的命令行工具,该工具需支持部署在 Windows/Linux/Mac 等系统上与 OpenHarmony 设备(或模拟器)进行连接调试通信。简单来讲,hdc 是 OpenHarmony 提供的用于开发人员调试硬件、应用的命令行工具,用…

DBeaver 常用个性化设置

SQL关键字大写 窗口 → 首选项 → 编辑器 → SQL编辑器 → SQL格式化 → 关键字大小写默认分页数量 窗口 → 首选项 → 编辑器 → 数据编辑器 → 数据集获取大小作者多数为原创文章 ( 部分转载已标出 ),目前资历尚浅文章内描述可能有误,对此造成的后果深表歉意,如有错误还望…

2023腾讯游戏安全竞赛-PC方向初赛复现

2023腾讯游戏安全竞赛-PC方向初赛复现 第一问 问题描述:在64位Windows10系统上运行contest.exe, 找到明文的信息,作为答案提交(1分) 直接运行程序,在contest.txt中拿到密文ImVkImx9JG12OGtlImV+,很像base64后的结果,但是直接解码得到的不是自然语言,整个exe程序也完全被…

如何选择合适的供应商协同平台,解决数据交互的安全性与高效性?

在当今竞争激烈的商业环境中,企业的供应链管理面临着诸多挑战。传统的供应商合作模式在信息沟通、流程效率等方面存在着明显的问题,这些问题不仅制约了企业的发展,也影响了整个供应链的竞争力,企业需要寻找供应商协同平台,实现企业与供应商之间的信息共享、业务协同和数据…

【深度好文】是时候重新评估您当前的MFT文件传输供应商了

随着文件传输需求的不断演变,更复杂的数据安全威胁的出现、⼈⼯智能等颠覆性技术、成本压⼒以及从医疗保健到⾦融再到供应链等⾏业⽇益严格的监管标准,企业可能需要重新评估其受管文件传输(MFT)供应商。本文将探讨推动企业更换MFT系统的因素,以及在评估潜在新MFT供应商时需…

Nginx错误处理与排查:运维人员的必备手册

前言:在日常的 Web 开发与运维工作中,Nginx 作为一款高性能的 Web 服务器和反向代理工具,被广泛应用于各种项目中。然而,即使是最优秀的工具也难免会遇到各种问题。Nginx 的报错信息虽然简洁,但往往让人摸不着头脑,尤其是对于新手来说,更是如此。而重定向配置,作为 Ngi…

RequestMapping

其中最关键的是path属性(等价于value),它决定了当前方法处理的请求路径,注意路径必须全局唯一,任何路径只能有一个方法进行处理,它是一个数组,也就是说此方法不仅仅可以只用于处理某一个请求路径,我们可以使用此方法处理多个请求路径: @RequestMapping({"/index&…

C#/.NET/.NET Core技术前沿周刊 | 第 30 期(2025年3.10-3.16)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

读DAMA数据管理知识体系指南24数据集成概念(下)

读DAMA数据管理知识体系指南24数据集成概念(下)1. 复制 1.1. 复制技术将分析和查询对主事务操作环境性能的影响降至最低 1.2. 复制解决方案通常监视数据集的更改日志,而不是数据集本身 1.3. 标准复制解决方案是准实时的,数据集的一个副本和另一个副本之间的更改有很小的延迟…