在很多时候我们选择单行或多行记录都是在F7控件上完成的,点击F7的查询按钮,弹出选择界面,选择记录填入到F7,但有的时候我们要将数据填充到F7之外的表格列表中,这时候F7控件就不能用了,但在实现的思想上却和F7大致相同,具体如下:
1、先做一个query用来返回结果集
2、借助KDCommonPromptDialog控件完成弹出界面
3、返回数组的结果集
我们以币别多选为例:
public static Object[] getCurrencyByF7(Window owner, boolean isMultiSelect)
{
KDCommonPromptDialog dlg;
if(owner instanceof Frame)
dlg = new KDCommonPromptDialog((Frame)owner);
else
dlg = new KDCommonPromptDialog((Dialog)owner);
QueryAgent queryAgent = new QueryAgent();
queryAgent.setQueryInfoPK(new MetaDataPK("com.kingdee.eas.basedata.assistant.app.CurrencyQuery"));
queryAgent.setEnabledMultiSelection(isMultiSelect);
SelectorItemCollection sic = new SelectorItemCollection();
sic.add(new SelectorItemInfo("*"));
queryAgent.setSelectorCollection(sic);
dlg.setQueryInfo(queryAgent.getQueryInfo());
dlg.setSelectorCollection(queryAgent.getSelectorCollection());
dlg.setQueryExecutor(queryAgent.getQueryExecutor());
dlg.setEnabledMultiSelection(queryAgent.isEnabledMultiSelection());
dlg.setReturnValueType(queryAgent.getReturnValueType());
dlg.show();
if(!dlg.isCanceled())
return (Object[])dlg.getData();
else
return null;
}
调用代码如下:
java.awt.Window owner = ComponentUtil.getOwnerWindow(this);
Object arrObj[] = getCurrencyByF7(owner, true);
参数为拥有者的window和是否多选,这样我们就可以取到由类似于F7的选择界面返回的数据集.