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./**The class is easy to use
* 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;
}
}
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());
}
}
Aucun commentaire:
Enregistrer un commentaire