原地址:
http://blog.csdn.net/softwave/article/details/8781220
本示例在用友NC57环境下调试通过
最近在做基于NC的二次开发,这种封闭的系统文档很少,一个简单的例子都不能找到帮助。
本示例的目的是为了让后来者少走我走过的弯路
- package nc.ui.ic.generaltc;
- import nc.ui.pub.ButtonObject;
- import nc.ui.pub.ClientEnvironment;
- import nc.ui.pub.ToftPanel;
- import nc.ui.pub.beans.UIPanel;
- import nc.ui.pub.bill.BillCardPanel;
- import nc.ui.pub.bill.BillEditEvent;
- import nc.ui.pub.bill.BillEditListener;
- import nc.ui.pub.bill.BillItem;
- import nc.ui.pub.bill.BillListPanel;
- import nc.ui.scm.pub.query.SCMQueryConditionDlg;
- import javax.swing.JComboBox;
- import javax.swing.JLabel;
- import javax.swing.JTextField;
- import java.awt.Dimension;
- /**
- * NC5.7单据基础示例
- * @ClassName: ClientUI
- * @Description: TODO
- * @author s
- * @date 2013-4-9 下午2:22:21
- * BillEditListener 是按钮监听类
- * 实现BillEditListener,需实现bodyRowChange()、afterEdit()两个方法
- */
- public class ClientUI extends ToftPanel implements BillEditListener {
- // 单据类型
- private BillCardPanel cpBill = null;
- // 客户端环境变量类
- private ClientEnvironment ce = getClientEnvironment();
- // 按钮查询,增加,修改,删除,保存,取消,打印,审核,弃审,关闭,打开.
- protected ButtonObject bnQuery = new ButtonObject("查询", "查询", 1, "查询");
- protected ButtonObject bnAdd = new ButtonObject("增加", "增加", 2, "增加");
- protected ButtonObject bnModify = new ButtonObject("修改", "修改", 3, "修改");
- protected ButtonObject bnDelete = new ButtonObject("删除", "删除", 4, "删除");
- protected ButtonObject bnSave = new ButtonObject("保存", "保存", 5, "保存");
- protected ButtonObject bnCancel = new ButtonObject("取消", "取消", 6, "取消");
- protected ButtonObject bnPrint = new ButtonObject("打印", "打印", 7, "打印");
- protected ButtonObject bnAudit = new ButtonObject("审核", "审核", 9, "审核");
- protected ButtonObject bnUnAudit = new ButtonObject("弃审", "弃审", 10, "弃审");
- protected ButtonObject bnClose = new ButtonObject("关闭", "关闭", 11, "关闭");
- protected ButtonObject bnOpen = new ButtonObject("打开", "打开", 12, "打开");
- protected ButtonObject[] bgMain = { bnQuery, bnAdd, bnModify, bnDelete,
- bnSave, bnCancel, bnPrint, bnAudit, bnUnAudit, bnClose, bnOpen };
- // 状态 有下列五种状态
- private int iStatus = 0;
- private int INIT = 0;
- private int NEW = 1;
- private int UPDATED = 2;
- private int DELETED = 3;
- private int SAVED = 4;
- private nc.vo.scm.pub.session.ClientLink m_cl=null;
- protected UIPanel conditionpanel = null;
- public ClientUI() {
- super();
- initialize();
- }
- /**
- * 选中行触发该方法
- */
- public void bodyRowChange(BillEditEvent arg0) {
- // TODO Auto-generated method stub
- // int isChangeRow = arg0.getRow();
- }
- public void afterEdit(BillEditEvent arg0) {
- }
- /**
- * 界面初始化。
- * @Title: initialize
- * @Description: TODO
- * @return void
- * @throws
- * 创建者:s
- * 创建日期:2013-4-10
- */
- private void initialize() {
- try {
- setName("TcUI");
- m_cl = new nc.vo.scm.pub.session.ClientLink(ClientEnvironment.getInstance());
- //INIT,NEW,UPDATED,DELETED,SAVED;
- iStatus = INIT;
- setBnStatus(iStatus);
- //bnOpen.setHint("测试!!!!!");
- // 加载按钮
- setButtons(bgMain);
- add(getBillCardPanel());
- // onQuery();
- } catch (Exception e) {
- nc.vo.scm.pub.SCMEnv.out(e.getMessage());
- JLabel msg = new JLabel(e.getMessage());
- msg.setHorizontalAlignment(JLabel.CENTER);
- add(msg);
- }
- }
- /**
- * 设置单据窗体
- * @Title: getBillCardPanel
- * @Description: TODO
- * @return BillCardPanel
- * @throws
- * 创建者:s
- * 创建日期:2013-4-10
- */
- private BillCardPanel getBillCardPanel() {
- if (cpBill == null) {
- try {
- cpBill = new BillCardPanel();
- /*
- * 单据模板有两种常用加载方式
- * 第一种是根据“单据模板编号”来加载
- * 单据模板编号是模板在标准产品库中所保存的模板编号,在pub_billtemplet(单据模板主表)中的pk_billtemplet字段
- * 可根据nodecode条件去pub_billtemplet表中查询
- * 可用语句select pk_billtemplet from pub_billtemplet where nodecode='40081001'来查询
- * nodecode是在“功能注册”时定义的节点“功能编码”,或称“节点编号”,见图1(单据类型管理)
- */
- //cpBill.loadTemplet("0001AA1000000004OJWO");
- /*
- * 第二种方式是使用cpBill.loadTemplet(strBillType, strBusiType, strOperator, strCorp)方法加载
- * strBillType是单据模板在标准产品库中所保存的模板类型,在pub_billtemplet(单据模板主表)中的pk_billtypecode字段
- * 可根据nodecode条件去pub_billtemplet表中查询
- * 可用语句select pk_billtypecode from pub_billtemplet where nodecode='40081001'来查询
- * strBusiType是业务类型,可设为null
- * strOperator是操作者,使用ClientEnvironment.getUser().getPrimaryKey()取得环境用户参数
- * strCorp是公司参数,使用ClientEnvironment.getCorporation().getPk_corp()取得环境公司参数
- */
- cpBill.loadTemplet("40081001", null, ce.getUser().getPrimaryKey(), ce.getCorporation().getPk_corp());
- //设置单据体表体菜单是否显示
- cpBill.setBodyMenuShow(false);
- //添加监听
- cpBill.addEditListener(this);
- } catch (java.lang.Throwable ivjExc) {
- }
- }
- return cpBill;
- }
- /**
- *
- * @Title: getConditionPanel
- * @Description: TODO
- * @return UIPanel
- * @throws
- * 创建者:s
- * 创建日期:2013-4-9
- */
- protected UIPanel getConditionPanel() {
- if (conditionpanel == null) {
- conditionpanel = new UIPanel();
- conditionpanel.setName("UIPanel");
- conditionpanel.setLayout(new java.awt.GridLayout(2, 6, 0, 1));
- conditionpanel.setMaximumSize(new Dimension(550, 40));
- conditionpanel.setPreferredSize(new Dimension(550, 40));
- conditionpanel.setMinimumSize(new Dimension(550, 1));
- }
- return conditionpanel;
- }
- @Override
- public String getTitle() {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public void onButtonClicked(ButtonObject arg0) {
- // TODO Auto-generated method stub
- }
- /**
- * 设置按钮状态。
- * @Title: setBnStatus
- * @Description: TODO
- * @param status
- * @return void
- * @throws
- * 创建者:s
- * 创建日期:2013-4-10
- */
- public void setBnStatus(int status) {
- //初始、删除、保存状态
- if (status == INIT || status == DELETED || status == SAVED) {
- bnQuery.setEnabled(true);
- bnAdd.setEnabled(true);
- bnModify.setEnabled(true);
- bnSave.setEnabled(false);
- bnCancel.setEnabled(false);
- bnDelete.setEnabled(true);
- // bnModify.setEnabled(false);
- }
- //增加、修改状态
- else if (status == NEW || status == UPDATED) {
- bnQuery.setEnabled(false);
- bnAdd.setEnabled(false);
- bnSave.setEnabled(true);
- bnCancel.setEnabled(true);
- bnDelete.setEnabled(false);
- bnModify.setEnabled(false);
- }
- //bnPrint.setEnabled(false);
- updateButtons();
- }
- }