Create form dialog from Runbase class in D365FO


07/06/2021- duocnt    1502 Views    

DEMO.



MÔ TẢ.

 - Trong hướng dẫn này, chúng ta sẽ làm 1 form dialog đơn giản, extends class Runbase.

 - Chức năng sẽ cho user chọn ItemId và sau đó sẽ show ra ItemName tương ứng.


SOURCE CODE 

 - Demo Source code.


CÁC BƯỚC THỰC HIỆN.

  1. Tạo class SimpleDialogRunbase, extends Runbase và khai báo biến dùng chung.
  2. Insert override method dialog().
  3. Insert override method getFromDialog().
  4. Insert override method run().
  5. Tạo method main().
  6. Full code.



THỰC HIỆN.

1 - Tạo class SimpleDialogRunbase, extends Runbase và khai báo biến dùng chung.

Code x++.

class SimpleDialogRunbase extends RunBase
{
    DialogField     _dialogField;
    ItemId                 _itemId;
 
}


2 - Insert override method dialog().


Code x++.

    public Object dialog()
    {
        Dialog dialog = super();
 
        // Set a title for dialog
        dialog.caption( 'Input ItemId to show ItemName');
 
        // Add a new field to Dialog
        _dialogField = dialog.addField(extendedTypeStr(ItemId), 'ItemId');
 
        return dialog;
 
    }


3 - Insert override method getFromDialog().


Code x++.

   public boolean getFromDialog()
    {
        _itemId = _dialogField.value();
        return super();
 
    }


4 - Insert override method run().


Code x++.

     public void run()
    {
        InventTable        _inventTable;
        _inventTable =      InventTable::find(_itemId);
 
        if (_inventTable)
        {
            info(strFmt("ItemId: %1 - ItemName %2",_itemId, _inventTable.itemName()));
        }
        else
        {
            error( 'ItemId not found');
        }
    }



5 - Tạo method main().


Code x++.

    public static void main(Args _args)
    {
        SimpleDialogRunbase simpleDialog = new SimpleDialogRunbase();
        if(simpleDialog.prompt())
        {
            simpleDialog.run();
        }
    }


6 - Full code.

class SimpleDialogRunbase extends RunBase
{
    DialogField     _dialogField;
    ItemId                 _itemId;
 
    ///<summary>
    ///
    ///</summary>
    ///<returns></returns>
    public Object dialog()
    {
        Dialog dialog = super();
 
        // Set a title for dialog
        dialog.caption( 'Input ItemId to show ItemName');
 
        // Add a new field to Dialog
        _dialogField = dialog.addField(extendedTypeStr(ItemId), 'ItemId');
 
        return dialog;
 
    }
 
    /// <summary>
    ///
    /// </summary>
    /// <returns></returns>
    public boolean getFromDialog()
    {
        _itemId = _dialogField.value();
        return super();
 
    }
 
    /// <summary>
    ///
    /// </summary>
    public void run()
    {
        InventTable        _inventTable;
        _inventTable =      InventTable::find(_itemId);
 
        if (_inventTable)
        {
            info(strFmt("ItemId: %1 - ItemName %2",_itemId, _inventTable.itemName()));
        }
        else
        {
            error( 'ItemId not found');
        }
 
    }
 
    /// <summary>
    /// Runs the class with the specified arguments.
    /// </summary>
    /// <param name = "_args">The specified arguments.</param>
    public static void main(Args _args)
    {
        SimpleDialogRunbase simpleDialog = new SimpleDialogRunbase();
        if(simpleDialog.prompt())
        {
            simpleDialog.run();
        }
    }
}


7 - Source code.

- Source code  SimpleDialogRunBaseAX7




Góp ý kiến

;
;