Axaptapedia is now maintained by AgileCadence For more information please click here.
Dialog
From Axaptapedia
Dialog is a base class in Dynamics AX. Use the dialog class to create simple dialog forms at run time. Here is an example: <xpp> Dialog dialog; DialogField field;
dialog = new Dialog("My Dialog"); field = dialog.addField(typeId(EmplId)); // add EmplId field
dialog.run(); // show
if (dialog.closedOK()) {
info(field.value());
} </xpp>
Dynamic dialog[edit]
Initiated by this newsgroup posting I've written a class that for dynamic dialogs. You provide a list with types, and the dialog will contain all necessary fields. Use the method parmFieldList() to get the field values. <xpp> /**
* Use this class to create a dialog with dynamic content. */
class CustomDialog extends Dialog {
List fieldList; /* list of dynamically create dialog fields */
/** * The dialog will contain fields for all types in the typeList * Field description is taken per default from the extended datatype */ void new(List typeList, Caption _caption = , Object _caller = null, str _parmstr = , Form _form = new Form(formStr(Dialog)) ) { ListEnumerator enum; ;
if(typeList == null) error("List of types must not be null");
super(_caption,_caller,_parmStr,_form);
fieldList = new List(Types::Class); enum = typeList.getEnumerator();
while(enum.moveNext()) { fieldList.addEnd(this.addField(enum.current())); } } /** * Use this method to get the values entered in the dialog * @return Reference to the fieldList if instantiated. */ public List parmFieldList() { return fieldList; }
} </xpp>
The class is easy to use <xpp> static void testDynamicDialog(Args _args) {
CustomDialog diag; List types = new List(Types::Integer); // typeId is an integer List fields; ListEnumerator enum; DialogField field; ;
// the dialog shall contain fields for the following types types.addEnd(typeId(EmplId)); types.addEnd(typeId(Itemid)); types.addEnd(typeId(ProdId)); types.addEnd(typeId(CustAccount));
// crate and show diag = new CustomDialog(types,"Dynamic Dialog"); diag.run();
// show values in the Infolog fields = diag.parmFieldList(); enum = fields.getEnumerator();
while(enum.moveNext()) { field = enum.current(); info(field.value()); }
} </xpp>
See Also[edit]
Override Lookup on DialogField