{ "type": "class",
  "qname": "mx.containers.Form",
  "baseClassname": "mx.core.Container"
  ,
    "description": "The Form container lets you control the layout of a form, mark form fields as required or optional, handle error messages, and bind your form data to the Flex data model to perform data checking and validation. It also lets you use style sheets to configure the appearance of your forms.  <p>The following table describes the components you use to create forms in Flex:</p> <table class=&quot;innertable&quot;> <tr> <th>Component</th> <th>Tag</th> <th>Description</th> </tr> <tr> <td>Form</td> <td><code>&lt;mx:Form&gt;</code></td> <td>Defines the container for the entire form, including the overall form layout. Use the FormHeading control and FormItem container to define content. You can also insert other types of components in a Form container.</td> </tr> <tr> <td>FormHeading</td> <td><code>&lt;mx:FormHeading&gt;</code></td> <td>Defines a heading within your form. You can have multiple FormHeading controls within a single Form container.</td> </tr> <tr> <td>FormItem</td> <td><code>&lt;mx:FormItem&gt;</code></td> <td>Contains one or more form children arranged horizontally or vertically. Children can be controls or other containers. A single Form container can hold multiple FormItem containers.</td> </tr> </table>   <p>The <code>&lt;mx:Form&gt;</code> tag inherits all the tag attributes of its superclass and adds the following tag attributes:</p>  <pre>\\n &lt;mx:Form\\n <strong>Styles</strong>\\n horizontalGap=&quot;8&quot;\\n indicatorGap=&quot;14&quot;\\n labelWidth=&quot;<i>Calculated</i>&quot;\\n paddingBottom=&quot;16&quot;\\n paddingTop=&quot;16&quot;\\n verticalGap=&quot;6&quot;\\n &gt;\\n ...\\n <i>child tags</i>\\n ...\\n &lt;/mx:Form&gt;\\n </pre>",
  "tags": [
  {  "tagName": "includeExample",
         "values": ["examples/FormExample.mxml"]},
      {  "tagName": "see",
         "values": ["mx.containers.FormHeading", "mx.containers.FormItem"]},
      {  "tagName": "mxml",
         "values": []},
      {  "tagName": "playerversion",
         "values": ["Flash 9", "AIR 1.1"]},
      {  "tagName": "productversion",
         "values": ["Flex 3"]},
      {  "tagName": "langversion",
         "values": ["3.0"]}  ],
  "members": [
  { "type": "method",
        "qname": "mx.containers.Form",
        "namespace": "",
        "bindable": [],
        "details": [],
        "deprecated": {},
          "description": "Constructor.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "",
          "params": []}
      ,
      { "type": "accessor",
        "access": "read-write",
        "return": "mx.core.IFlexModuleFactory",
        "qname": "moduleFactory",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "A module factory is used as context for using embedded fonts and for finding the style manager that controls the styles for this component.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1", "Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3", "Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0", "3.0"]}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "Number",
        "qname": "maxLabelWidth",
        "namespace": "public",
        "bindable": ["updateComplete"],
        "details": [],
        "deprecated": {},
          "description": "The maximum width, in pixels, of the labels of the FormItems containers in this Form.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "method",
        "qname": "measure",
        "namespace": "protected",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "Calculates the preferred, minimum and maximum sizes of the Form. For more information about the <code>measure</code> method, see the <code>UIComponent.measure()</code> method. <p>The <code>Form.measure()</code> method sets the <code>measuredWidth</code> property to the width of the largest child, plus the values of the <code>paddingLeft</code> and <code>paddingRight</code> style properties and the width of the border.</p>  <p>The <code>measuredHeight</code> property is set to the sum of the <code>measuredHeight</code>S of all children, plus <code>verticalGap</code> space between each child. The <code>paddingTop</code> and <code>paddingBottom</code> style properties and the height of the border are also added.</p>  <p>The <code>measuredMinWidth</code> property is set to the largest minimum width of the children. If the child has a percentage value for <code>width</code>, the <code>minWidth</code> property is used, otherwise the <code>measuredWidth</code> property is used. The values of the <code>paddingLeft</code> and <code>paddingRight</code> style properties and the width of the border are also added.</p>  <p>The <code>measuredMinHeight</code> property is set to the same value as that of the <code>measuredHeight</code> property.</p>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": []}
      ,
      { "type": "method",
        "qname": "updateDisplayList",
        "namespace": "protected",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "Responds to size changes by setting the positions and sizes of this container's children. For more information about the <code>updateDisplayList()</code> method, see the <code>UIComponent.updateDisplayList()</code> method.  <p>The <code>Form.updateDisplayList()</code> method positions the children in a vertical column, spaced by the <code>verticalGap</code> style property. The <code>paddingLeft</code>, <code>paddingRight</code>, <code>paddingTop</code> and <code>paddingBottom</code> style properties are applied.</p>  <p>If a child has a percentage width, it is stretched horizontally to the specified percentage of the Form container; otherwise, it is set to its <code>measuredWidth</code> property. Each child is set to its <code>measuredHeight</code> property.</p>  <p>This method calls the <code>super.updateDisplayList()</code> method before doing anything else.</p>  in the component's coordinates, regardless of the value of the <code>scaleX</code> property of the component.  in the component's coordinates, regardless of the value of the <code>scaleY</code> property of the component.",
        "tags": [
        {  "tagName": "param",
               "values": ["unscaledWidth Specifies the width of the component, in pixels,", "unscaledHeight Specifies the height of the component, in pixels,"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": [{ "name": "unscaledWidth", "type": "Number"},
        { "name": "unscaledHeight", "type": "Number"}]}
      ]
  }
