Axapta : Enable/Disable Dialog Control at runtime

วิธี Enable/Disable หรือ Dialog Control ในขณะ runtime ทำได้โดย ดังนี้
disable_runtime_dialog_control
1.classDeclaration

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class SCI_Costing extends RunBase
{
    FormStringControl   SalesIdCtrl, ItemIdCtrl;
    FormCheckBoxControl bAllCtrl;

    SalesId     salesId;
    ItemId      itemId;
    NoYes       bAll;

    #define.CurrentVersion(1)

    #localmacro.CurrentList
        salesId,
        itemId,
        bAll
    #endmacro
}

2.สร้าง dialog แบบอนุญาตให้ update control ได้ โดยใช้ dialog.allowUpdateOnSelectCtrl(true)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
protected Object dialog(Dialog dialog, boolean forceOnClient)
{
    DialogRunBase ret;
    ;
    ret = super(dialog, forceOnClient);
    ret.caption('Costing report by order');
    ret.allowUpdateOnSelectCtrl(true); //อนุญาตให้ update control ได้

    SalesIdCtrl = ret.formBuildDesign().addControl(FormControlType::String,'SalesId');
    SalesIdCtrl.extendedDataType(extendedTypeNum('SalesId'));

    bAllCtrl = ret.formBuildDesign().addControl(FormControlType::CheckBox,'bAll');
    bAllCtrl.label('All');

    ItemIdCtrl = ret.formBuildDesign().addControl(FormControlType::String,'ItemId');
    ItemIdCtrl.extendedDataType(extendedTypeNum('ItemId'));

    return ret;
}

3.เซ็ตให้ control สามารถ override method ตอน runtime ได้

1
2
3
4
5
6
7
8
9
10
public void dialogPostRun(DialogRunbase dialog)
{
    ;
    super(dialog);
    dialog.dialogForm().formRun().controlMethodOverload(true);
    dialog.dialogForm().formRun().controlMethodOverloadObject(this);
    SalesIdCtrl = dialog.dialogForm().formRun().design().controlName('SalesId');
    ItemIdCtrl = dialog.dialogForm().formRun().design().controlName('ItemId');
    bAllCtrl = dialog.dialogForm().formRun().design().controlName('bAll');
}

4.ใช้ method dialogSelectCtrl เพื่อดำเนินการ update control ซึ่งในที่นี้ก็คือการ enable/disable ItemId

1
2
3
4
5
6
7
8
9
10
11
12
public void dialogSelectCtrl()
{
;
    if (bAllCtrl.value()== 0)
    {
        ItemIdCtrl.allowEdit(true);
    }
    else
    {
        ItemIdCtrl.allowEdit(false);
    }
}

Written by Komkid on October 19th, 2009 with no comments.
Read more articles on Axapta and Programming.

Related articles

No comments

There are still no comments on this article.

Leave your comment...

If you want to leave your comment on this article, simply fill out the next form:

You have to be identified to write a comment.