我尝试了以下内容: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之前它不起作用,因为我必须使用来自初始化表单控件的一些属性。
答案 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之后调用循环。