zoukankan      html  css  js  c++  java
  • Using X++ Code Create master table form

     

    This code is used to create a simple form with overview and general tab when table name is passed to it. Before creating the form make sure the table contains overview, identification and description field group as per the best practice. Also check that label of Table is given which help in creating the caption of form.

     

    static void Jimmy_CreateFormfromTable(Args _args)
    {
        #AOT
        SysDictTable            dictTable; 
    //= new SysDictTable(tableNum(Jimmy_Test));
        FormBuild               formBuild;
        Form                    form;
        FormBuildDesign         formBuildDesign;
        FormBuildTabControl     formBuildTabControl;
        FormBuildTabPageControl formBuildTabPageControl;
        FormBuildGridControl    formBuildGridControl;
        FormBuildGroupControl   formBuildGroupControl;
        MenuItemBuild           menuItemBuild;
        MenuFunction            menuFunction;
        Set                     fieldGroupStr 
    = new Set(Types::String);
        SysDictFieldGroup       dictFieldGroup;
        SetEnumerator           setEnum;
    // = dictTable.fieldGroups().getEnumerator();
        Dialog                  dialog = new Dialog("Form Creater");
        DialogField             dialogField_TableName;
        str                     tableName
    ;
        dialogField_TableName 
    = dialog.addField(typeid(Name),"Table Name");
        
    if(dialog.run())
        {
            tableName 
    = dialogField_TableName.value();
            
    if(!tableName)
                
    throw error("Please enter table name");

            dictTable 
    = new SysDictTable(tableName2id(tableName));
            
    if(!dictTable)
                
    throw error("Check your table name");

            setEnum 
    = dictTable.fieldGroups().getEnumerator();
            
    if (TreeNode::findNode(#FormsPath).AOTfindChild(dictTable.name()) ||
                TreeNode::findNode(#MenuItemsDisplayPath).AOTfindChild(dictTable.name()))
                
    throw error("Has already been created");

            
    while (setEnum.moveNext())
            {
                dictFieldGroup 
    = setEnum.current();
                fieldGroupStr.add(dictFieldGroup.name());
            }
            formBuild 
    = new FormBuild(dictTable.name());
            form 
    = formBuild.form();
            form.addDataSource(dictTable.name());
            formBuildDesign         
    = form.design();
            info(dictTable.labelLabelId());
            formBuildDesign.caption(dictTable.labelLabelId());
            formBuildDesign.titleDatasource(dictTable.name());
            formBuildTabControl     
    = formBuildDesign.addControl(FormControlType::Tab, "@SYS78488");
            formBuildTabControl.widthMode(FormWidth::ColumnWidth);
            formBuildTabControl.heightMode(FormHeight::ColumnHeight);

            formBuildDesign.addControl(FormControlType::ButtonGroup, 
    'ButtonGroup');

            formBuildTabPageControl 
    = formBuildTabControl.addControl(FormControlType::TabPage, 'TabOverview');
            formBuildTabPageControl.caption(literalstr(
    '@SYS34991'));
            formBuildTabPageControl.widthMode(FormWidth::ColumnWidth);
            formBuildTabPageControl.heightMode(FormHeight::ColumnHeight);

            formBuildGridControl    
    = formBuildTabPageControl.addControl(FormControlType::Grid, '@SYS26263');
            formBuildGridControl.widthMode(FormWidth::ColumnWidth);
            formBuildGridControl.heightMode(FormHeight::ColumnHeight);
            
    if (fieldGroupStr.in('@SYS34991'))
            {
                formBuildGridControl.dataSource(dictTable.name());
                formBuildGridControl.dataGroup(
    '@SYS34991');
                formBuildGridControl.autoDataGroup(
    true);
            }

            formBuildTabPageControl 
    = formBuildTabControl.addControl(FormControlType::TabPage, 'TabGeneral');
            formBuildTabPageControl.caption(literalstr(
    '@SYS81043'));
            formBuildTabPageControl.widthMode(FormWidth::ColumnWidth);
            formBuildTabPageControl.heightMode(FormHeight::ColumnHeight);

            
    if (fieldGroupStr.in('@SYS36186'))
            {
                formBuildGroupControl   
    = formBuildTabPageControl.addControl(FormControlType::Group, '@SYS36186');
                formBuildGroupControl.dataSource(dictTable.name());
                formBuildGroupControl.dataGroup(
    '@SYS36186');
            }

            
    if (fieldGroupStr.in('@SYS80470'))
            {
                formBuildGroupControl   
    = formBuildTabPageControl.addControl(FormControlType::Group, '@SYS80470');
                formBuildGroupControl.dataSource(dictTable.name());
                formBuildGroupControl.dataGroup(
    '@SYS80470');
            }
            form.save();
            form.AOTcompile();

            menuItemBuild 
    = new MenuItemBuild(dictTable.name(), MenuItemType::Display);
            menuFunction  
    = menuItemBuild.menuFunction();
            menuFunction.label(dictTable.labelLabelId());
            menuFunction.objectType(UtilElementType::Form);
            menuFunction.
    object(dictTable.name());
            menuFunction.AOTsave();

            TreeNode::findNode(#FormsPath).AOTrefresh();
            Info(strfmt(
    " Form %1 is created",tableName));
        }

    }

     

  • 相关阅读:
    windows 挂载windows 共享盘为本地磁盘
    模块
    message 匹配不上grok正则 也会写入到elasticsearch
    【Java】No enclosing instance of type XXX is accessible. Must qualify the allocation with an enclosing instance of type XXX(e.g. x.new A() where x is an instance of XXX).的解决办法
    【Ubuntu】常用软件及其下载地址
    【Java】内存分析
    【Java】利用二维数组进行排版
    【Java】一维数组
    【趣题】用for循环输出菱形
    【趣题】穷举法解决百钱买百鸡
  • 原文地址:https://www.cnblogs.com/Fandyx/p/2116128.html
Copyright © 2011-2022 走看看