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弹出指定窗体的操作方法相关推荐

  1. winform弹出唯一窗体的方法

    Form1中btn1按钮点击show出Form2,当Form2处于开启状态时,再次点击btn1不会继续弹出窗体,而是将焦点定位至已开启的Form2上: 当Form2关闭后,再次点击btn1则会show ...

  2. JavaScript 弹出子窗体并返回结果到父窗体

    思路:用window.showModalDialog方法获取到弹出子窗体的引用,再在子页面用window.returnValue="***"来返回结果. 示例代码:(用jQuery ...

  3. 乐鑫Esp32学习之旅14 esp32 sdk编程实现门户强制认证,连接esp32热点之后,自动强制弹出指定的登录html界面。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  4. 高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作

    高德地图js API实现:鼠标悬浮于点标记时,弹出信息窗体显示详情,点击点标记时放大地图 <!doctype html> <html> <head><meta ...

  5. JS特效教程:给网站添加鼠标点击弹出指定汉字特效

    网站添加鼠标点击弹出指定汉字特效,就是鼠标点击站点任何位置,都会随机弹出我们指定的一组汉字中的一个.比如指定"文明,自由,民主,公正,和谐"等,点击鼠标时就会随机显示这一组的某个词 ...

  6. [Prism框架实用分享]如何在主程序中合理的弹出子窗体

    大家好 说起子窗体,大家都会想到ChildWindow,多熟悉的一个控件.不错,Sliverlight中已经提供了子窗体的具体实现,而在WPF中却没有这么好的事情(有的第三方控件商已经提供此控件).最 ...

  7. WinForm如何控制ShowDialog()的返回值,并且可以判断是否会弹出主窗体

    我做了个有"确定"和"取消"按钮的WinForm 它ShowDialog()后如何做到: 点"确定"返回DialogResult.OK 点& ...

  8. 【keepass】每次打开软件总是弹出指定的文件不存在,如何关闭和清除以前打开数据库的文件记录?

    一.问题背景 因为我以前打开过本地的一个密码数据库文件,在我换一台电脑使用后,因为绝对路径发生变化,keepass软件无法顺利依据已有记录找到文件,所以每次都要弹出[指定的文件不存在],如下图所示. ...

  9. 金蝶 EAS BOS F7监听器

    记得把监听器写入onLoad() @Overridepublic void onLoad() throws Exception {// TODO Auto-generated method stubs ...

最新文章

  1. 关于打开新链接,用当前页还是用新页面?
  2. 使用SharpPCap在C#下进行网络抓包
  3. 深度抠图--Deep Image Matting
  4. 2022QS世界大学排名:清北跻身世界前20
  5. 数学奥赛用不用计算机,报考自招必看!五大学科竞赛利弊详解,到底哪科最适合你?...
  6. 开篇词:中文自然语言处理——未来数据领域的珠穆朗玛峰
  7. 查询Linux充电时间,【充电】Linux学习(二)——常用的linux命令
  8. 轻量级数据sqlite的C++调用示例
  9. 如何用编程 get 百万年终奖?
  10. 微软为何能一直向安卓厂商收费?
  11. Thymeleaf 用法
  12. 管理系统中计算机er图怎么画,er图怎么画?数据库E-R图画法教程详解
  13. javascript监听输入框_js监听输入框值的即时变化onpropertychange、oninput
  14. 下载pyboard的flash中的驱动程序_教你如何安装打印机驱动程序
  15. 怀疑chinaitlab的一个Linux模块被黑了!!
  16. 这个好像、也许、或许、大概、应该、Maybe真的可以算是传说中的Spring.Net了吧...
  17. 探索:使用北鲲云平台利用Gaussian16进行HAT反应过渡态的寻找
  18. c语言预处理命令12个,C语言编译预处理和预处理命令
  19. 生而强悍的iQOO如何在安卓手机阵营成功跑出?
  20. 滑动报错 Unable to preventDefault inside passive event listener due to target being treated as passive.

热门文章

  1. CV15 轮廓检测:霍夫变换原理及应用
  2. 【渝粤题库】国家开放大学2021春2226物业管理实务(2)题目
  3. ora-01652:无法通过128(在表空间space中)扩展temp段解决办法
  4. 洛谷 P2056 采花 - 莫队算法
  5. C和C++的区别?如何学习C++?(转)
  6. 创造与魔法游戏服务器无限金币,创造与魔法无限金币版
  7. ns-3.29在Ubuntu系统的安装
  8. SQL SERVER 用户自定义函数(UDF)深入解析
  9. Data ONTAP Storage Management--Qtree
  10. Java找到休息日问题