Skip to main content
Post a question

Notifications

Community site session details

Community site session details

Session Id : 9PqpR+cPehijvyN6uQkglW
Dynamics 365 Community / Blogs / DAX Beginners / How to: Create a simple Dia...

How to: Create a simple Dialog through X++

Christian Silva Profile Picture Christian Silva 707

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:

class 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:

protected 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:

public 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.

public 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.

public 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.


This was originally posted here.

Comments

*This post is locked for comments