jeudi 10 octobre 2013

Using Classes to Create Forms [AX 2012]

Applies To: Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012

Use forms to display data to users. Create a form by using the FormRun and Form classes, and a variety of other classes that modify the form design and data source.
You can also create a form by using the Application Object Tree (AOT). For more information, see Walkthrough: Creating a Form by Using the AOT.




The following example creates a form to display data that is contained in the CustTable table. Place the code into a method that is called from a main class method to view the form. The signature of a main method is static void main (Args args).
Following is information about the roles of the example's various methods and objects.
The following adds the CustTable table to the form:
The following creates and modifies the form's design:
The following objects add the tab page controls, a grid control, and string controls to the form:
The following method associates data fields with the grid control:
The following method associates data fields with the string controls:
The following method displays the form:
static void createForm(Args _args)
{
    Args args;
    Form form;
    FormRun formRun;
    FormBuildDesign formBuildDesign;
    FormBuildDataSource formBuildDataSource;
    FormBuildGridControl formBuildGridControl;
    FormBuildStringControl formBuildStringControl;
    FormBuildStringControl formBuildStringControl2;
    FormBuildTabControl formBuildTabControl;
    FormBuildTabPageControl formBuildTabPageControl;
    FormBuildTabPageControl formBuildTabPageControl2;
    FormStringControl formStringControl;
    FormGridControl formGridControl;
    DictTable dictTable;
    int idx;
    int idx2;
    int idx3;

    ;

    // Create the form header.
    form = new Form();

    // Add a data source to the form. ID 77 refers to the CustTable.
    dictTable = new DictTable(tablenum(CustTable));
    formBuildDataSource = form.addDataSource(dictTable.name());
    formBuildDataSource.table(dictTable.id());

    // Create the form design.
    formBuildDesign = form.addDesign("Design");
    formBuildDesign.caption("myForm");

    // Add tabbed page controls, a grid control, and string controls.
    formBuildTabControl =
 formBuildDesign.addControl(FormControlType::Tab, "Overview");
    
    formBuildTabPageControl =
 formBuildTabControl.addControl(FormControlType::TabPage, "Overview");
    formBuildTabPageControl.caption("Overview");
    
    formBuildTabPageControl2 =
 formBuildTabControl.addControl(FormControlType::TabPage,"Details");
    formBuildTabPageControl2.caption("Details");
    
    formBuildGridControl =
 formBuildTabPageControl.addControl(FormControlType::Grid,"Table Grid");
    formBuildStringControl =
 formBuildTabPageControl2.addControl(FormControlType::String,"Table String");
    formBuildStringControl2 =
 formBuildTabPageControl2.addControl(FormControlType::String,"Table String");

    // Add data fields to controls.
    formBuildGridControl.addDataField
(formBuildDataSource.id(),dictTable.fieldName2Id("AccountNum"));
    formBuildGridControl.addDataField
(formBuildDataSource.id(),dictTable.fieldName2Id("Phone"));
    formBuildGridControl.addDataField
(formBuildDataSource.id(),dictTable.fieldName2Id("Name"));
    formBuildGridControl.addDataField
(formBuildDataSource.id(),dictTable.fieldName2Id("Address"));
    formBuildStringControl.dataSource(formBuildDataSource.id());
    formBuildStringControl.dataField(2);
    formBuildStringControl2.dataSource(formBuildDataSource.id());
    formBuildStringControl2.dataField(3);

    args = new Args();
    args.object(form);

    // Create the run-time form.
    formRun = classfactory.formRunClass(args);

    formRun.run();
    formRun.detach();
}

Aucun commentaire:

Enregistrer un commentaire