Показать сообщение отдельно
Старый 17.11.2006, 11:26   #63  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
В общем, что-то типа этого:
X++:
// [url]http://www.axaptapedia.com/index.php/Tabax[/url]
public class FormRun extends ObjectRun
{
...
    //for creating a new project
    NoYes createTables;
    NoYes createMaps;
    NoYes createViews;
    NoYes createEDTs;
    NoYes createEnums;
    NoYes createMacros;
    NoYes createClasses;
    NoYes createForms;
    NoYes createReports;
    NoYes createQueries;
    NoYes createMenues;
    NoYes createMenuItemsDisplay;
    NoYes createMenuItemsOutput;
    NoYes createMenuItemsAction;
    str 40 defaultProjectPrefix;

    #define.CurrentVersion(11)
    #localmacro.CurrentList
        maxCaptionSize,
        defaultProjectPrefix,
        createTables,
        createMaps,
        createViews,
        createEDTs,
        createEnums,
        createMacros,
        createClasses,
        createForms,
        createReports,
        createQueries,
        createMenues,
        createMenuItemsDisplay,
        createMenuItemsOutput,
        createMenuItemsAction
    #endmacro
...
}
На кнопке настроек:
X++:
void clicked()
{
    Dialog           d = new Dialog('Tabax '+v+' preferences');
    DialogField      dialogMaxCaptionSize=d.addFieldValue(typeID(MaximumLength), maxCaptionSize, 'Maximal caption size');
    DialogField      dfProjectPrefix = d.addFieldValue(typeId(Name), defaultProjectPrefix, 'Default project prefix');
    DialogGroup      dg1 = d.addGroup();
    DialogField      dfTables = d.addFieldValue(typeId(NoYes), createTables, 'Tables');
    DialogField      dfMaps = d.addFieldValue(typeId(NoYes), createMaps, 'Maps');
    DialogField      dfViews = d.addFieldValue(typeId(NoYes), createViews, 'Views');
    DialogField      dfEDTs = d.addFieldValue(typeId(NoYes), createEDTs, 'EDTs');
    DialogField      dfEnums = d.addFieldValue(typeId(NoYes), createEnums, 'Enums');
    DialogField      dfMacros = d.addFieldValue(typeId(NoYes), createMacros, 'Macros');
    DialogField      dfClasses = d.addFieldValue(typeId(NoYes), createClasses, 'Classes');
    DialogField      dfForms = d.addFieldValue(typeId(NoYes), createTables, 'Forms');
    DialogField      dfReports = d.addFieldValue(typeId(NoYes), createReports, 'Reports');
    DialogField      dfQueries = d.addFieldValue(typeId(NoYes), createQueries, 'Queries');
    DialogField      dfMenues = d.addFieldValue(typeId(NoYes), createMenues, 'Menues');
    DialogField      dfMenuItemsDisplay = d.addFieldValue(typeId(NoYes), createMenuItemsDisplay, 'MenuItemsDisplay');
    DialogField      dfMenuItemsOutput = d.addFieldValue(typeId(NoYes), createMenuItemsOutput, 'MenuItemsOutput');
    DialogField      dfMenuItemsAction = d.addFieldValue(typeId(NoYes), createMenuItemsAction, 'MenuItemsAction');

    super();
    dg1.frameType(FormFrameType::None);
    dg1.columns(2);

    if(d.run())
    {
        maxCaptionSize=dialogMaxCaptionSize.value();
        defaultProjectPrefix = dfProjectPrefix.value();
        createTables = dfTables.value();
        createMaps = dfMaps.value();
        createViews = dfViews.value();
        createEDTs = dfEDTs.value();
        createEnums = dfEnums.value();
        createMacros = dfMacros.value();
        createClasses = dfClasses.value();
        createForms = dfForms.value();
        createReports = dfReports.value();
        createQueries = dfQueries.value();
        createMenues = dfMenues.value();
        createMenuItemsDisplay = dfMenuItemsDisplay.value();
        createMenuItemsOutput = dfMenuItemsOutput.value();
        createMenuItemsAction = dfMenuItemsAction.value();
    }
}
X++:
void createNewProject()
{
    #AOT
    ProjectNode         projNode;
    ProjectGroupNode    dataDictNode;
    ProjectGroupNode    MenuItemsNode;
    Common              tbl;
    NoYes tables;
    NoYes maps;
    NoYes views;
    NoYes EDTs;
    NoYes enums;
    NoYes macros;
    NoYes classes;
    NoYes forms;
    NoYes reports;
    NoYes queries;
    NoYes menues;
    NoYes menuItemsDisplay;
    NoYes menuItemsOutput;
    NoYes menuItemsAction;


    //Method Creates a new Shared project
    TreeNode createNewSharedProject()
    {
       ProjectNode      upgradeNode;
       TreeNode         treeNodeProject;
       str              projName;
       Dialog           d = new Dialog('ProjectName');
       DialogField      dfProjectName = d.addFieldValue(typeId(Name), defaultProjectPrefix, 'ProjectName');
       DialogGroup      dg1 = d.addGroup();
       DialogField      dfTables = d.addFieldValue(typeId(NoYes), createTables, 'Tables');
       DialogField      dfMaps = d.addFieldValue(typeId(NoYes), createMaps, 'Maps');
       DialogField      dfViews = d.addFieldValue(typeId(NoYes), createViews, 'Views');
       DialogField      dfEDTs = d.addFieldValue(typeId(NoYes), createEDTs, 'EDTs');
       DialogField      dfEnums = d.addFieldValue(typeId(NoYes), createEnums, 'Enums');
       DialogField      dfMacros = d.addFieldValue(typeId(NoYes), createMacros, 'Macros');
       DialogField      dfClasses = d.addFieldValue(typeId(NoYes), createClasses, 'Classes');
       DialogField      dfForms = d.addFieldValue(typeId(NoYes), createTables, 'Forms');
       DialogField      dfReports = d.addFieldValue(typeId(NoYes), createReports, 'Reports');
       DialogField      dfQueries = d.addFieldValue(typeId(NoYes), createQueries, 'Queries');
       DialogField      dfMenues = d.addFieldValue(typeId(NoYes), createMenues, 'Menues');
       DialogField      dfMenuItemsDisplay = d.addFieldValue(typeId(NoYes), createMenuItemsDisplay, 'MenuItemsDisplay');
       DialogField      dfMenuItemsOutput = d.addFieldValue(typeId(NoYes), createMenuItemsOutput, 'MenuItemsOutput');       
       DialogField      dfMenuItemsAction = d.addFieldValue(typeId(NoYes), createMenuItemsAction, 'MenuItemsAction');
;
       treeNodeProject = SysTreeNode::getSharedProject();
       //Swap next line with the line above to create a private project
       //treeNodeProject = SysTreeNode::getPrivateProject();
      dg1.frameType(FormFrameType::None);
      dg1.columns(2);
      dfProjectName.limitText(40);
      if (d.run())
      {
          projName = dfProjectName.value();
          tables = dfTables.value();
          maps = dfMaps.value();
          views = dfViews.value();
          EDTs = dfEDTs.value();
          enums = dfEnums.value();
          macros = dfMacros.value();
          classes = dfClasses.value();
          forms = dfForms.value();
          reports = dfReports.value();
          queries = dfQueries.value();
          menues = dfMenues.value();
          menuItemsDisplay = dfMenuItemsDisplay.value();
          menuItemsOutput = dfMenuItemsOutput.value();
          menuItemsAction = dfMenuItemsAction.value();
      }
      else
        return null;

      if (!projName)
          projName  = treeNodeProject.newObjectName();


       if (!treeNodeProject.AOTfindChild(projName))
            treeNodeProject.AOTadd(projName);

       upgradeNode = treeNodeProject.AOTfindChild(projName);

       return upgradeNode.getRunNode();
    }
    //Methods creates sub groups in the Project Node
    ProjectGroupNode createGroup(str _nodeName, ProjectGroupNode parent)
    {
        TreeNodeName     projNodeName = SysTreeNode::pathName(_nodeName);
        ProjectGroupNode child = parent.aotFindChild(projNodeName);
        GroupNodeType    groupNodeType;
        boolean          isGroupNode = false;
        ;
        if (!child)
        {
            if (classIdGet(parent) != classNum(ProjectNode))
            {
                groupNodeType = parent.projectGroupType();
                parent.projectGroupType(GroupNodeType::All);
                isGroupNode = true;
            }

            parent.aotAdd(projNodeName);
            child = parent.aotFindChild(projNodeName);

            if (child)
                child.projectGroupType(SysTreeNode::path2ProjectGroupNodeType(_nodeName));

            if (isGroupNode)
                parent.projectGroupType(groupNodeType);
        }
        return child;
    }
    ;


    projNode      = createNewSharedProject();
    if (!projNode)
        return;
    projNode.lockUpdate();

    if (menuItemsDisplay || menuItemsAction || menuItemsOutput)
    {
        menuItemsNode = createGroup(#MenuItemsPath,         projNode);
            if (menuItemsAction)
                        createGroup(#MenuItemsActionPath,   menuItemsNode);
            if (menuItemsOutput)
                        createGroup(#MenuItemsOutputPath,   menuItemsNode);
            if (menuItemsDisplay)
                        createGroup(#MenuItemsDisplayPath,  menuItemsNode);
    }
    if (menues)
                    createGroup(#MenusPath,             projNode);
    if (reports)
                    createGroup(#ReportsPath,           projNode);
    if (forms)
                    createGroup(#FormsPath,             projNode);
    if (Classes)
                    createGroup(#ClassesPath,           projNode);
    if (tables || maps || views || enums || EDTs)
    {
        dataDictNode  = createGroup(#DataDictionaryPath,    projNode);
        if (enums)
                        createGroup(#BaseEnumsPath,         dataDictNode);
        if (EDTs)
                        createGroup(#ExtendedDataTypesPath, dataDictNode);
        if (views)
                        createGroup(#ViewsPath, dataDictNode);
        if (maps)
                        createGroup(#TableMapsPath, dataDictNode);

        if (EDTs)
                        createGroup(#ExtendedDataTypesPath, dataDictNode);

        if (tables)
                        createGroup(#TablesPath,            dataDictNode);

    }

    projNode.AOTsave();
    projNode.unlockUpdate();
}
Сорри, сейчас нету времени как плагин выложить, т.к. работы много.
__________________
С уважением,
Олег.