How to pass value from MenuItemButton to a Dialog Class?

Hi everybody, as mentioned in my previos post, I will share the knowledge about dynamics AX on technical/functional perspectives. During your AX development, you will encounter different technical scenario. Although some of the scenario is able to obtain solution, but we still seeking for the best solution.

Overview

 

The lesson I would like to share with you is “How to pass value from MenuItemButton to a Dialog Class”. Imagine a situation you have a MenuItemButton on a form, and the MenuItemButton is calling a MenuItems (Action) and finally call the dialog class. For certain scenario, you would like to pass a value, perhaps a record, from the FORM to the DIALOG class, but you are constraint by the MenuItemButton. Possible to do it? Some of you might suggest you that MACRO can be applied here. However, apart from that, what other solution you can use? 

 

Here, I introduce to cast the caller (mean the form) to ObjectRun type. Below are the steps that teach you how to achieve that.

 

Step 1: Create a dialog class, call it as MyDialogClass and extend from RunBase. In the classDeclaration part, declare a global variable, objRun, type ObjectRun. Please see picture in the galery (Step1.jpg).

Step1

Step2: Declare a method to initialize the objRun create in Step 1. Here, I call it as initObject method with an input parameter Args. Please see Step2.jpg.

void initObject(Args args)
{
objRun = _args.caller();
}

                             void initObject(Args args)

                             {

                                 objRun = _args.caller();

                             }

Step2

Step 3: Overwrite the dialog method. The code are like following. For details, you can refer to Step3.jpg.

                            protected Object dialog()

                           {

                                    DialogRunBase dialog = super();

                                    ;

                                   dialog.addText(“Output: ” + objRun.args().parm());

                                  return dialog;

                         }

Step3

Step 4: Create a main method for the class. The code is like following. Please refer to Step4.jpg as well. After finish the develop the class, please create an MenuItem, with an Action type.

                        public static void main(Args _args)

                       {

                             MyDialogClass dlgCls = new MyDialogClass();

                             dlgCls.initObject(_args);

                              dlgCls.prompt();

                         }

Step4

Step 5:  This is last step. Create a form, here I named it as MyInputForm. In the form, add a StaticText and MenuButtonItem. The StaticText (I named it as Input1) which used for us to enter the value we want to pass to the dialog class. For the details, please refer to Step5.jpg. Remember to associate the MenuButtonItem with the MenuItem create on step 4 in order when you click on the button, it will call the class. For the MenuButtonItem, overwrite the clicked event. The following code should allocate under this method:

                          void clicked()

                          {

                               element.args().parm(input1.valueStr());

                               super();

                          }

Step5

After complete step 5, compile all the code and you can having a test. Enter some of text into the input and click the MenuItemButton, you will able see the your input appear on the dialog. Hope this lesson will benefit you.

Result

Advertisement

About ckmun

A person who desperate for ERP software implementation with multiples skills sets, which include Project Management, Software Design, System
This entry was posted in Technical Stuffs. Bookmark the permalink.

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