AX2012 在对话框上自定义查找.
DilaogLookup ckass
ckass Deckaration
Here the class declaration, don’t forget to extend RunBase.
class DialogLookup extends RunBase
{
}
Methods:
Main
Nothing special here either, just get a new instance from your class, to be able to run it later on.
static void main(Args _args)
{
DialogLookup dialogLookup = new DialogLookup();
if (dialogLookup.prompt())
{
dialogLookup.run();
}
}
Our dialog
This is where the fun starts. You simply want to get the control from your field, then you call the registerOverrideMethod(…) and as parameter you provide your class name (in this case, the class we are actually writing here) and the method name (this does not have to be lookup!).
protected Object dialog()
{
Dialog dialog;
FormStringControl control;
DialogField fieldLookup;
dialog = super();
// Dialog Title
dialog.caption("Aif Adapter");
// Field - EDT, Label
fieldLookup = dialog.addField(extendedTypeStr(AifAdapterName), "AifAdapterName:");
// Get control
control = fieldLookup.control();
// Override lookup method
control.registerOverrideMethod(methodStr(FormStringControl, lookup),
methodStr(DialogLookup /* Class name */,
lookup /* Method name*/), this);
return dialog;
}
The custom lookup
In the last step we will just set up a “normal” (don’t forget the FormStringControl!) lookup method.
public void lookup(FormStringControl _control)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(AifAdapter),
_control);
// Create lookup for AifAdapter's Name and AdapterClassId
sysTableLookup.addLookupField(fieldNum(AifAdapter, Name));
sysTableLookup.addLookupField(fieldNum(AifAdapter, AdapterClassId));
// Setup query
queryBuildDataSource = query.addDataSource(tableNum(AifAdapter));
sysTableLookup.parmQuery(query);
// Perform lookup
sysTableLookup.performFormLookup();
}
And this is what it looks like:
Just hit F5 and run your class.
The custom lookup provides us the class id. If I recall it right, the standard AX would provide the EDT Type.