• 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);
    }
        

  • 相关阅读:
    关于vue中的语法糖v-model
    Cocos2d-x shader学习1: 灰度shader
    nginx多域名配置
    lua和c的亲密接触
    LeetCode 2. Add Two Numbers 解题报告
    LeetCode 1. Two Sum 解题报告
    【翻译】LPeg编程指南
    Cocos2d-x中的CC_CALLBACK_X详解
    C++ 11 学习3:显示虚函数重载(override)
    C++ 11 学习2:空指针(nullptr) 和 基于范围的for循环(Range-based for loops)
  • 原文地址:https://www.cnblogs.com/Fandyx/p/2761565.html
Copyright © 2020-2023  润新知