
Dialog is a base class in Dynamics AX. Use the dialog class to create simple dialog forms at run time. Here is an example:
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()); }
[edit] Dynamic dialog
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./** * 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; } }The class is easy to use
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()); } }
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.