Axapta 如何在d365中动态更改formcommandbuttonControl的命令?

Axapta 如何在d365中动态更改formcommandbuttonControl的命令?,axapta,x++,dynamics-365-operations,Axapta,X++,Dynamics 365 Operations,我在d365中有一个带有formCommandButtonControl的表单。我想根据代码中的条件动态更改与按钮关联的命令。我找不到任何基枚举来选择该值 switch (x) { case 1: formButton.command(New); break; case 2: formButton.command(DeleteRecord); break; } 这是表单中的属性 如何在x++代码中选择New和deleteRecord值?不幸的是,您的问题的答案是不要这样做,并

我在d365中有一个带有formCommandButtonControl的表单。我想根据代码中的条件动态更改与按钮关联的命令。我找不到任何基枚举来选择该值

switch (x)
{
case 1:
    formButton.command(New);
break;
case 2:
    formButton.command(DeleteRecord);
break;
}
这是表单中的属性


如何在x++代码中选择New和deleteRecord值?

不幸的是,您的问题的答案是不要这样做,并且没有枚举

动态创建命令按钮(
FormBuildCommandButtonControl
vs
FormCommandButtonControl
)时,Microsoft的惯例是只使用常量(
#define.New(260)
)并引用该常量

动态更改命令按钮的
命令
是前所未闻的,我不相信它在系统中的任何地方都可以做到

命令按钮的文本很可能不会动态更新,因此您也需要进行更改


您应该使用常规按钮,或者创建多个命令按钮,并根据需要调整它们的可见性,如注释所示。

最明显的方法是提供两个按钮,仅显示相关命令

newButton.visible(x == 1);
deleteButton.visible(x == 2);
标记控件的自动声明属性。

在适当的情况下,将代码置于
init
active
方法中。

更常用的方法是提供两个按钮,并在需要时禁用/启用它们。为什么你需要这个按钮来实现双重功能?
FormCommandButtonControl.command()
方法接受一个整数参数,并返回一个整数。您可以将所需的命令分配给按钮,然后在调试器中检索整数值,或者将值写入信息日志。我知道这种方法,但是如果我可以在代码中分配命令,那么就不需要有多个按钮。我可以找到整数,但如果有枚举或micro,我最好使用它,因为可能到将来的更新时,顺序会改变。另一个选项是使用普通按钮,覆盖clicked()方法,并计算按钮行为的条件。