如何获取按钮(按钮名称和按钮属性)属于D365 FO(AX)中的一个窗体

时间:2019-04-16 09:18:20

标签: axapta microsoft-dynamics x++ dynamics-365-operations

我需要获取按钮(菜单项按钮/按钮),它们的属性属于表单

For example: "CustTrans" Form
I need all buttons belong or exist in this Form
Result: all buttons on a treeNode, organized by design

问题:如何在表单中获取按钮

X++?

这是我需要的示例,所有按钮都属于CustTrans表单,例如由其Form Action控件组织

Here is an example of what i need, all the buttons belongs in the CustTrans Form, for example organized by their Form Action control

1 个答案:

答案 0 :(得分:0)

请检查以下代码作为示例,并根据需要进行修改

Form                myForm;    
FormBuildDesign     design;
FormBuildControl    control;
int                 cnt = 0;
Set                 buttonsSet = new Set(Types::Class);

void findButtons(FormBuildControl _buildControl) 
{
    FormBuildControl    buildControl;
    int                 i;
    ;

    if (_buildControl.controlCount() > 0)
    {            
        for (i = 1; i <= _buildControl.controlCount(); i++)
        {
            buildControl = _buildControl.controlNum(i);
            findButtons(buildControl);
        }   
    }
    else
    {
        if (classidget(_buildControl) == classnum(FormBuildButtonControl) ||
            classidget(_buildControl) == classnum(FormBuildCommandButtonControl) ||
            classidget(_buildControl) == classnum(FormBuildDropDialogButtonControl) ||
            classidget(_buildControl) == classnum(FormBuildMenuButtonControl) ||
            classidget(_buildControl) == classnum(FormBuildFunctionButtonControl))
        {
            buttonsSet.add(_buildControl);
        }
    }
}
;

myForm = formRun.form();
design = myForm.design();

for (cnt = 1; cnt <= design.controlCount(); cnt++)
{
    control = design.controlNum(cnt);
    findButtons(control);
}   

构建树控件的代码示例

TreeItemIdx         treeItemIdx;
TreeItemIdx         parentItemIdx;
ImageRes            imageRoot   = imageListAppl_Tutorial.image(#ImageFormButtonGroup);
ImageRes            imageRes    = imageListAppl_Tutorial.image(#ImageFormButton);

SetEnumerator       se;
FormBuildControl    buildControl;
;

formTreeControl.deleteAll();

parentItemIdx = SysFormTreeControl::addTreeItem(formTreeControl,
                                                'Buttons',
                                                FormTreeAdd::Root,
                                                'Data on Root',
                                                imageRoot,
                                                true);

SysFormTreeControl::setOverlayImage(formTreeControl, parentItemIdx, imageListAppl_Tutorial.image(#ImageOverlayRedLock));

se = _buttonsSet.getEnumerator();

while (se.moveNext())
{
    buildControl = se.current();

    treeItemIdx  = SysFormTreeControl::addTreeItem(formTreeControl,
                                                   buildControl.toString(),
                                                   parentItemIdx,
                                                   'Data on element 2',
                                                   imageRes,
                                                   false);
}

SysFormTreeControl::expandTree(formTreeControl, formTreeControl.getRoot(), 1);