D365FFO – AX – How to: Create a simple Dialog through X++

A dialog in Microsoft Dynamics AX is a simple form with a standardized layout, created by using the Dialog system class. It’s a way to present users with a simple input form, they are commonly used for small tasks, it should NOT be used to create complex forms. It should not open a secondary window that requires user interaction. All user interaction should be carried out within the dialog.

1. Open the AOT, and create a new class with the following code, its important ro extend RunBase because the RunBase framework uses the Dialog framework to prompt a user for data input. It uses the SysLastValue framework to persist usage data and the Operation Progress framework to show operation progress:

12345678class CustCreateDialog extends RunBase{    DialogField fieldAccount;    DialogFIeld fieldName;     CustTable   custTable;    CustAccount custAccount;}

2. Override the method Dialog, this method will be used to give “form” to our Dialog:

123456789101112131415protected Object Dialog(){    Dialog dialog;    ;     dialog = super();     // Set a title for dialog    dialog.caption( 'Simple Dialog');     // Add a new field to Dialog    fieldAccount = dialog.addField( extendedTypeStr(CustVendAC), 'Customer account' );     return dialog;}

3. Override the method getFromDialog, the code below will be used to retrieve the Dialog field values:

1234567public boolean getFromDialog(){    // Retrieve values from Dialog    custAccount = fieldAccount.value();     return super();}

4. Override the method run, use it to process whatever you want to. On my example I will use it to show the customer account information on infolog.

123456789101112131415public void run(){    // Set Dialog field value to find CustTable    custTable = CustTable::find(custAccount);     if (custTable)    {        // Shows retrieved information        info( strFmt('%1 -- %2' , custTable.AccountNum, custTable.name()));    }    else    {        error( 'Customer Account not found!');    }}

5. Create a new main method to execute your class.

12345678910public static void main(Args _args){    CustCreateDialog custCreate = new CustCreateDialog();     // Prompt the dialog, if user clicks in OK it returns true    if (custCreate.prompt())    {        custCreate.run();    }}

6. Execute your class, check results.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s