NC客户化开发手册
前言
目录
前言 ........................................................................................................................................................................... 1 第一章
1.1 1.2 1.3 1.4 第二章
2.1
规范篇 ................................................................................................................... 错误!未定义书签。 代码规范 .......................................................................................................... 错误!未定义书签。 注释规范 .......................................................................................................... 错误!未定义书签。 异常规范 .......................................................................................................... 错误!未定义书签。 其他规范 .......................................................................................................... 错误!未定义书签。 基础篇 ................................................................................................................... 错误!未定义书签。 单据信息 .......................................................................................................... 错误!未定义书签。 2.1.1获取卡片和列表容器(Panel) ......................................................................... 错误!未定义书签。 2.1.2当前界面卡片/列表状态 ................................................................................ 错误!未定义书签。 2.1.3获取/设置当前单据的操作状态: ................................................................ 错误!未定义书签。 2.1.4获取选择的树节点 ......................................................................................... 错误!未定义书签。 2.1.5是否单表体 ..................................................................................................... 错误!未定义书签。 2.1.6设置单据卡片表头区域比例 ......................................................................... 错误!未定义书签。 2.1.7设置表体页签状态 ......................................................................................... 错误!未定义书签。 2.1.8获取单据模板上定义的所有字段 ................................................................. 错误!未定义书签。 2.2
VO的获取和赋值及更新.................................................................................. 错误!未定义书签。 2.2.1 VO的获取 ...................................................................................................... 错误!未定义书签。 2.2.2 VO的操作 ...................................................................................................... 错误!未定义书签。 2.3
字段处理 .......................................................................................................... 错误!未定义书签。 2.3.1表头字段值 ..................................................................................................... 错误!未定义书签。 2.3.2表体字段值 ..................................................................................................... 错误!未定义书签。 2.3.3字段设置可编辑: ......................................................................................... 错误!未定义书签。 2.3.4隐藏字段 ......................................................................................................... 错误!未定义书签。 2.3.5设置数度 ......................................................................................................... 错误!未定义书签。 2.3.6设置字段焦点 ................................................................................................. 错误!未定义书签。 2.4
公式 .................................................................................................................. 错误!未定义书签。 2.4.1执行、设置公式: ......................................................................................... 错误!未定义书签。 2.4.2公式解析器: ................................................................................................. 错误!未定义书签。 2.5
单据行操作 ...................................................................................................... 错误!未定义书签。 2.5.1获取表体选择行 ............................................................................................. 错误!未定义书签。 2.5.2删除表体的自动排序 ..................................................................................... 错误!未定义书签。 2.5.3行编辑状态: ................................................................................................. 错误!未定义书签。 2.5.4选中表体所有行 ............................................................................................. 错误!未定义书签。 2.5.5列表下,表头行可多选的实现 ..................................................................... 错误!未定义书签。 2.5.6行操作(删除,增行等) .................................................................................. 错误!未定义书签。
第 1 页 / 共 19 页
2.6
获取系统相关 .................................................................................................. 错误!未定义书签。 2.6.1常量的获取(公司,操作员,时间) ......................................................... 错误!未定义书签。 2.6.2单据号的获取 ................................................................................................. 错误!未定义书签。 2.7
程序健壮性及易用性 ...................................................................................... 错误!未定义书签。 2.7.1单据保存时强制调用非空验证方法: ......................................................... 错误!未定义书签。 2.7.2弹出消息框代码: ......................................................................................... 错误!未定义书签。 2.7.3在编辑事件中常用的判断 ............................................................................. 错误!未定义书签。 2.7.4设置表体没有右键菜单方法 ......................................................................... 错误!未定义书签。
第三章
3.1 3.2 3.3 3.4 3.5
高级篇 ................................................................................................................... 错误!未定义书签。 审批流 .............................................................................................................. 错误!未定义书签。 后台预警 .......................................................................................................... 错误!未定义书签。 后台任务 .......................................................................................................... 错误!未定义书签。 消息 .................................................................................................................. 错误!未定义书签。 错误定位(日志分析)................................................................................... 错误!未定义书签。
第一章 个性化应用
1.1 单据常用设置 1.1.1 校验是否允许表体为空
修改校验类里的
public boolean isAllowEmptyBody(String tablecode) { }
return true;
1.1.2 显示单据中的行号
在client端的xxxxxxCtrl.java中的
public boolean isShowListRowNo() { // 显示列表的行号
} }
return true; return true;
public boolean isShowCardRowNo() { // 显示卡片的行号
1.1.3 对某个表里的某个字段进行汇总
? ?
public boolean isShowCardTotal() { }
return true;
在模板中给要汇总的字段的是否合计属性打上勾 然后再对应的Controller类中修改下面几个方法: }
return true;
public boolean isShowCardRowNo() {
第 2 页 / 共 19 页
public boolean isShowListRowNo() { ?
public boolean isShowListTotal() { }
再在对应的UI类中相应的方法中添加如下代码:
return true; }
return true;
//自动汇总 表体申请拨款金额 并给 表头的申请拨款金额 赋值
getBillCardPanel().setHeadItem(\napplytotal:指的是赋值的字段名;
0:指的是汇总表中的行;1:指的是汇总表中的列。
1.2 单据界面个性化
1.2.1 表体为零的,不显示为空,金额以千分位格式显示
列表下千分位显示
getBillListPanel().getParentListPanel().setShowThMark(true);
getBillCardPanel().getBodyPanel().getRendererVO().setShowZeroLikeNull(
false);
// resolved 金额以会计格式显示,如:123,456,789,12
getBillCardPanel().getBodyPanel().getRendererVO().setShowThMark(true);
nc.vo.pub.bill.BillTempletBodyVO[] tbodyvos = (nc.vo.pub.bill.BillTempletBodyVO[]) for (int j = 0; j < tbodyvos.length; j++) { }
if (tbodyvos[j].getPos() == 0 && tbodyvos[j].getShowflag() == true) { }
if (tbodyvos[j].getDatatype().toString().equals(\ }
((UIRefPane) getBillCardPanel().getHeadItem(
tbodyvos[j].getItemkey()).getComponent()) .getUITextField() .setNumShowType(
getBillCardPanel().getTempletData().getChildrenVO();
nc.ui.pub.beans.textfield.IUITextFieldNUMShowType.THOUSANDS_SEPARATORS);
1.2.2 设置字体颜色
getBillListPanel().getParentListPanel().setCellBackGround(i, key,new Color(252, 169, 175));
1.2.3 单据组合表头
/**
*设置组合表体表头 *@parambill */
publicstaticvoid groupableTableHeader(BillCardPanel bill) {
BillData billData = bill.getBillData();
第 3 页 / 共 19 页
/* wjh追加 组合表头 利用单据模板上的自定义1 开始 */
if (billData.getBodyItems() != null) {
nc.vo.pub.bill.BillTempletBodyVO[] tbodyvos =
.getTempletData().getChildrenVO();
(nc.vo.pub.bill.BillTempletBodyVO[]) bill
for (int j = 0; j < tbodyvos.length; j++) {// 根据模板上属性“自
定义项1”来组合表体的组合表头 if (tbodyvos[j].getUserdefine1() != null
&&
tbodyvos[j].getUserdefine1().trim().length() != 0) {
// 由于可能存在多叶签情况,所以要对叶签进行判断
String tablecode = tbodyvos[j].getTable_code();
BillScrollPane scrollpane = bill
{
.getBodyPanel(tablecode);
GroupableTableHeader tableheaer =
.getTable().getTableHeader();
(GroupableTableHeader) scrollpane
String colName = tbodyvos[j].getUserdefine1(); ColumnGroup cg1 = new ColumnGroup(colName); addColItem(scrollpane, cg1, int njs = 1;
for (int n = j + 1; n < tbodyvos.length; n++, j++) {
tbodyvos[j].getItemkey());
if (tbodyvos[n].getUserdefine1() != null
if }
&&
.trim().length() != 0 && n == j + 1)
tbodyvos[n].getUserdefine1().toString()
(tbodyvos[n].getUserdefine1().equals(colName)
&& tbodyvos[n].getTable_code().equals(
tablecode)) {
addColItem(scrollpane, cg1,
tbodyvos[n].getItemkey());
njs++; continue; if (njs > 1) { } break;
tableheaer.addColumnGroup(cg1);
} else {
} else {
if (njs > 1) {
第 4 页 / 共 19 页
}
}
}
}
}
}
}
tableheaer.addColumnGroup(cg1);
break;
/** *
*添加组合表头子项王韶勇追加 *
**@paramscrollpane *@paramcolGroup *@paramsColItem */
privatestaticvoid addColItem(BillScrollPane scrollpane, ColumnGroup
String sColItem) {
colGroup,
}
if (scrollpane.hasHideCol(sColItem))
return;
TableColumn col = scrollpane.getShowCol(sColItem); if (col != null)
colGroup.add(col);
1.2.4 多表头
ColumnGroup group = new ColumnGroup(“表头1”);
GroupableTableHeader gt = ((GroupableTableHeader) getBillCardPanel().getBillTable(\表体名\gt.addColumnGroup(group);
group.add(getBillCardPanel().getBodyPanel(\表体名\列名\ColumnGroup group1 = new ColumnGroup(\祖名\
GroupableTableHeader gt1 = ((GroupableTableHeader) getBillListPanel().getBodyTable().getTableHeader()); gt1.addColumnGroup(group1);
group1.add(getBillListPanel().getBodyTable().getColumnModel().getColumn(2)); group1.add(getBillListPanel().getBodyTable().getColumnModel().getColumn(3));
1.2.5 报表列分组
注释:详细解释请参看nc.vo.pub.cquery.FldgroupVO
第 5 页 / 共 19 页