在写一个自动生成销售订单行的小程序,大部分物料的数量都是预先定义好的,可以让用户定义一个BOM,直接根据BOM生成销售订单行就可以了,有一个物料需要从几个物料中选择,于是我想在创建之前弹出一个窗口,让用户选择,又想到了Dialog这个类,唯一的问题是,如果直接用
1.创建一个类AlxInventTableDialogHelper
添加一个类变量Dialog,用于把Dialog变量传入类AlxInventTableDialogHelper,供在重载后的Lookup方法中调用。并添加一个方法,用来封装对Dialog变量的读写。
);
tableLookup.parmCallingControl(callingControl);
tableLookup.parmQuery(q);
tableLookup.performFormLookup();
}
2.使用上面的类创建Dialog
);
dialog.formRun().controlMethodOverloadObject(dialogHelper);
dialog.run();
}效果如下:

这样就只会显示 001 组的物料了。
dialog.addField(TypeId(ItemId));
添加字段,不会过滤,那么全部的物料都出来了,实际上用户只需要从有限的几个物料中选择,所以要想办法过滤掉才对,于是想到了重载Lookup的做法。步骤如下:1.创建一个类AlxInventTableDialogHelper
添加一个类变量Dialog,用于把Dialog变量传入类AlxInventTableDialogHelper,供在重载后的Lookup方法中调用。并添加一个方法,用来封装对Dialog变量的读写。
Dialog parmDialog(Dialog _dialog = dialog)
{
;
dialog = _dialog;
return dialog;
}
添加一个方法,重载lookup方法:{
;
dialog = _dialog;
return dialog;
}
tableLookup.parmCallingControl(callingControl);
tableLookup.parmQuery(q);
tableLookup.performFormLookup();
}
dialog.formRun().controlMethodOverloadObject(dialogHelper);
dialog.run();
}
这样就只会显示 001 组的物料了。