Call a method on caller form
Sometimes you need to call a function on the calling form. You can use the following x++ code to achieve this.
1)Form /* element.args().caller().<Method on caller form>(); 这个语句的意思代表打开当前这个对象的父对象的句柄。 那么可以用if(element.args().caller())来检测当前对象是否是被其他对象调用而打开的。 而且可以通过这个语句获得的句柄来调用父对象中定义的方法。 For example element.args().caller().GS_Refresh(); The problem with the code above is that you don't get any compilation errors if the method doesn't exist. To handle this problem, you can use the following code. */ if (formHasMethod(element.args().caller(), identifierStr(GS_Refresh))) { element.args().caller().GS_Refresh(); } 2)Class //Class1中有两个方法: void hello() { print "hello world"; } static void main(Args _args) { Class1 c1 = new Class1(); ; _args = new Args(); _args.object(c1); _args.caller(c1); Class2::Main(_args); } //在Class2中编写如下代码测试: static void main(Args _args) { _args.caller().hello();//这里在敲完caller()方法后的点后的方法列表中不会显示出hello这个方法,需要你手动的敲进去。 } /* 我们可以从以上示例可以看出,caller需要在父对象中方法中用args.caller(...)来指定。 而这里,有一个特例那就是用menuitem button封装来打开的对象中的args.caller()对象缺省为那个承载menuitem button的formRun或者reportRun等对象。 */