`
xy0792
  • 浏览: 90056 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

EAS系统F7控件树形显示

 
阅读更多

最近有个需求,需要用F7选择客户组别,物料组别、供应商组别等,但是用户体验就不说了,点F7出来一张表,没任何层次结构,客户相当不满意,要选择出来一颗树,现在讲F7显示效果如下,并列出代码。

 

需要实现这个功能,要做如下

注意:我的包全部在如下路径,如果要自己修改,请自己替换路径:com.kingdee.eas.shine.utils.client

1、设计TreeUI:继承CoreUI,放一个TreeView,一个Tree 一个确定按钮,一个取消按钮

 

 

2、发布TreeUI元数据,实现类代码如下(未写注释)

 

/**
 * output package name
 */
package com.kingdee.eas.shine.utils.client;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Iterator;

import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;

import org.apache.log4j.Logger;

import com.kingdee.bos.BOSException;
import com.kingdee.bos.ctrl.swing.tree.DefaultKingdeeTreeNode;
import com.kingdee.bos.ctrl.swing.tree.KingdeeTreeModel;
import com.kingdee.bos.metadata.data.SortType;
import com.kingdee.bos.metadata.entity.EntityViewInfo;
import com.kingdee.bos.metadata.entity.FilterInfo;
import com.kingdee.bos.metadata.entity.SelectorItemCollection;
import com.kingdee.bos.metadata.entity.SorterItemCollection;
import com.kingdee.bos.metadata.entity.SorterItemInfo;
import com.kingdee.bos.ui.face.CoreUIObject;
import com.kingdee.eas.framework.ITreeBase;
import com.kingdee.eas.framework.TreeBaseCollection;
import com.kingdee.eas.framework.TreeBaseInfo;
import com.kingdee.eas.shine.cm.CostObjectTreeFactory;
import com.kingdee.eas.util.client.MsgBox;

/**
 * output class name
 */
public class TreeUI extends AbstractTreeUI {
	private static final Logger logger = CoreUIObject.getLogger(TreeUI.class);
	ITreeBase iTreeBase;

	TreeBaseInfo selectData;
	private boolean isCancel;

	public static final String STRTREEBASE = "STRTREEBASE";
	public static final String TREE_TITLE = "TREE_TITLE";
	public static final String TREE_FILTER = "TREE_FILTER";

	/**
	 * output class constructor
	 */
	public TreeUI() throws Exception {
		super();
		isCancel = false;
	}

	public boolean isCanceled() {
		return isCancel;
	}

	public TreeBaseInfo getData() {
		return selectData;
	}

	@Override
	public void onLoad() throws Exception {
		super.onLoad();
		buildTree();
		btnOK.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				btnOK_click();
			}
		});
		btnCancel.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				isCancel = true;
				disposeUIWindow();
			}
		});

		treeMain.addTreeSelectionListener(new TreeSelectionListener() {

			public void valueChanged(TreeSelectionEvent e) {
				treeMain_valueChanged(e);
			}
		});
		treeMain.addMouseListener(new MouseAdapter() {

			public void mouseReleased(MouseEvent e) {
				treeMain_clicked(e);
			}
		});
	}

	protected void treeMain_clicked(MouseEvent e) {
		if (e.getClickCount() == 2) {
			btnOK_click();
		}
	}

	private void buildTree() throws BOSException {
		EntityViewInfo evi = new EntityViewInfo();
		SelectorItemCollection sic = evi.getSelector();
		sic.add("*");
		SorterItemCollection sorters = new SorterItemCollection();
		SorterItemInfo sorter = new SorterItemInfo("longNumber");
		sorter.setSortType(SortType.ASCEND);
		sorters.add(sorter);
		evi.setSorter(sorters);
		
		String title = (String) getUIContext().get(TREE_TITLE);
		setUITitle(title);
		iTreeBase = (ITreeBase) getUIContext().get(STRTREEBASE);
		FilterInfo filter = (FilterInfo) getUIContext().get(TREE_FILTER);
		if(filter!=null){
			evi.setFilter(filter);
		}
		TreeBaseCollection collection = iTreeBase.getTreeBaseCollection(evi);
		
		DefaultKingdeeTreeNode root = new DefaultKingdeeTreeNode(title);
		DefaultKingdeeTreeNode lastNode = root;
		String lastLongNumber = null;

		for (Iterator iterator = collection.iterator(); iterator.hasNext();) {
			TreeBaseInfo group = (TreeBaseInfo) iterator.next();

			if (lastLongNumber == null) {
				lastLongNumber = group.getLongNumber();
				DefaultKingdeeTreeNode groupNode = new DefaultKingdeeTreeNode(group.getName());
				lastNode = groupNode;
				root.add(groupNode);
			} else {
				String longNumber = group.getLongNumber();
				DefaultKingdeeTreeNode groupNode = new DefaultKingdeeTreeNode(group.getName());
				if (longNumber.startsWith(lastLongNumber)) {
					lastNode.add(groupNode);
				} else {
					DefaultKingdeeTreeNode parent = getParent(lastNode, group.getLevel());
					if (parent != null) {
						parent.add(groupNode);
					}
				}
				lastNode = groupNode;
				lastLongNumber = longNumber;
			}
			lastNode.setUserObject(group);
		}
		treeMain.setModel(new KingdeeTreeModel(root));
	}

	private DefaultKingdeeTreeNode getParent(DefaultKingdeeTreeNode node,
			int level) {
		if (node.getLevel() == 0) {
			return node;
		} else if (node != null) {
			Object object = node.getUserObject();
			if (object != null && object instanceof TreeBaseInfo) {
				TreeBaseInfo group = (TreeBaseInfo) object;
				if ((level - 1) == group.getLevel()) {
					return node;
				} else {
					return getParent((DefaultKingdeeTreeNode) node.getParent(), level);
				}
			}
		}
		return null;
	}

	protected void btnOK_click() {
		if (selectData == null) {
			MsgBox.showWarning(this, "请选择节点");
			abort();
		}
		isCancel = false;
		disposeUIWindow();

	}

	protected void treeMain_valueChanged(TreeSelectionEvent e) {
		if (e.getNewLeadSelectionPath() != null) {
			DefaultKingdeeTreeNode node = (DefaultKingdeeTreeNode) e.getNewLeadSelectionPath().getLastPathComponent();
			if (node != null) {
				Object object = node.getUserObject();
				if (object != null && object instanceof TreeBaseInfo) {
					selectData = (TreeBaseInfo) object;
				}
			}
		}

	}

}

 

 

3、做一个类实现KDPromptSelector接口

package com.kingdee.eas.shine.utils.client;

import java.awt.Dialog;
import java.awt.Frame;
import java.awt.KeyboardFocusManager;
import java.awt.Window;

import com.kingdee.bos.ctrl.swing.KDPromptSelector;
import com.kingdee.bos.metadata.entity.FilterInfo;
import com.kingdee.bos.ui.face.IUIWindow;
import com.kingdee.bos.ui.face.UIFactory;
import com.kingdee.eas.common.client.UIContext;
import com.kingdee.eas.common.client.UIFactoryName;
import com.kingdee.eas.framework.ITreeBase;
import com.kingdee.eas.framework.client.CoreUI;
import com.kingdee.eas.util.client.ExceptionHandler;

public class TreeF7 implements KDPromptSelector {

	private IUIWindow window;

	private String title;
	ITreeBase iTreeBase;
	CoreUI owner;
	FilterInfo filter;

	public TreeF7(ITreeBase iTreeBase, CoreUI owner, String title,FilterInfo filter) {
		this.iTreeBase = iTreeBase;
		this.owner = owner;
		this.title = title;
		this.filter=filter;
	}

	public Object getData() {
		Object data = null;
		try {
			if (window != null)
				data = ((TreeUI) window.getUIObject()).getData();
		} catch (Exception e) {
			ExceptionHandler.handle(e);
		}

		return data;
	}

	public boolean isCanceled() {

		boolean isCanceled = true;
		try {
			isCanceled = ((TreeUI) window.getUIObject()).isCanceled();
		} catch (Exception e) {
			ExceptionHandler.handle(e);
		}

		return isCanceled;

	}

	public void show() {
		try {
			getWindow().show();
		} catch (Exception e) {
			ExceptionHandler.handle(e);
		}
	}

	private IUIWindow getWindow() throws Exception {
		if (window == null) {
			Object owner = null;
			Window win = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();
			if (win instanceof Frame) {
				owner = (Frame) win;
			} else if (win instanceof Dialog) {
				owner = (Dialog) win;
			}

			UIContext ctx = new UIContext(owner);

			ctx.put(TreeUI.TREE_TITLE, title);
			ctx.put(TreeUI.STRTREEBASE, iTreeBase);
			ctx.put(TreeUI.TREE_FILTER, filter);

			window = UIFactory.createUIFactory(UIFactoryName.MODEL).create(TreeUI.class.getName(), ctx);
			
		}

		return window;
	}

	public void setTitle(String title) {
		this.title = title;
		window = null;
	}

	public String getTitle() {
		return title;
	}

}

 

 3、监听F7的选择事件

 

 

	kdtMaterial_materialgroup_PromptBox.addSelectorListener(new SelectorListener(){

			public void willShow(SelectorEvent paramSelectorEvent) {
					try {
						IMaterialGroup iTree = MaterialGroupFactory.getRemoteInstance();
						FilterInfo filter= new FilterInfo();
						filter.getFilterItems().add(new FilterItemInfo("groupStandard.number","BaseGroupStandard"));
						TreeF7 f7 = new TreeF7(iTree, getui(), "物料组别",filter);
						kdtMaterial_materialgroup_PromptBox.setSelector(f7);
					} catch (Exception e1) {
						handUIException(e1);
					}
			}});

 

protected CoreUI getui() {
		return this;
	}

 

  • 大小: 69.5 KB
  • 大小: 63.1 KB
分享到:
评论

相关推荐

    EAS控件帮助类

    在IT行业中,"EAS控件帮助类"是针对金蝶(Kingdee)企业应用系统(Enterprise Application System,简称EAS)的一种定制化开发工具。EAS是金蝶公司推出的一款全面的企业级管理软件,旨在帮助企业实现信息化管理,...

    EAS BOS 控件使用说明

    - **数据绑定**:EAS控件可以与数据库字段绑定,动态显示或接收数据,实现数据的实时更新。 **4. 控件类型与应用场景** - **输入型控件**:如文本框、日期选择器,用于用户输入数据。 - **显示型控件**:如标签、...

    eas参考文件————部门F7

    综上所述,这些文件组合在一起,描述了一个EAS系统中涉及部门F7管理的部分,包括部门或账户的树形结构展示、批量信贷操作、以及簿记组织的编辑功能。这些功能旨在帮助企业管理其组织结构,处理信贷业务,并维护准确...

    EAS控件培训

    ### EASWeb控件培训详解 #### 概述与特性 EASWeb控件是专为Web开发设计的,...通过系统掌握EASWeb控件的开发与应用,开发者能够构建出功能丰富、界面美观且具有良好兼容性的Web应用,极大地提升用户体验和项目效率。

    金蝶BOS开发EAS控件

    金蝶BOS(Business Operation System)开发EAS控件是一套完整的开发工具集,主要用于构建企业级应用系统。金蝶EAS(Enterprise Application System)是金蝶国际软件集团推出的一款面向大型企业的综合业务管理平台,...

    EAS 系统参数指南.rar

    EAS(Enterprise Asset Management,企业资产管理)系统是一种用于组织、控制和优化企业资产的软件解决方案。它涵盖了资产的整个生命周期管理,包括规划、采购、安装、维护、退役和处置等阶段。EAS系统的主要目标是...

    EAS系统部署常见问题2013 FAQ

    EAS系统部署常见问题2013 FAQ EAS 系统部署常见问题 FAQ 是一份详细的技术文档,为 EAS 产品支持部刘习红所编写,旨在解决 EAS 系统部署过程中常见的问题。该文档涵盖了 EAS 系统安装、部署的各种问题的处理,适用...

    eas模板_EAS_

    EAS,全称为Enterprise Asset Management(企业资产管理),是一种先进的信息化管理系统,主要针对企业的固定资产、库存物资、设备等资产进行全方位的管理和控制。EAS系统旨在提高企业资产的使用效率,降低运营成本...

    EAS系统中功率放大器的闭环发射机控制

    EAS系统中功率放大器的闭环发射机控制,AM EAS声磁防盗器

    (完整版)金蝶EAS财务系统操作手册.pdf

    在金蝶EAS财务系统中,用户可以使用快捷键来简化操作,例如[F7]键可以选择已录入摘要库中的摘要,[F11]键可以调出参数设置窗口等。 金蝶EAS财务系统操作手册提供了一个详细的操作指南,帮助用户了解金蝶EAS财务系统...

    金蝶EAS DEP脚本汇总.docx

    给F7控件增加值改变监听器。 八、JavaImporter() JavaImporter()方法用于引入Java包,例如,var easNames = JavaImporter();easNames.importPackage(Packages.com.kingdee.eas.base.codingrule);引入了...

    新一代EAS系统的研究与实现

    意义和EAS系统的发展现状"然后详细介绍EAS系统相关内容,包括EAS系 统的概念,工作原理,工作心呈,EAs系统的几种主要技术以及如何评价EAs 系统的好坏"接着针对本论文实现的EAS系统进行详细描述,涵盖系统的发射 机和接收...

    金蝶eas-dep脚本参考.docx

    11. 设置F7 默认值:使用pluginCtx.getKDBizPromptBox()方法获取控件,然后使用setValue()方法设置控件的默认值。 12. 客户端调用服务端方法:使用pluginCtx.getKDService()方法获取服务端对象,然后使用invoke()...

    EAS系统云巡检工具使用指南

    EAS系统云巡检工具使用指南 EAS(Enterprise Application Service)云巡检服务是针对企业EAS系统的一种健康检查解决方案,旨在通过云+端的模式提供高效、便捷的系统健康检测服务。此服务旨在预防潜在问题,确保EAS...

    金蝶EAS8.0用户手册

    金蝶EAS8.0是金蝶公司推出的一款高级企业资源计划系统,旨在帮助企业实现全面的信息化管理。这款系统的用户手册详细介绍了EAS8.0的各项功能和操作流程,为用户提供了一个全面的学习和交流平台。 一、金蝶EAS8.0系统...

    金蝶EAS BOS V5.4客户端常用代码

    - **树形控件操作**:如`TREE`控件,用于构建和管理树形结构的UI组件。 ##### 3. 查询与数据处理 这部分代码主要处理数据的查询和处理逻辑,例如: - **查询方法**:如`ÇQUERY`用于执行特定的查询操作。 - **...

    金蝶EAS的基本常用语句

    6. **F7控件数据过滤**:F7控件常用于下拉选择,可以通过编写过滤逻辑来控制显示的内容。例如,根据当前输入值动态筛选出匹配的选项。 7. **赋值操作**:在EAS客户端代码中,赋值是非常常见的操作,例如`字段名 = ...

    eas系统供应链部分实施总结.pptx

    【EAS系统供应链部分实施总结】 EAS系统(Enterprise Application System)在供应链管理中的实施是一项复杂而关键的任务,旨在提升企业的运营效率和信息流转的准确性。以下是对EAS系统供应链部分实施的详细总结: ...

    全套金蝶EAS财务系统操作手册V1.0.doc

    金蝶EAS财务系统是一款全面的企业资源计划系统,专为大型企业设计,旨在提升财务管理效率,实现财务核算的自动化和精细化。本操作手册详细介绍了如何使用金蝶EAS财务系统,帮助财务人员从传统的手工核算模式过渡到...

Global site tag (gtag.js) - Google Analytics