fredag den 9. august 2013

Modal forms in Dynamics AX

Some years ago, I wrote on this blog of a method to make a form modal in the AX client. The solution was made on Axapta 3.0 and involved calling winapi unmanaged. Someone commented that the method I described was bad code, because he had experienced a computer crash while debugging something that involved the code.

Mindaugas Pocius has suggested a method in his Dynamics AX cookbook books Dynamics AX Cookbooks where the windowtype is set to Popup. This ensures that the form is on top but not that the form you want to be modal, is the only one that is active, so using Mindagaus' method, you are able to leave the form that is "modal".

Now a colleague of mine has found a very simple solution. His scenario was this. From a form you can click a button that opens an other form. This form that is opened must be ontop and the only form in focus and active until you either click OK or CANCEL in this form.

The calling form includes a button, that open the form to be modal. The called form / modal form includes a simple command ( element.wait(true); )in the run method of the form:

public void run()
{
    super();
    element.wait(true);
    // Execution will resume at this point, only after
    // the user has closed the form.
}


So in essence the form you that is modal is in essence waiting for it self to be closed, before the execution path is returned to the calling form.

Ingen kommentarer:

Send en kommentar