Axapta
|
В общем, что-то типа этого:
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();
} Сорри, сейчас нету времени как плагин выложить, т.к. работы много.
__________________
С уважением,
Олег.
|