EAS BOS f7弹出指定窗体的操作方法
A、定义F7窗体从list继承, 新建的F7窗体需实现implements KDPromptSelector,实现了KDPromptSelector就可以在f7窗体类中添加方法getData
B、 //弹出窗口的代码
private OrgListUI prmtorg_F7ListUI;
prmtFixcenter.addSelectorListener(new SelectorListener() {
public void willShow(SelectorEvent e) { try { prmtorg_F7ListUI = new com.kingdee.eas.utils.client.OrgListUI();} catch (Exception e1) {// TODO 自动生成 catch 块e1.printStackTrace();}HashMap ctx = new HashMap();ctx.put("bizUIOwner", javax.swing.SwingUtilities.getWindowAncestor(prmtorg_F7ListUI)); prmtorg_F7ListUI.setF7Use(true, ctx);prmtFixcenter.setSelector(prmtorg_F7ListUI);}
});C、 //写f7窗口返回的内容放到数组中
public Object getData() {
HashMap data = new HashMap();List psnlst = new ArrayList();List orglst = new ArrayList();TreePath []path = treeMain.getSelectionPaths();for(int i=0;i<path.length;i++){ TreePath item = path[i];Object ob = item.getLastPathComponent();if (ob instanceof KDTreeNode) { KDTreeNode node = (KDTreeNode) ob;Object usrobj =node.getUserObject();//添加组织if (usrobj instanceof AdminOrgUnitInfo) { orglst.add(usrobj);this.visitOrgNodes(node,orglst);}}}data.put("ORG",orglst);return data;}
D、调用界面接收f7返回的内容
定义ArrayList listOrg
prmtFixcenter.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent changeevent){ KDBizPromptBox sourceBox = (KDBizPromptBox)changeevent.getSource();Object obj = sourceBox.getData();HashMap data = (HashMap)obj;if (data != null)listOrg = (ArrayList)data.get("ORG"); }
});
E、F7窗口添加
private boolean isF7Use;
protected F7Render f7Delegate;public void setF7Use(boolean isF7Use,HashMap ctx) {
this.isF7Use = isF7Use;
if(isF7Use){
try{
this.setPreferredSize(new Dimension(800,600));
if (ctx == null) {
ctx = new HashMap();
}
f7Delegate = new PsnF7Render(this, ctx);
f7Delegate.init();
this.initLayout();
}
catch(Exception e) {
handUIException(e);
}
}
}public void show() {
if (isF7Use) {
f7Delegate.show();
}
else {
super.show();
}
}
EAS BOS f7弹出指定窗体 的操作方法
如何扩展标准产品F7弹出窗口的功能
第一步:编写扩展类,继承自com.kingdee.bos.ctrl.extendcontrols.KDCommonPromptDialog
如下示例:
package com.kingdee.eas.custom.medianterface.client;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import com.kingdee.bos.BOSException;
import com.kingdee.bos.ctrl.extendcontrols.KDCommonPromptDialog;
import com.kingdee.bos.ctrl.swing.KDWorkButton;
import com.kingdee.eas.common.EASBizException;
import com.kingdee.eas.custom.util.MediaUtil;
import com.kingdee.eas.fi.cas.PaymentBillFactory;
import com.kingdee.eas.fi.cas.PaymentBillInfo;
/**
* 在标准F7弹出窗的toolbar上添加一个按钮,并实现按钮的功能
* @author Tommy.Xiao
*/
public class UserKDCommonPromptDialog extends KDCommonPromptDialog {public UserKDCommonPromptDialog() {super();}
// @Overrideprotected void dialogInit() {super.dialogInit();//请在此处修改F7弹出窗口,可进行添加按钮,菜单等addUriButton();}protected void addUriButton(){KDWorkButton bar = new KDWorkButton();bar.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {//实现按钮功能
ActionUri_actionPerformed(e);}});bar.setText("查看影像 ");getSkinRootPane().getBarPartAreaOfOrientation(1).getToolBars()[0].add(bar);}protected void ActionUri_actionPerformed(ActionEvent e ){ArrayList list = getSelectedIdValues();if(list.size() > 0){String id = list.get(0).toString();String oql = "select * where id='" + id + "'";try {PaymentBillInfo payment = PaymentBillFactory.getRemoteInstance().getPaymentBillInfo(oql);String barcode = payment.getBarcode();MediaUtil.viewImg(barcode);} catch (EASBizException e1) {e1.printStackTrace();} catch (BOSException e1) {e1.printStackTrace();}}}
}
第二步:选中单据上的F7控制。设置其defaultF7UIName属性值上一步定义的类全路径。示例如下:
第三步:发布上一步修改的UI元数据。在其扩展类的onload()方法中添加以下代码:
QueryAgent agent = new QueryAgent();MetaDataPK pk = new MetaDataPK("com.kingdee.eas.custom.medianterface.app", "PaymentBillMediaQuery"); //具体的Query根据实际情况填写agent.setQueryInfoPK(pk);UserKDCommonPromptDialog userF7 = new UserKDCommonPromptDialog();userF7.setQueryInfo(agent.getQueryInfo());kDBizPayment.setSelector(userF7);
示例如下:
package com.kingdee.eas.fi.fa.manage.client;
import com.kingdee.bos.ctrl.extendcontrols.QueryAgent;
import com.kingdee.bos.metadata.MetaDataPK;
import com.kingdee.eas.custom.medianterface.client.UserKDCommonPromptDialog;
public class FaCurCardEditUICTEx extends FaCurCardEditUI{public FaCurCardEditUICTEx() throws Exception {super();}@Overridepublic void onLoad() throws Exception {super.onLoad();QueryAgent agent = new QueryAgent();MetaDataPK pk = new MetaDataPK("com.kingdee.eas.custom.medianterface.app", "PaymentBillMediaQuery");agent.setQueryInfoPK(pk);UserKDCommonPromptDialog userF7 = new UserKDCommonPromptDialog();userF7.setQueryInfo(agent.getQueryInfo());kDBizPayment.setSelector(userF7);}
}
EAS BOS f7弹出指定窗体的操作方法相关推荐
- winform弹出唯一窗体的方法
Form1中btn1按钮点击show出Form2,当Form2处于开启状态时,再次点击btn1不会继续弹出窗体,而是将焦点定位至已开启的Form2上: 当Form2关闭后,再次点击btn1则会show ...
- JavaScript 弹出子窗体并返回结果到父窗体
思路:用window.showModalDialog方法获取到弹出子窗体的引用,再在子页面用window.returnValue="***"来返回结果. 示例代码:(用jQuery ...
- 乐鑫Esp32学习之旅14 esp32 sdk编程实现门户强制认证,连接esp32热点之后,自动强制弹出指定的登录html界面。(附带Demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...
- 高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
高德地图js API实现:鼠标悬浮于点标记时,弹出信息窗体显示详情,点击点标记时放大地图 <!doctype html> <html> <head><meta ...
- JS特效教程:给网站添加鼠标点击弹出指定汉字特效
网站添加鼠标点击弹出指定汉字特效,就是鼠标点击站点任何位置,都会随机弹出我们指定的一组汉字中的一个.比如指定"文明,自由,民主,公正,和谐"等,点击鼠标时就会随机显示这一组的某个词 ...
- [Prism框架实用分享]如何在主程序中合理的弹出子窗体
大家好 说起子窗体,大家都会想到ChildWindow,多熟悉的一个控件.不错,Sliverlight中已经提供了子窗体的具体实现,而在WPF中却没有这么好的事情(有的第三方控件商已经提供此控件).最 ...
- WinForm如何控制ShowDialog()的返回值,并且可以判断是否会弹出主窗体
我做了个有"确定"和"取消"按钮的WinForm 它ShowDialog()后如何做到: 点"确定"返回DialogResult.OK 点& ...
- 【keepass】每次打开软件总是弹出指定的文件不存在,如何关闭和清除以前打开数据库的文件记录?
一.问题背景 因为我以前打开过本地的一个密码数据库文件,在我换一台电脑使用后,因为绝对路径发生变化,keepass软件无法顺利依据已有记录找到文件,所以每次都要弹出[指定的文件不存在],如下图所示. ...
- 金蝶 EAS BOS F7监听器
记得把监听器写入onLoad() @Overridepublic void onLoad() throws Exception {// TODO Auto-generated method stubs ...
最新文章
- 关于打开新链接,用当前页还是用新页面?
- 使用SharpPCap在C#下进行网络抓包
- 深度抠图--Deep Image Matting
- 2022QS世界大学排名:清北跻身世界前20
- 数学奥赛用不用计算机,报考自招必看!五大学科竞赛利弊详解,到底哪科最适合你?...
- 开篇词:中文自然语言处理——未来数据领域的珠穆朗玛峰
- 查询Linux充电时间,【充电】Linux学习(二)——常用的linux命令
- 轻量级数据sqlite的C++调用示例
- 如何用编程 get 百万年终奖?
- 微软为何能一直向安卓厂商收费?
- Thymeleaf 用法
- 管理系统中计算机er图怎么画,er图怎么画?数据库E-R图画法教程详解
- javascript监听输入框_js监听输入框值的即时变化onpropertychange、oninput
- 下载pyboard的flash中的驱动程序_教你如何安装打印机驱动程序
- 怀疑chinaitlab的一个Linux模块被黑了!!
- 这个好像、也许、或许、大概、应该、Maybe真的可以算是传说中的Spring.Net了吧...
- 探索:使用北鲲云平台利用Gaussian16进行HAT反应过渡态的寻找
- c语言预处理命令12个,C语言编译预处理和预处理命令
- 生而强悍的iQOO如何在安卓手机阵营成功跑出?
- 滑动报错 Unable to preventDefault inside passive event listener due to target being treated as passive.
热门文章
- CV15 轮廓检测:霍夫变换原理及应用
- 【渝粤题库】国家开放大学2021春2226物业管理实务(2)题目
- ora-01652:无法通过128(在表空间space中)扩展temp段解决办法
- 洛谷 P2056 采花 - 莫队算法
- C和C++的区别?如何学习C++?(转)
- 创造与魔法游戏服务器无限金币,创造与魔法无限金币版
- ns-3.29在Ubuntu系统的安装
- SQL SERVER 用户自定义函数(UDF)深入解析
- Data ONTAP Storage Management--Qtree
- Java找到休息日问题