NC开发最基本的添加按钮并实现按钮事件业务逻辑处理,下面写一个例子介绍该过程的实现方法。

拿物流执行模块作为例子,在计量单维护界面增加两个按钮“A杆”“B杆”,单击这两个按钮,分别控制A和B道闸栏杆起降。

第一步:

找到该页面的配置文件。打开“应用管理平台”--“开发配置工具”--“功能注册”节点,找到页面,查看参数注册,查看配置文件

第二步:

在xml中添加两个按钮的配置(红颜色标记),如下:
          
          <!-- 汽运计量模板——按钮 -->
          <beans default-lazy-init="false">
              <bean id="actions" class="nc.ui.mmgp.uif2.container.MMGPActionList">
                  <constructor-arg>
                     <list>
                          <!-- <ref bean="simulateAction" /> -->
                          <ref bean="addAction" />
                          <ref bean="nullaction" />
                          <ref bean="refreshAction" />
                          <ref bean="nullaction" />
                          <ref bean="fillPrintAction" />                
                          <!-- <ref bean="limitedTareUpdateAction" /> -->
                          <ref bean="printActionGroup" />
                          <ref bean="nullaction" />
                          <ref bean="nullaction" />
                          <ref bean="Railing1Action"/>
                          <ref bean="nullaction" />
                          <ref bean="Railing2Action"/>
                      </list>
                  </constructor-arg>
              </bean>

<!-- 配置道闸栏杆起降的两个按钮 -->    
              <bean id="Railing1Action" class="nc.ui.levmmeampoundbill.poundbill.action.Railing1Action"/>
              <bean id="Railing2Action" class="nc.ui.levmmeampoundbill.poundbill.action.Railing2Action"/>
   
第三步:创建Railing1Action和Railing2Action类f继承父类NCAction

1、Railing1Action类

package nc.ui.levmmeampoundbill.poundbill.action;

import java.awt.event.ActionEvent;
           import java.util.ArrayList;
           import Automation.BDaq.DaqException;
           Automation.BDaq.DeviceInformation;
           import Automation.BDaq.DeviceTreeNode;
           import Automation.BDaq.InstantDoCtrl;
           import nc.ui.uif2.NCAction;
           import nc.vo.pub.BusinessException;
           /**
            * PCI-1761板卡控制
            *
            * @author dingxm
            *
            */
           public class Railing1Action extends NCAction {
              // 1、定义端口、设备名称
               private static int channel = 0;// 继电器通道,默认通道为0
               private static String device = "PCI-1761,BID#0"; // 设备描述
               // private static int deviceNumber = 2;// 设备号
               private static InstantDoCtrl instantDoCtrl = null;
               private static final long serialVersionUID = 5566110189672221376L;

@Override
               public void setCode(String code) {
                   super.setCode("Railing1");
               }

public Railing1Action() {
                   // super.setCode("dzupordown1");
                   super.setCode("Railing2");
                   super.setBtnName("A杆");
               }

@Override
               public void doAction(ActionEvent arg0) throws Exception {

instantDoCtrl = new InstantDoCtrl();
                   // 3、打开设备
                   try {
                       instantDoCtrl.setSelectedDevice(new DeviceInformation(device));
                   } catch (DaqException e) {
                       e.printStackTrace();
                   }

if (instantDoCtrl.getState().toInt() == 0) {// 判断设备加载初始化成功
                       byte status = RailingActionCommon.readStatusFromPCI1761(
                               instantDoCtrl, channel);
                       byte value = 0;
                       if (status == 0) {
                           value = 1;
                       }
                       if (status == 1) {
                           value = 0;
                       }
                       if (status == 2) {
                           value = 3;
                       }
                       if (status == 3) {
                           value = 2;
                       }
                       RailingActionCommon.writeToPCI1761(instantDoCtrl, channel, value);
                   } else {
                       // 提示加载设备初始化失败
                       throw new BusinessException("PCI-1761板卡初始化错误,请检查板卡名称配置");
                   }
               }
           }

2、Railing2Action类

package nc.ui.levmmeampoundbill.poundbill.action;

import java.awt.event.ActionEvent;
           import Automation.BDaq.DaqException;
           import Automation.BDaq.DeviceInformation;
           import Automation.BDaq.InstantDoCtrl;
           import nc.ui.uif2.NCAction;
           import nc.vo.pub.BusinessException;

/**
            * PCI-1761板卡控制
            *
            * @author dingxm
            *
            */
           public class Railing2Action extends NCAction {
               // 1、定义端口、设备名称
               private int channel = 0;// 继电器通道,默认通道为0
               private static String device = "PCI-1761,BID#0";// "DemoDevice,BID#0";//
                                                    // 设备描述
               // private static int deviceNumber = 2;// 设备号
               private static InstantDoCtrl instantDoCtrl = null;

private static final long serialVersionUID = 5566110189672221376L;

@Override
               public void setCode(String code) {
                   super.setCode("Railing2");
               }

public Railing2Action() {
                   // super.setCode("dzupordown2");
                   super.setCode("Railing2");
                   super.setBtnName("B杆");
               }

@Override
               public void doAction(ActionEvent arg0) throws Exception {

// 2、初始化InstantDoCtrl
                   instantDoCtrl = new InstantDoCtrl();
                   // 3、打开设备
                   try {
                       instantDoCtrl.setSelectedDevice(new DeviceInformation(device));
                   } catch (DaqException e) {
                       e.printStackTrace();
                   }

if (instantDoCtrl.getState().toInt() == 0) {// 判断设备加载初始化成功
                       byte status = RailingActionCommon.readStatusFromPCI1761(instantDoCtrl, channel);
                       byte value = 0;
                       if (status == 0) {
                           value = 2;
                       }
                       if (status == 1) {
                           value = 3;
                       }
                       if (status == 2) {
                           value = 0;
                       }
                       if (status == 3) {
                           value = 1;
                       }
                       RailingActionCommon.writeToPCI1761(instantDoCtrl, channel, value);
                   } else {
                       // 提示加载设备初始化失败
                       throw new BusinessException("PCI-1761板卡初始化错误,请检查板卡名称配置");
                   }
               }
           }

工具类:RailingActionCommon类

package nc.ui.levmmeampoundbill.poundbill.action;

import Automation.BDaq.ByteByRef;
           import Automation.BDaq.ErrorCode;
           import Automation.BDaq.InstantDoCtrl;
           /**
            *
            * @author dingxiaomin
            *
            */
           public class RailingActionCommon {
               /**
                *
                * @param channel通道号
                * @param device设备描述
                * @param portData写入数据
                * @return返回写入成功与否
                */
               public static boolean writeToPCI1761(InstantDoCtrl instantDoCtrl, int channel, byte portData) {

boolean b = false;
                   ErrorCode errCode;
                   // 4、写入数据
                   errCode = instantDoCtrl.Write(channel, portData);
                   if ("Success".equals(errCode.toString())) {// 写入成功返回true,其他均返回false
                      b = true;
                   }
                   return b;
               }

/**
                *
                * @param channel通道号
                * @param device设备描述
                * @return返回该通道该设备读取的值
                *
                */
               public static byte readStatusFromPCI1761(InstantDoCtrl instantDoCtrl,int channel) {
                   // ErrorCode errCode;
                   ByteByRef portData = new ByteByRef();
                   // 4、读取数据
                   // errCode =
                   instantDoCtrl.Read(channel, portData);// 读取
                   return portData.value;
               }
           }

运行界面如下,到这一步已经显示出来两个按钮:

到上一步骤,虽然显示出来了两个按钮,按钮的doAction方法已经写完,但界面点击该按钮并未触发事件,还缺少下面一步骤:

在功能注册界面增加按钮配置:

到这一步,添加按钮的操作已经全部完成。

用友NC63界面新增按钮实现方法相关推荐

  1. 用友NC63界面新增按钮实现方法(转)

    原文地址:http://blog.csdn.net/qq_32553271/article/details/65644443 NC开发最基本的添加按钮并实现按钮事件业务逻辑处理,下面写一个例子介绍该过 ...

  2. NC63 前台新增按钮

    1.编写新的xml配置 <?xml version="1.0" encoding="gbk"?> <beans xmlns="htt ...

  3. Adobe Illustrator CS6 界面文字按钮太小,高分屏win10PS/AI等软件界面字太小解决方法

    Adobe Illustrator CS6 界面文字按钮太小,高分屏win10PS/AI等软件界面字太小解决方法 参考文章: (1)Adobe Illustrator CS6 界面文字按钮太小,高分屏 ...

  4. VC开发多语言界面支持的简单方法

    VC开发多语言界面支持的简单方法 作者:成晓旭 (需要完整源代码请留言) 最近在做一个小程序,要求实现对多语言界面显示支持功能,并且,界面显示内容用户能够自己设置. 初步设计用INI文件来配置显示内容 ...

  5. 纯干货 | UI界面中按钮设计可临摹编辑素材!

    按钮是UI界面中最常见的交互元素之一,所以,如果要创建一个稳固的互动且积极有效的用户体验,需要设计好按钮元素.今天我们将搜集整理一些网页app上常见的按钮类型,了解这些不同的按钮设计方法. Viro媒 ...

  6. UAP扩展开发 - 新增按钮

    UAP新增按钮的实现 一.扩展说明 1.按钮扩展的实现有两种方法 - 按钮继承:NCAction,MenuAction - 拦截器实现:ActionInterceptor 此处是通过按钮继承实现的 2 ...

  7. Photoshop CC 2019( ps cc)新增功能使用方法介绍

    全新Adobe Photoshop CC 2019 mac简称ps cc 2019,是Adobe官方推出的最新版图像编辑软件!在最新的ps CC 2019中,添加了多项全新功能,包括选择对象.改进了对 ...

  8. win7 计算机登录ftp 取消保存密码,Win7系统取消登录界面的两种方法(图文)

    本教程小编和大家分享Win7纯净版系统取消登录界面的两种方法,windows7系统设置电脑密码后,即使取消密码,也会出现登录界面 ,每次都要点击用户图标才能进入系统,这样比较麻烦.那么有什么办法可以取 ...

  9. android 实现浮动窗口,Android_圣诞节,写个程序练练手————Android 全界面悬浮按钮实现,开始我以为悬浮窗口,可以用A - phpStudy...

    圣诞节,写个程序练练手----Android 全界面悬浮按钮实现 开始我以为悬浮窗口,可以用Android中得PopupWindow 来实现,虽然也实现了,但局限性非常大.比如PopupWindow必 ...

最新文章

  1. “Python来玩微信跳一跳”教程(问题总结)
  2. SAX解析xml (遍历DOM树各节点)
  3. Zookeeper 服务注册中心
  4. 2 宽度优先爬虫和带偏好的爬虫(4)
  5. SQL Server 查询表备注信息的语句
  6. Huawei S8512
  7. java类同步_Java中方法,对象,类的同步
  8. 统计学习方法-李航(6)
  9. CSS中flex和inline-flex的区别
  10. 字符串截取mysql
  11. vs关于_CRT_SECURE_NO_WARNINGS警告说明
  12. 为什么你买不到一台好用的机器人?因为没有你的代码
  13. 消消乐 游戏算法html,Vue实现开心消消乐游戏算法
  14. 动态规划解最长公共子串
  15. excel冻结窗口怎么设置_粗暴讲解,2分钟 | 即懂excel 冻结首行、首列和单元格怎么弄?...
  16. Windows10+clion+opencv时报错0xC0000139和0xC0000135的解决方法之一
  17. UIkit之滚动监听+动画特效
  18. Docker Are you trying to connect to a TLS-enabled daemon without TLS?
  19. fuchsia appmgr分析
  20. linux awk判断字符串开头,Linux文件比较三剑客(awk/grep/sed)之awk

热门文章

  1. Java GUI编程的几种常用布局管理器
  2. Day33 PO模型
  3. 海量资源请加QQ群282781158
  4. matlab二维图填充,【Matlab】二维图绘制及填色总结(basic)
  5. 【视频课笔记】相位裕度 相位补偿 开环增益与相移 运放带宽压摆率
  6. 使用ListBox控件,选中ListBoxItem中的TextBox后,如何改变SelectedItem
  7. 一种串口拓展方式、使用CH438芯片做并口转八串口
  8. 深入理解Java虚拟机(第3版)学习笔记——JAVA内存区域(超详细)
  9. CloudCompare多个pcd文件的拼接为1个pcd
  10. oracle check更改,Oracle With Check Option