{ "type": "class",
  "qname": "mx.containers.FormItem",
  "baseClassname": "mx.core.Container"
  ,
    "description": "The FormItem container defines a label and one or more children arranged horizontally or vertically. Children can be controls or other containers. A single Form container can hold multiple FormItem containers.   <p>The <code>&lt;mx:FormItem&gt;</code> tag inherits all of the tag attributes of its superclass, except <code>paddingLeft</code>, and adds the following tag attributes:</p>  <pre>\\n &lt;mx:FormItem\\n <strong>Properties</strong>\\n direction=&quot;vertical|horizontal&quot;\\n label=&quot;&quot;\\n required=&quot;false|true&quot;\\n \\n <strong>Styles</strong>\\n horizontalAlign=&quot;left|center|right&quot;\\n horizontalGap=&quot;8&quot;\\n indicatorGap=&quot;14&quot;\\n indicatorSkin=&quot;<i>'mx.containers.FormItem.Required' symbol in Assets.swf</i>&quot;\\n labelStyleName=&quot;&quot;\\n labelWidth=&quot;<i>Calculated</i>&quot;\\n paddingBottom=&quot;0&quot;\\n paddingRight=&quot;0&quot;\\n paddingTop=&quot;0&quot;\\n verticalGap=&quot;6&quot;\\n &gt;\\n ...\\n <i>child tags</i>\\n ...\\n &lt;/mx:FormItem&gt;\\n </pre>",
  "tags": [
  {  "tagName": "includeExample",
         "values": ["examples/FormExample.mxml"]},
      {  "tagName": "see",
         "values": ["mx.containers.Form", "mx.containers.FormItemDirection", "mx.containers.FormHeading", "mx.controls.FormItemLabel"]},
      {  "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.FormItem",
        "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": "String",
        "qname": "label",
        "namespace": "public",
        "bindable": ["labelChanged"],
        "details": ["override"],
        "deprecated": {},
          "description": "Text label for the FormItem. This label appears to the left of the child components of the form item. The position of the label is controlled by the <code>textAlign</code> style property.",
        "tags": [
        {  "tagName": "default",
               "values": [""""]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "String",
        "qname": "direction",
        "namespace": "public",
        "bindable": ["directionChanged"],
        "details": [],
        "deprecated": {},
          "description": "Direction of the FormItem subcomponents. Possible MXML values are <code>&quot;vertical&quot;</code> or <code>&quot;horizontal&quot;</code>. The default MXML value is <code>&quot;vertical&quot;</code>. Possible ActionScript values are <code>FormItemDirection.VERTICAL</code> or <code>FormItemDirection.HORIZONTAL</code>.  <p>When <code>direction</code> is <code>&quot;vertical&quot;</code>, the children of the  FormItem are stacked vertically to the right of the FormItem label. When <code>direction</code> is <code>&quot;horizontal&quot;</code>, the children are placed in a single row (if they fit), or in two equally-sized columns.</p>  <p>If you need more control over the layout of FormItem children, you can use a container such as Grid or Tile as the direct child of the FormItem and put the desired controls inside it.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["FormItemDirection.VERTICAL"]},
            {  "tagName": "see",
               "values": ["mx.containers.FormItemDirection"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-only",
        "return": "mx.controls.Label",
        "qname": "itemLabel",
        "namespace": "public",
        "bindable": ["itemLabelChanged"],
        "details": [],
        "deprecated": {},
          "description": "A read-only reference to the FormItemLabel subcomponent displaying the label of the FormItem.",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Boolean",
        "qname": "required",
        "namespace": "public",
        "bindable": ["requiredChanged"],
        "details": [],
        "deprecated": {},
          "description": "If <code>true</code>, display an indicator that the FormItem children require user input. If <code>false</code>, indicator is not displayed.  <p>This property controls the indicator display only. You must attach a validator to the children if you require input validation.</p>",
        "tags": [
        {  "tagName": "default",
               "values": ["false"]},
            {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ]},
      { "type": "accessor",
        "access": "read-write",
        "return": "Boolean",
        "qname": "includeInLayout",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "Specifies whether this component is included in the layout of the parent container. If <code>true</code>, the object is included in its parent container's layout and is sized and positioned by its parent container as per its layout rules. If <code>false</code>, the object size and position are not affected by its parent container's layout.",
        "tags": [
        {  "tagName": "default",
               "values": ["true", "true"]},
            {  "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": "method",
        "qname": "measure",
        "namespace": "protected",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "Calculates the preferred, minimum and maximum sizes of the FormItem. See the <code>UIComponent.measure()</code> method for more information about the <code>measure()</code> method.  <p>The <code>FormItem.measure()</code> method first determines the number of columns to use. If the <code>direction</code> property is <code>FormItemDirection.HORIZONTAL</code>, all controls will be placed in a single row if possible. If the controls cannot fit in a single row, they are split into two columns.  If that does not work, then use a single column. If <code>direction</code> is <code>FormItemDirection.VERTICAL</code>, the controls are placed in a single column (like <code>VBox</code>).</p>  <p>A FormItem contains two areas: the label area and the controls area. The size of the label is the same regardless of the direction of the controls. The size of the control area depends on how many rows and columns are used.</p>  <p>The width of the label area is determined by the <code>labelWidth</code> style property. If this property is <code>undefined</code> (which is the default), the width of the largest label in the parent Form container is used.</p>  <p>If all children are on a single row, the width of the control area is the sum of the widths of all the children plus <code>horizontalGap</code> space between the children.</p>  <p>If the children are on a single column, the width of the control area is the width of the widest child.</p>  <p>If the children are on multiple rows and columns, the width of the widest child is the column width, and the width of the control area is the column width multiplied by the number of columns plus the <code>horizontalGap</code> space between each column.</p>  <p><code>measuredWidth</code> is set to the width of the label area plus the width of the control area plus the value of the <code>indicatorGap</code> style property. The values of the <code>paddingLeft</code> and <code>paddingRight</code> style properties and the width of the border are also added.</p>  <p><code>measuredHeight</code> is set to the sum of the preferred heights of all rows of 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><code>measuredMinWidth</code> is set to the width of the label area plus the minimum width of the control area plus the value of the <code>indicatorGap</code> style property. The values of the <code>paddingLeft</code> and <code>paddingRight</code> style properties and the width of the border are also added.</p>  <p><code>measuredMinHeight</code> is set to the sum of the minimum heights of all rows of 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>",
        "tags": [
        {  "tagName": "playerversion",
               "values": ["Flash 9", "AIR 1.1"]},
            {  "tagName": "productversion",
               "values": ["Flex 3"]},
            {  "tagName": "langversion",
               "values": ["3.0"]}  ],
          "return": "void",
          "params": []}
      ,
      { "type": "accessor",
        "access": "read-write",
        "return": "Number",
        "qname": "measuredWidth",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "private",
               "values": []}  ]},
      { "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. See the <code>UIComponent.updateDisplayList()</code> method for more information about the <code>updateDisplayList()</code> method.  <p>See the <code>FormItem.measure()</code> method for more information on how the FormItem controls are positioned.</p>  <p>The label is aligned in the label area according to the <code>textAlign</code> style property. All labels in a form are aligned with each other.</p>  <p>If the <code>required</code> property is <code>true</code>, a symbol indicating the field is required is placed between the label and the controls.</p>  <p>The controls are positioned in columns, as described in the documentation for the <code>measure()</code> method. The  <code>horizontalAlign</code> style property determines where the controls are placed horizontally.</p>  <p>When the <code>direction</code> property is <code>&quot;vertical&quot;</code>, any child that has no <code>width</code> specified uses the <code>measuredWidth</code> rounded up to the nearest 1/4 width of the control area. This is done to avoid jagged right edges of controls.</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"}]}
      ,
      { "type": "method",
        "qname": "addedToParent",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "return": "void",
          "params": []}
      ,
      { "type": "method",
        "qname": "setActualSize",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "return": "void",
          "params": [{ "name": "w", "type": "Number"},
        { "name": "h", "type": "Number"}]}
      ,
      { "type": "accessor",
        "access": "read-only",
        "return": "int",
        "qname": "numElements",
        "namespace": "public",
        "bindable": [],
        "details": ["override"],
        "deprecated": {},
          "description": "",
        "tags": [
        {  "tagName": "private",
               "values": []},
            {  "tagName": "royaleignorecoercion",
               "values": ["mx.containers.beads.FormItemView"]}  ]}]
  }



