我尝试了以下内容:AX2009 Loop through all the controls in the form on init,并且能够在打开时循环遍历表单中的所有表单控件。
但是,出于某种原因,当我尝试编辑表单控件时,它无法正常工作。我有一个像这样的switch语句:
switch ( control.handle() )
{
case classnum(FormBuildButtonControl):
formBuildButtonControl = control;
formBuildButtonControl.enabled(false);
break;
}
然后打开表单时,仍然启用按钮控件。我已经尝试在run方法中的super之前和之后以及init中的super方法之前和之后调用循环方法,并且它在任何一个中都不起作用。虽然,在init方法中调用super之前它不起作用,因为我必须使用来自初始化表单控件的一些属性。
您应该将控件的AutoDeclaration
设置为Yes。然后,您可以通过其名称访问该控件:
controlName.enabled(condition);
对于绑定到表字段的控件,通常最好更改数据源字段:
datasource.object(fieldNum(table,fieldName)).enabled(condition);
因为字段可能有几个控件。
好的,我想通了。以下可以使用控件ID而不是使用FormBuildButtonControl类来调用控件来进行更改:element.control(control.id()).enable(false);
编辑:也可以在运行中的super之前或之后或init方法中的super之后调用循环。