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

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.