单据开发-业务单据Edit界面代码中篇(GUI端)

关注公众号获取更多金蝶EAS开发方面的内容

因论坛版权要求,部分图片无法显示,可以直接方位微信公众号链接
https://mp.weixin.qq.com/s/PkKrj8UQYMh02L7iSEW4AA
本篇文档介绍业务单据Editt界面的一些常用监听事件开发
控件的监听一般有两种方式添加
1、通过元数据添加
2、通过代码添加
通过元数据添加相对简单,本篇文章主要讲解通过代码添加监听
01
通过元数据添加监听
操作步骤:
1、打开单据所对应的EditUI界面。
2、选中需要添加事件的控件。
3、打开属性窗口,选中"事件"页签
4、根据Event名称,在Mehod Name列双击之后保存
5、发布对应的UI界面

02
重写方法添加逻辑
操作步骤:
1、打开EditUI界面所对应的java代码界面。
2、根据Mehod Name 重写方法名称

03
通过代码添加监听
/**
* output loadFields method
*/
public void loadFields()
{
detachListeners(); //添加监听
super.loadFields();
attachListeners(); //删除监听
}
/**
* 删除监听
*/
protected void detachListeners() {
removeDataChangeListener(prmtcompany); //公司
removeDataChangeListener(prmtdept); //部门
removeDataChangeListener(txtamount); //金额
removeDataChangeListener(kdtEntrys); //分录
}
/**
* 添加监听
*/
protected void attachListeners() {
addDataChangeListener(prmtcompany); //公司
addDataChangeListener(prmtdept); //部门
addDataChangeListener(txtamount); //金额
addDataChangeListener(kdtEntrys); //分录
}
/**
* 添加监听
* @param com
*/
protected void addDataChangeListener(JComponent com){
if(com==null) return;
final String shortCutName = com.getName();
//下拉框
if(com instanceof KDComboBox){ //判断控件类型
KDComboBox cb = (KDComboBox) com; //转化
cb.addItemListener(new ItemListener(){ //添加监听
public void itemStateChanged(ItemEvent e) {
dataChangeControl(shortCutName,e); //监听具体处理方法
}
});
}else if(com instanceof KDPromptBox){
//F7控件
KDPromptBox prmt = (KDPromptBox) com;
prmt.addDataChangeListener(new DataChangeListener(){
public void dataChanged(DataChangeEvent e) {
dataChangeControl(shortCutName,e);
}
});
}else if(com instanceof KDTable){
//分录表格控件
KDTable table = (KDTable) com;
table.addKDTEditListener(new KDTEditAdapter() {
public void editStopped(KDTEditEvent e) {
dataChangeControl(shortCutName,e);
}
});
}else if(com instanceof KDFormattedTextField){
//金额控件
KDFormattedTextField numberText = (KDFormattedTextField) com;
numberText.addDataChangeListener(new DataChangeListener(){
public void dataChanged(DataChangeEvent e) {
dataChangeControl(shortCutName,e);
}
});
}else if(com instanceof KDCheckBox){
//单选框
KDCheckBox box = (KDCheckBox)com;
box.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
dataChangeControl(shortCutName,e);
}
});
}
//只是添加的常用的监听, 也可以自己加入 日期控件 和文本控件的监听
}
/**
* 删除监听
* @param com
*注意 addDataChangeListener 中手动添加的监听 需要在此处进行删除
*/
protected void removeDataChangeListener(JComponent com){
if(com==null) return;
if(com instanceof KDComboBox){
//下拉框
ItemListener[] listeners = com.getListeners(ItemListener.class);
for(int i=0;i<listeners.length;i++){
((KDComboBox)com).removeItemListener(listeners[i]);
}
}else if(com instanceof KDPromptBox){
//F7
KDPromptBox box = (KDPromptBox) com;
DataChangeListener[] listeners2 = box.getListeners(DataChangeListener.class);
for(int i = 0; i < listeners2.length; i++){
box.removeDataChangeListener((DataChangeListener) listeners2[i]);
}
}else if(com instanceof KDTable){
//分录
KDTable tb = (KDTable) com;
KDTEditListener[] listeners2 = tb.getListeners(KDTEditListener.class);
for(int i = 0; i < listeners2.length; i++){
tb.removeKDTEditListener((KDTEditListener) listeners2[i]);
}
}else if(com instanceof KDFormattedTextField){
//金额
DataChangeListener[] listeners = com.getListeners(DataChangeListener.class);
for(int i=0;i<listeners.length;i++){
((KDFormattedTextField)com).removeDataChangeLis单据开发-业务单据Edit界面代码中篇(GUI端)
关注公众号获取更多金蝶EAS开发方面的内容因论坛版权要求,部分图片无法显示,可以直接方位微信公众号链接https://mp.weixin.qq.com/s/PkKr...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇
下一篇



