NC技术汇总笔记总结.docx
《NC技术汇总笔记总结.docx》由会员分享,可在线阅读,更多相关《NC技术汇总笔记总结.docx(48页珍藏版)》请在冰点文库上搜索。
NC技术汇总笔记总结
一.得到选中的表体行数,列数等内容(总行数和当前选中的行数)2
二.设置初始化界面时的默认值3
三.表单默认执行方法以及常用的操作3
四.在报表中显示合计行4
五.在UI类中设置小数位数5
六.将表体数据清空5
七.设置字段是否可编辑的状态5
八.在UI类中编写方法打印查询条件6
九.弹出提示框6
十.在报表中得到查询面板的值6
十一.比较时间的开始与结束时间7
十二.设置编辑公式7
十三.清空缓冲数数据getBufferData().clear();7
十四.在UI类中设置查询对话框的默认值7
十五.管理型界面单据各个类的继承关系8
十六.是否显示行号,合计行,数组按钮,隐藏列8
十七.根据单据的不同状态来控制按钮的可用性。
9
十八.UI工厂开发单据模式下如何自定义按钮?
10
十九.需要设置动作脚本的六个按钮11
二十.单据界面设置某些字段的显示与隐藏11
二十一.单据开发的一般步骤:
11
二十二.界面数据访问12
二十三.导出与导入数据库12
二十四.listmapset的操作12
二十五.改变焦点自动显示表头金额的值13
二十六.设置行选中的状态13
二十七,初始进入时默认显示卡片界面或列表界面14
二十八,在MyEventHandler类中,在onBoSave()中验证必输项14
二十九.多页签得到某一页签到的行数15
三十,判断日期的前后15
三十一.验证表头的必输项不能为空16
三十二,执行表体编辑公式16
三十三,ECLIPSE中代码不显示行号17
三十四,在ECLIPSE中添加反编译17
三十五,编辑后事件的处理17
三十六,编辑前事件的处理17
三十七。
编辑事件设某一个字段不能编辑18
三十八.在保存的时候,验证表体不能为空/18
三十九.删除表体某一行触发的事件18
四十,UI类中初始化设置18
四十一,YESORNO对话框19
四十二.得到选中的行数与得到选中行数的行号的数组,数组以0开头19
四十三.对VO的操作,聚合VO,得到表体,表体某一个页签的VO19
四十四.添加一个自定义的按钮20
四十五.取得某一个页签下的记录的行数21
四十六.修改的时候,清空批号想要保存到数据库必须设置行的状态21
四十七.执行表头的公式21
四十八.根据不同的条件,过滤不同的参照记录21
四十九,获取表体当前操作页签22
五十,输入开始和结束日期,从开始到结束日期每天都列出来22
五十一,在列表状态下,根据单据的状态,确定按钮是否可用23
五十二,不管在是列表还是卡片面下取得表头或表体的值23
五十三,UFDouble型的数据变成两位小数的字符型,或零位小数24
五十四,系统按钮的操作24
五十五,SQL查询时将字符转换成小数型24
五十六,删除单页签表体删除行,以及增行24
五十七,多页签表体删除行,增行25
五十八,得到月份,年份25
五十九,如何得到多页签到指定的子VO25
六十:
删除表体行25
六十一.传过一个主键的数组,如何组装成‘主键’,‘主键’的形式25
六十二.导出TXT文本26
六十三,删除表体的记录行29
六十四.确定某一列在模板上位置29
六十五.单据添加复选,判断选中的记录行29
六十六,判断按钮的状态是否可用30
一.得到选中的表体行数,列数等内容(总行数和当前选中的行数)
//得到选中的列数
selCol=getBillCardPanelWrapper().getBillCardPanel().getBillTable().getSelectedColumn();
//得到当前选中列的索引
colIndex=getBillCardPanel().getBillTable().convertColumnIndexToModel(selCol);
//得到选中的行号从0开始
iSelRow=getBillCardPanel().getBillTable().getSelectedRow();
/得到当前选中的行
i=getReportBase().getBillTable().getSelectedRow();
//得到表体一共有多少行/
this.getBillCardPanel().getRowCount();
//判断是否选中行
if(getSetInBalPriceUI().getBillCardPanel().getBillTable().getSelectedRow()==-1)
{getSetInBalPriceUI().showErrorMessage("请选择表体数据行!
");
return;
}
//判断选中的某一行的某一列是否为空
if(getSetInBalPriceUI().getBillCardPanel().getBodyValueAt(selectRow,"sys_shipper_id")==null){
getSetInBalPriceUI().showErrorMessage("请录入发货单位!
");
//得到某一行某一列指定的值
sys_shipper_id=getSetInBalPriceUI().getBillCardPanel().getBodyValueAt(selectRow,"sys_shipper_id").toString();
//得到当前选中行的指定的某一列
(String)getReportBase().getBodyValueAt(i,"sendunitID");
this.getBillCardPanel().setBodyValueAt(值,行,列);
this.getBillCardWrapper().getBillCardPanel();
//获取表体第i行字段值
getBillCardPanel().getBodyValueAt(i."字段")
二.设置初始化界面时的默认值
/**
*初始化卡片界面时加载的默认属性在UI中
*/
publicvoidsetDefaultData()throwsException{
//单据类型87
getBillCardPanel().setHeadItem("pk_billtype",IBillType.CY_DYAPPLYPLAN);
//制单日期默认值
getBillCardPanel().setTailItem("doperatordate",_getDate());
}
三.表单默认执行方法以及常用的操作
//自定义按钮处理事件,在自定义按钮的时候会定义一个值,根据传过来的值判断处理哪个事件执行哪个方法,在MyEventHandler类
protectedvoidonBoElse(intintBtn)throwsException{}
*表单编辑
protectedvoidonBoEdit()throwsException{}
*表单删除
protectedvoidonBoDelete()throwsException{}
*表单保存
protectedvoidonBoSave()throwsException{}
*表单取消
protectedvoidonBoCancel()throwsException{}
*表单编辑后事件UI类中
publicvoidafterEdit(BillEditEventevt){
super.afterEdit(evt);
StringcolStr=evt.getKey();
introwCount=evt.getRow();
}
*表单编辑前事件UI类中
publicbooleanbeforeEdit(BillEditEventevt){
StringcolStr=evt.getKey();
If(colStr.equals(“字段名”)){returnfalse;}//设置某一个字段不可编辑
//TODO自动生成方法存根
returnsuper.beforeEdit(arg0);
}
*表单标签改变事件UI
publicvoidafterTabChanged(BillTabbedPaneTabChangeEventarg0){
StringTabName=arg0.getBtvo().getTabcode();
System.out.println(TabName);
if(TabName.equals("fk_cm_contract1")||TabName.equals("fk_cm_contract2")){//设置标签fk_cm_consub可编辑
this.getBillCardPanel().getBillModel("fk_cm_consub").setEnabled(true);
//设置当选中fk_cm_contract1这个标签时,子表的第一个标签到选中显示this.getBillCardPanel().getBodyTabbedPane().getModel().setSelectedIndex(0);
//设置标签fk_cm_consub不可编辑
this.getBillCardPanel().getBillModel("fk_cm_conisub").setEnabled(false);
}
*UI类中行改变事件
publicvoidbodyRowChange(BillEditEventev){
//TODO自动生成方法存根
super.bodyRowChange(ev);
inta=ev.getRow();//得到当前选中的行
inta=this.getBillCardPanel().getBillTable().getSelectedRow();
Stringb=this.getBillCardPanel().getBodyValueAt(行号,"字段值");
}
四.在报表中显示合计行
protectedvoidonQuery()throwsException
{
Stringpk_corp=this.getCorpPrimaryKey();
//设置表头面板显示表头查询条件和打印时表头显示信息
createConditionAndHeadPrintInfo();
//显示查询结果
CircularlyAccessibleValueObject[]results=getQueryResult(port);
ReportBaseVOtvo=newReportBaseVO();
tvo.setAttributeValue("port","合计");
//添加合计
if(results!
=null&&results.length>0){
CircularlyAccessibleValueObject[]nvos=newCircularlyAccessibleValueObject[results.length+1];
UFDoubletotalnum=newUFDouble(0);
for(inti=0;itotalnum=totalnum.add((UFDouble)results[i].getAttributeValue("shuliang"));
nvos[i]=results[i];
}
tvo.setAttributeValue("shuliang",totalnum);
nvos[results.length]=tvo;
getReportBase().setBodyDataVO(nvos);
this.getReportBase().setBodyValueAt("合计",results.length,"port");
}
if(results==null||results.length<=0){
getReportBase().setBodyDataVO(results);
showHintMessage("没有可显示数据");
}
}
}
五.在UI类中设置小数位数
publicArrearsComStaUI()
{super.setTitleText("欠款单位表");
//设置小数位数:
this.setColumnDecimal(newString[]{"carnum","tonnum","jsmoney","yingkuids","yunfei","qitafy","amount"},
newint[]{0,0,0,0,0,0,0});
或是:
this.getReportBase().getBody_Item("quan").setDecimalDigits(0);
}
六.将表体数据清空
this.getBillCardPanel().getBillModel().clearBodyData();
七.设置字段是否可编辑的状态
/*发运开始日期结束日期编辑控制在运输方式是地销时可编辑其他不可编辑
if(colStr.equals("conveytype")){
Stringstr=this.getBillCardPanel().getHeadItem("conveytype").getValue();
if(str!
=null&&!
str.trim().equals("")){
if(ITargetPrimaryID.CARCONVEYANCE_CONVEY.equals(str)){
this.getBillCardPanel().getHeadItem("startdate").setEnabled(true);
this.getBillCardPanel().getHeadItem("enddate").setEnabled(true);
}
else{
this.getBillCardPanel().setHeadItem("startdate",null);
this.getBillCardPanel().setHeadItem("enddate",null);
this.getBillCardPanel().getHeadItem("startdate").setEnabled(false);
this.getBillCardPanel().getHeadItem("enddate").setEnabled(false);}}}
八.在UI类中编写方法打印查询条件
protectedvoidcreateConditionAndHeadPrintInfo(){
this.showCondition(this.createConditionsFromConditionVO(this
.getQryDlg().getConditionVO()));
this.updateUI();
}
九.弹出提示框
MessageDialog.showOkCancelDlg(getDyApplyPlanUI(),"提示","你确定要下发该单据吗?
")//弹出对话框
nc.ui.pub.beans.MessageDialog.showHintDlg(getBillUI(),"提示","客户基本档案更新成功!
!
");
十.在报表中得到查询面板的值
protectedvoidonQuery()throwsException{
getQryDlg().showModal();
if(getQryDlg().getResult()==QueryDLG.ID_OK){
//取得查询日期
Stringport=null;//港口
ConditionVO[]cndvos=getQryDlg().getConditionVO();
for(inti=0;iif("port".equals(cndvos[i].getFieldCode())){
port=cndvos[i].getValue().trim();
}
}
十一.比较时间的开始与结束时间
if(pareTo(enddate)>0){
getSetInBalPriceUI().showErrorMessage("【起始日期】不能超过【结束日期】!
");
return;
}
十二.设置编辑公式
//表体显示公式
String[]bodyForm=newString[]{"sys_shipper_id->getColValue(zk_sys_organ,sys_organ_id,sys_organ_id,sys_shipper_id)"};
for(inti=0;isuper.onBoLineAdd();//增行
//为表体某一行赋值
getSetInBalPriceUI().getBillCardPanel().setBodyValueAt((String)assayInfo[i].getAttributeValue("laiyangdanwei"),i,"sys_shipper_id");
//执行表体公式
getSetInBalPriceUI().getBillCardPanel().getBillModel().execFormulas(i,bodyForm);//
}
十三.清空缓冲数数据getBufferData().clear();
十四.在UI类中设置查询对话框的默认值
格式:
2009-01
protectedQueryDLGcreateQueryDLG(){
ZBReportBaseDLGdlg=newZBReportBaseDLG();
dlg.setTempletID(getUIControl()._getPk_corp(),getUIControl()
._getModuleCode(),getUIControl()._getOperator(),null);
dlg.setValueRef("sdate",getQueryYearMonth());
dlg.setValueRef("edate",getQueryYearMonth());
//设置默认的选择当前年
QueryConditionVO[]qryvos=dlg.getConditionDatas();
for(inti=0;iif(qryvos[i].getFieldCode().equals("sdate")){
qryvos[i].setValue(this.getClientEnvironment().getDate().toString().substring(0,7));}
if(qryvos[i].getFieldCode().equals("edate")){
qryvos[i].setValue(this.getClientEnvironment().getDate().toString().substring(0,7));}}
returndlg;
}
十五.管理型界面单据各个类的继承关系
前台界面类:
ClientUIextendsBIllManageUI
1.重写父类方法protectedBusinessDelegatorcreateBusinessDelegator()
返回前台界面业务委托类的具体实现。
2.重写父类方法protectedManageEventHandlercreateEventHandler()
返回前台事件处理(按钮处理器)类的具体实现。
3.重写父类方法protectedAbstractManageControllercreateController()
返回前台控制类的具体实现。
4.重写父类方法protectedvoidinitPrivateButton()
添加私有按钮
addPrivateButton((newDeleteAllbutnVO()).getButtonVO())
5.重写父类方法protectedvoidinitSelfData()
6.重写父类方法publicvoidsetDefaultData()throwsException
设置默认数据
事件处理类:
TestEventHandlerextendsManageEventHandler
重写父类各种单据按钮事件,完成具体的事件动作实现。
如:
1.重写查询类
protectedvoidonBoQuery()throwsException{
super.onBoQuery();
}
2.重写其他按钮动作事件处理,比如(导入等)
protectedvoidonBoElse(intintBtn)throwsException{
super.onBoQuery();
}
十六.是否显示行号,合计行,数组按钮,隐藏列
1.列表状态下是否显示行号
publicbooleanisShowListRowNo(){
returnfalse;
}
2.卡片状态下是否显示行号
publicbooleanisShowCardRowNo(){
returnfalse;
}
3.卡片状态下是否显示合计
publicbooleanisShowCardTotal(){
returnfalse;
}
4.列表状态下是否显示合计
publicbooleanisShowListTotal(){
returnfalse;
}
5.返回卡片状态下按钮数组
publicint[]getCardButtonAry(){
returnnewint[]{IBillButton.Add,IBillButton.Query,
IBillButton.Save,IBillButton.Edit,IBillButton.Del,
IBillButton.Line,IBillButton.Cancel,IBillButton.Print,
IBillButton.Return,
};
}
6.返回列表状态下按钮数组
p