NC按钮增加风车加载页面

本文介绍如何在UI更新与后台任务间实现同步,包括继承含有IProgressMonitor属性的父类来复用功能,以及使用TPAProgressUtil组件配合SwingWorker线程进行任务监控。文中详细解释了如何正确显示进度幕布并确保资源释放。

1、如果此节点已有按钮由此功能,找到他含有IProgressMonitor属性的父类,继承就行,但注意,model属性不要再提供getset方法,否则父类model属性会为空。
2、自己写,通过TPAProgressUtil 获取带风车的幕布组件,而且要另起线程(比如SwingWorker),但一定要记得finally里关掉,
if (monitor != null) {
monitor.done();
monitor = null;
}
private void showMonitor() {
if ((monitor != null) && (!monitor.isDone())) {
return;
}

	monitor = getTpaProgressUtil().getTPAProgressMonitor();
	monitor.beginTask("", -1);
	monitor.setProcessInfo("");

}

public TPAProgressUtil getTpaProgressUtil() {
	if (tpaProgressUtil == null) {
		tpaProgressUtil = new TPAProgressUtil();
		tpaProgressUtil.setContext(getModel().getContext());
	}

	return tpaProgressUtil;
}
<think>我们正在处理一个关于NC65系统客开需求的问题:用户希望在表体行中添加按钮。根据引用内容,我们可以参考一些类似的客开配置方法,但需要特别注意表体按钮的特殊性。分析思路:1.在NC65中,表体按钮通常需要扩展UIF2框架的Action2.需要修改元数据注册信息,将按钮注册到表体操作栏3.可能涉及前端界面配置和后台事件处理具体步骤:(1)创建自定义按钮Action类参考引用[1]中的LinkQueryAction写法,但需要继承适合表体的Action基类,通常为nc.ui.pubapp.uif2app.actions.BodyTableRowAction(2)在元数据中注册Action类似引用[1]的bean配置,但作用域需定位到表体(3)配置按钮显示位置需要修改卡片界面和列表界面的表体操作栏配置(4)实现按钮业务逻辑参考引用[3]中的业务规则实现方式详细实现:###步骤1:创建表体按钮Action类```javapackagenc.ui.example.action;//替换为实际包名importnc.ui.pubapp.uif2app.actions.BodyTableRowAction;importnc.ui.pubapp.uif2app.model.BillManageModel;publicclassAddBodyButtonActionextendsBodyTableRowAction{publicAddBodyButtonAction(){super();//设置按钮名称this.setCode("yourActionCode");this.setName("按钮显示文本");}@OverrideprotectedbooleanisActionEnable(){//启用条件判断(可选)BillManageModelmodel=(BillManageModel)getModel();returnsuper.isActionEnable()&&model.getSelectedBodyData()!=null;}@OverridepublicvoiddoAction()throwsException{//获取当前选中行ObjectselectedLine=getModel().getSelectedBodyData();//在此处添加按钮点击后的业务逻辑}}```###步骤2:在配置文件中注册Action在单据的`config`目录下的`action`配置文件(如`action.xml`)中添加:```xml<beanid="addBodyButtonAction"class="nc.ui.example.action.AddBodyButtonAction"><propertyname="model"><refbean="billManageModel"/></property><propertyname="editor"><refbean="billBodyEditor"/></property></bean>```###步骤3:将按钮添加到界面修改卡片界面配置文件(如`card_config.xml`),在表体操作区添加按钮:```xml<container><actionref="addBodyButtonAction"/><!--其他表体按钮--></container>```###步骤4:实现业务逻辑在`doAction`方法中实现具体功能,例如打开对话框、调用服务等。可参考引用[3]中的异常处理方式:```java@OverridepublicvoiddoAction()throwsException{try{//业务代码}catch(Exceptione){ExceptionUtils.wrappException(e);}}```注意事项:1.表体按钮需要特别注意行选中状态2.如果涉及数据保存,需考虑事务处理3.多语配置需在资源文件中定义按钮文本效果图示意:[表体操作栏][行删除按钮][新增行按钮][自定义按钮]§§相关问题§§1.如何控制NC65表体按钮的显示条件?2.NC65表体按钮如何调用后端服务?3.如何为NC65表体按钮添加快捷键?</think>### NC65表体行添加按钮的实现方法 在NC65系统中为表体行添加按钮需要通过客开方式实现,主要涉及前端界面配置和后端逻辑处理。以下是详细步骤: --- ### 一、配置前端界面(卡片界面配置) 1. **修改卡片配置文件** 在卡片界面配置文件(如`card_config.xml`)中增加按钮定义: ```xml <!-- 表体操作按钮配置 --> <action id="bodyButtonAction" name="自定义操作" group="body" position="body_toolbar" class="nc.ui.example.action.BodyButtonAction"/> ``` - `group="body"`:指定作用于表体 - `position="body_toolbar"`:定位到表体工具栏 2. **配置按钮显示条件**(可选) 在元数据文件中配置按钮可见性规则: ```xml <button id="bodyButtonAction"> <show-rule>vdef1 == 'Y'</show-rule> <!-- 当自定义字段为Y时显示 --> </button> ``` --- ### 二、创建按钮Action类 实现表体按钮的后端逻辑: ```java package nc.ui.example.action; import nc.ui.pubapp.uif2app.actions.BodyTableRowAction; import nc.vo.pubapp.pattern.exception.ExceptionUtils; public class BodyButtonAction extends BodyTableRowAction { @Override public void doAction() { try { // 获取当前选中行 Object selectedLine = getModel().getSelectedBodyData(); // 执行自定义逻辑(示例:弹出消息) showInfoDialog("操作成功", "已处理行号:" + selectedLine); } catch (Exception e) { ExceptionUtils.wrappException(e); } } } ``` --- ### 三、注册Action到Spring容器 在`applicationContext.xml`中注册Action: ```xml <bean id="bodyButtonAction" class="nc.ui.example.action.BodyButtonAction"> <property name="model" ref="billManageModel"/> <!-- 绑定数据模型 --> <property name="editor" ref="billBodyEditor"/> <!-- 绑定表体编辑器 --> </bean> ``` --- ### 四、表体按钮效果实现 1. **位置效果**: - 按钮会出现在表体工具栏区域 - 支持多行同时选中操作 2. **数据交互**: ```java // 获取表体选中行数据示例 Object[] selectedLines = getModel().getSelectedBodyDatas(); for(Object line : selectedLines) { // 处理每一行数据 } ``` --- ### 五、注意事项 1. **权限控制**: ```xml <button id="bodyButtonAction"> <permission>voucher_edit</permission> <!-- 需编辑权限 --> </button> ``` 2. **按钮状态管理**: ```java // 在Action中控制按钮状态 protected boolean isActionEnable() { return getModel().getSelectedBodyCount() > 0; // 选中行时启用 } ``` 3. **事务处理**: 涉及数据修改时需使用`nc.itf.uap.IUAPTxBP`接口提交事务[^3]。 --- ### 效果示意图 [表体工具栏] [新增行] [删除行] **[自定义按钮]** > **注**:完整实现需根据具体业务需求扩展`doAction()`方法逻辑,如调用审批流、生成下游单据等[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值