打开AX表单时编辑FormBuildControl

时间:2014-10-21 09:12:49

标签: axapta dynamics-ax-2009

我尝试了以下内容:AX2009 Loop through all the controls in the form on init,并且在打开表单时能够遍历表单中的所有表单控件。

但是,出于某种原因,当我尝试编辑表单控件时,它无法正常工作。我有一个像这样的开关语句:

switch ( control.handle() )
{
    case classnum(FormBuildButtonControl):
        formBuildButtonControl = control;

        formBuildButtonControl.enabled(false);
    break;
 }

当表单打开时,仍然启用按钮控件。我已经尝试在run方法中的super之前和之后以及init中的super方法之前和之后调用循环方法,并且它在任何一个中都不起作用。虽然,在init方法中调用super之前它不起作用,因为我必须使用来自初始化表单控件的一些属性。

2 个答案:

答案 0 :(得分:2)

您应该将控件的AutoDeclaration设置为是。然后,您可以通过其名称访问控件:

controlName.enabled(condition);

对于绑定到表字段的控件,通常最好更改数据源字段:

datasource.object(fieldNum(table,fieldName)).enabled(condition);

因为字段可能有多个控件。

答案 1 :(得分:1)

好的,我想出来了。以下代码不使用FormBuildButtonControl类,而是可以获取控件ID并调用以对控件进行更改:element.control(control.id()).enable(false);

编辑:也可以在运行中的super之前或之后或者在init方法中的super之后调用循环。