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();
    }
//  @Override
    protected 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();
    }
     
    @Override
    public 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);
    }
}




  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值