Hi, let me walk-through the dialog feature in AX 2012.
Sometime when developing complex functionality, Dialog plays a significant role. Creation of dialog always provide you lot of standard features such as standard dialog form throughout ax, batch tab under form, validations, pack – unpack to persist the last storage value, to select query values(SysQuery form) etc..
Illustrating the dialog in AX2012 – Creation of dialog fields using standard dialogfield methods (which gives us lookup using EDT) or get custom lookup using formbuild control under the dialog and also get an benefit of having multi select under lookups. At the same time we can also achieve Sysquery form (Select button) under the dialog through classes.
We can have multi select control for dialog field using code below:
class VT_DialogEx extends RunBaseBatch
{
DialogField df, df1;
CustAccount ct;
DialogGroup dfg, dfg1;
CustAccount dfval;
QueryRun queryRun;
FormStringControl fsc;
FormBuildControl fbc;
FormBuildStringControl fbsc;
SysLookupMultiSelectCtrl sysms;
container conValues;
}
protected Object dialog()
{
DialogRunbase dialog = super();
dialog.allowUpdateOnSelectCtrl(true);
dfg1 = dialog.addGroup("Standard Lookup");
df = Dialog.addField(extendedTypeStr(CustAccount));
df1 = dialog.addFieldValue(extendedTypeStr(Name),"");
df1.allowEdit(false);
dfg = dialog.addGroup("Custom Lookup");
fbc = dialog.formBuildDesign().control(dfg.name());
fbsc = fbc.addControl(FormControlType::String, "User id");
fbsc.label("User id");
return dialog;
}
publicvoiddialogPostRun(DialogRunbase dialog)
{
FormRun fr;
super(dialog);
fr = dialog.dialogForm().formRun();
if (fr)
{
sysms = SysLookupMultiSelectCtrl::construct(fr, Fr.design().control(fbsc.id()), queryStr(VT_UserInfoQuery));
}
// dialog.formRun().controlMethodOverload(true);
// dialog.formRun().controlMethodOverloadObject(this);
}
publicvoidinitParmDefault()
{
Query query;
;
super();
query = new Query();
query.addDataSource(tableNum(vendtable));
queryRun = new QueryRun(query);
}
public QueryRun queryRun()
{
;
return queryRun;
}
As shown in above image we get multi select option for Userid field in dialog and once clicking on ok button retrieve the dialog field using code below:
publicbooleangetfromdialog()
{
boolean ret;
// info(strFmt("%1", df.value()));
dfval = df.value();
conValues = sysms.get();
//info(strFmt("%1", con2StrUnlimited(convalues)));
returnsuper();
}
Do let me know if you are looking for XPO of it.
Stay tuned.. Happy Daxing J