Args传值总结 (Report Class Form)

在开发过程中,我们往往会遇到传值问题!以下是关于我在这方面的工作总结,以后会更新!希望大家关注!

//可以从Form的MenuItem中的单击事件中传批量参数至Report或者Class

A ) Form

    void clicked()
{
    Container       cData;
    ContainerClass  cClass;
    Formrun         formRun;
    Args            args = new Args();
    str             st1;//可以是数据源中的值
    int             int1;//也可以是传控件的值
    boolean         boolean1;
;
    cData       = [st1,int1,boolean1];//container内容
    cClass      = new ContainerClass(cData);//创建ContainerClass

    args.parmObject(cClass);//ContainerClass作为一个对象传过去


    new MenuFunction('YAM_D_InvoicesRepExportToExcel',MenuItemtype::Output).run(args);//Report

    new MenuFunction('YAM_D_InvoicesRepExportToExcel',MenuItemtype::Action).run(args);//Class
    super();//调用MenuItem(Report or Class)
}

/************************************/

B ) Report(init())

//报表中初始化接收从from中传过来的参数

public void init()   //对Class取值并返回
{
    ContainerClass  _ContainerClass;
    container       containerData;
;
    super();
    if(element.args() && element.args().parmObject())
    {
        _ContainerClass = element.args().parmObject();//取得对象
        containerData   = _ContainerClass.value();//取得class中的数据为container类型,用时直接从container中取即可

    }

}

C ) Class (Main())

//报表中初始化接收从from中传过来的参数

static void main(Args args)
{
    YAM_Label       YAM_Label = new YAM_Label();
    int             StartTime,TakeTime;
;
    print args.parm();//接收从Form从传来的值

    if (YAM_Label.prompt())
    {
        StartTime = timenow();

        YAM_Label.run();

        TakeTime  = timeNow() - StartTime;
        info(strfmt("Take it time to %1 Hour %2 Minute %3 Second",TakeTime div 3600,TakeTime mod 3600 div 60,TakeTime mod 3600 mod 60));
        YAM_Label.initSomething(args);
    }
}

---------------------------------------------------------------------

2009 - 09 - 02 增加 以下部分

传递数据源当前记录值到class

我们经常遇到这个问题;

如:一个Form有很多记录,当选中某一条是,如何将这个记录传递给一个class呢? 

A ) 在MenuItem中 选择数据源

form有一个menuitem,menuitemtype是active,menuitemname就是class name

B ) 在Class中的Main方法中获取

通过args这个参数。在menuItemButton的datasopurce属性中设置你要传递的table。在class的main方法中通过args获得。
static void main(Args args)
{
      custtable t;//假定我的datasource是custtable
;
      t  = args.record();
      info( t.Address);
}
    

原文地址:https://www.cnblogs.com/Fandyx/p/2761565.html