如何覆盖代码创建的表单上的表单方法?

时间:2014-08-12 10:11:04

标签: forms methods axapta

在AOT中创建的表单上,您可以通过右键单击和覆盖来重写方法。如何在X ++代码创建的表单上执行相同的操作?

例如。如何更改close方法,以便在关闭之前调用 info(" close");

form = new Form();
formBuildDataSource = form.addDataSource("Table");
formBuildDesign = form.addDesign("Design");
form.design().caption("Caption");
…
args = new Args();
formRun = classfactory.formRunClass(args);
formRun.run();
formRun.detach();

我正在使用AX2012

1 个答案:

答案 0 :(得分:2)

通常,您需要执行预定义的方法。然后,您可以使用表单控件的registerOverrideMethod方法。这是explained here

在对registerOverrideMethod的调用中,始终提供第三个参数,即持有该方法的对象。

formButtonControl.registerOverrideMethod(
    methodStr(FormButtonControl,clicked), //method to override
    methodStr(testClass,testMethod),      //method to invoke
    new testClass());                     //object of class containing method

还可以使用类TreeNode方法AOTSetSource将源保存到AOT。
一个example here

在执行FormRun之前,您需要将表单保存到AOT并进行编译。