<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><!-- saved from url=(0014)about:internet --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="../../style.css" type="text/css" media="screen"><link rel="stylesheet" href="../../print.css" type="text/css" media="print"><link rel="stylesheet" href="../../override.css" type="text/css"><meta name="keywords" content="UIFTETextField,mx.core.UIFTETextField,ABSOLUTE,ALL,AUTO,AUTO,AUTO,BINDING,CURRENT,CURRENT_VERSION,CURSOR_MANAGEMENT,DEFAULT,DEFAULT,DEFAULT_HANDLER,DEFAULT_MAX_HEIGHT,DEFAULT_MAX_WIDTH,DEFAULT_MEASURED_HEIGHT,DEFAULT_MEASURED_MIN_HEIGHT,DEFAULT_MEASURED_MIN_WIDTH,DEFAULT_MEASURED_WIDTH,DPI_120,DPI_160,DPI_240,DPI_320,DPI_480,DPI_640,EFFECT,EMPTY,HORIZONTAL,LTR,MOUSE,MXMLDescriptor,MXMLProperties,NONE,OFF,OFF,ON,ON,PARENT,QUEUED,RTL,TOP_LEVEL,TOUCH,VERSION_2_0,VERSION_2_0_1,VERSION_3_0,VERSION_4_0,VERSION_4_10,VERSION_4_11,VERSION_4_12,VERSION_4_13,VERSION_4_14,VERSION_4_15,VERSION_4_16,VERSION_4_16_1,VERSION_4_5,VERSION_4_6,VERSION_4_8,VERSION_4_9,VERSION_ALREADY_READ,VERSION_ALREADY_SET,VERTICAL,accessibilityDescription,accessibilityEnabled,accessibilityName,accessibilityProperties,accessibilityShortcut,activeEffects,actualCreationPolicy,allowDomainsInNewRSLs,allowInsecureDomainsInNewRSLs,alpha,alpha,alpha,alwaysInFront,alwaysInFront,alwaysShowSelection,alwaysShowSelection,antiAliasType,antiAliasType,antiAliasType,application,applicationDomainTarget,applicationID,autoExit,autoLayout,autoSize,autoSize,automationDelegate,automationDelegate,automationDelegate,automationEnabled,automationEnabled,automationEnabled,automationName,automationName,automationName,automationOwner,automationOwner,automationOwner,automationParent,automationParent,automationParent,automationTabularData,automationValue,automationValue,automationValue,automationVisible,automationVisible,automationVisible,background,background,backgroundColor,backgroundColor,backgroundFrameRate,backgroundImageBounds,baseline,baseline,baselinePosition,baselinePosition,baselinePosition,baselinePosition,baselinePosition,blendMode,border,border,border,borderColor,borderColor,borderMetrics,borderMetrics,borderMetrics,borderMetrics,borderMetrics,bottom,bottom,bottom,bottomScrollV,bottomScrollV,boxLayoutClass,buttonMode,cacheAsBitmap,cacheHeuristic,cacheHeuristic,cachePolicy,cachePolicy,canvasLayoutClass,caretIndex,caretIndex,childAllowsParent,childDescriptors,childDescriptors,className,className,className,clipContent,closed,closed,compatibilityErrorFunction,compatibilityVersion,compatibilityVersionString,computedMatrix,computedMatrix3D,condenseWhite,condenseWhite,constraintColumns,constraintRows,container,container,contentMouseX,contentMouseX,contentMouseY,contentMouseY,controlBar,controlBar,count,count,creatingContentPane,creatingContentPane,creationIndex,creationPolicy,creationPolicy,currentCSSState,currentIndex,currentIndex,currentItem,currentItem,currentState,currentState,cursorManager,data,data,dataProvider,dataProvider,defaultButton,defaultButton,defaultTextFormat,defaultTextFormat,deferredContentCreated,deferredContentCreated,depth,depth,descriptor,descriptor,designLayer,designLayer,digest,direction,direction,displayAsPassword,displayAsPassword,dockIconMenu,document,document,document,document,document,doubleClickEnabled,doubleClickEnabled,doubleClickEnabled,dropTarget,editable,effectiveAlpha,effectiveVisibility,effects,embedFonts,embedFonts,emphasized,enableIME,enableIME,enableIME,enableIME,enabled,enabled,enabled,enabled,errorString,events,explicitHeight,explicitHeight,explicitHeight,explicitHeight,explicitMaxHeight,explicitMaxHeight,explicitMaxHeight,explicitMaxHeight,explicitMaxWidth,explicitMaxWidth,explicitMaxWidth,explicitMaxWidth,explicitMinHeight,explicitMinHeight,explicitMinHeight,explicitMinHeight,explicitMinWidth,explicitMinWidth,explicitMinWidth,explicitMinWidth,explicitWidth,explicitWidth,explicitWidth,explicitWidth,filters,flexContextMenu,focusEnabled,focusEnabled,focusManager,focusManager,focusPane,focusPane,focusPane,focusPane,focusRect,focusRect,fontContext,fontContext,formats,frameRate,generator,graphics,gridFitType,gridFitType,gridFitType,hasBackgroundImage,hasComplexLayoutMatrix,hasFocusableChildren,hasFocusableChildren,hasLayoutMatrix3D,hasLayoutMatrix3D,hashType,height,height,height,historyManagementEnabled,hitArea,horizontalCenter,horizontalCenter,horizontalLineScrollSize,horizontalPageScrollSize,horizontalScrollBar,horizontalScrollBar,horizontalScrollPolicy,horizontalScrollPolicy,horizontalScrollPosition,horizontalScrollPosition,horizontalScrollPosition,horizontalScrollPosition,htmlText,htmlText,icon,icon,id,id,id,id,ignorePadding,ignorePadding,ignorePadding,imeMode,imeMode,imeMode,imeMode,includeInLayout,includeInLayout,includeInLayout,includeInLayout,includeInLayout,inheritingStyles,inheritingStyles,inheritingStyles,inheritingStyles,initialHeight,initialWidth,initialized,initialized,initialized,instanceIndex,instanceIndices,instanceIndices,is3D,is3D,is3D,isDocument,isDocument,isPopUp,isPopUp,isPopUp,isPopUp,isSigned,label,label,label,layout,layoutDirection,layoutDirection,layoutDirection,layoutIs3D,layoutMatrix,layoutMatrix3D,layoutMatrix3D,layoutRotationX,layoutRotationY,layoutRotationZ,layoutScaleX,layoutScaleY,layoutScaleZ,layoutWidth,layoutX,layoutY,layoutZ,left,left,left,length,length,liveScrolling,loadForCompatibility,loaderInfo,locale,locale,maintainProjectionCenter,mask,maskShape,maxChars,maxChars,maxChars,maxHeight,maxHeight,maxHeight,maxHeight,maxHorizontalScrollPosition,maxHorizontalScrollPosition,maxScrollH,maxScrollH,maxScrollV,maxScrollV,maxVerticalScrollPosition,maxVerticalScrollPosition,maxWidth,maxWidth,maxWidth,maxWidth,maximizable,maximizable,maximizable,measuredHeight,measuredHeight,measuredHeight,measuredHeight,measuredHeight,measuredHeight,measuredHeight,measuredHeight,measuredHeight,measuredMinHeight,measuredMinHeight,measuredMinHeight,measuredMinHeight,measuredMinWidth,measuredMinWidth,measuredMinWidth,measuredMinWidth,measuredWidth,measuredWidth,measuredWidth,measuredWidth,measuredWidth,measuredWidth,measuredWidth,measuredWidth,measuredWidth,menu,menu,minHeight,minHeight,minHeight,minHeight,minWidth,minWidth,minWidth,minWidth,minimizable,minimizable,minimizable,mirror,moduleFactory,moduleFactory,moduleFactory,moduleFactory,moduleFactory,moduleFactory,mouseChildren,mouseChildren,mouseEnabled,mouseEnabled,mouseEnabled,mouseFocusEnabled,mouseFocusEnabled,mouseWheelEnabled,mouseWheelEnabled,mouseX,mouseY,movieClipData,multiline,multiline,name,nativeApplication,nativeWindow,nativeWindow,nativeWindow,nestLevel,nestLevel,nestLevel,nestLevel,nonInheritingStyles,nonInheritingStyles,nonInheritingStyles,nonInheritingStyles,nonZeroTextHeight,nonZeroTextHeight,nonZeroTextHeight,numAutomationChildren,numChildren,numChildren,numChildren,numElements,numElements,numLayers,numLines,numLines,opaqueBackground,owner,owner,owner,owner,owner,pageTitle,parameters,parent,parent,parent,parent,parent,parent,parentAllowsChild,parentApplication,parentBridge,parentBridge,parentDocument,parentDrawsFocus,percentHeight,percentHeight,percentHeight,percentHeight,percentHeight,percentWidth,percentWidth,percentWidth,percentWidth,percentWidth,policyFileURL,postLayoutTransformOffsets,postLayoutTransformOffsets,preloadedRSLs,preloader,preloaderChromeColor,processedDescriptors,processedDescriptors,processedDescriptors,properties,properties,propertiesFactory,rawChildren,rawChildren,recycleChildren,recycleChildren,repeater,repeaterIndex,repeaterIndices,repeaterIndices,repeaters,repeaters,resetHistory,resizable,resizable,resizable,resourceManager,restrict,restrict,restrict,right,right,right,root,rotation,rotation,rotationX,rotationY,rotationZ,rslURL,runtimeDPI,scale9Grid,scaleX,scaleX,scaleY,scaleY,scaleZ,screen,screen,scriptRecursionLimit,scriptTimeLimit,scrollAreaChanged,scrollH,scrollH,scrollRect,scrollTipFunction,scrollV,scrollV,selectable,selectable,selectable,selectedIndex,selectionActivePosition,selectionAnchorPosition,selectionBeginIndex,selectionBeginIndex,selectionEndIndex,selectionEndIndex,sharpness,sharpness,sharpness,showGripper,showGripper,showInAutomationHierarchy,showScrollTips,showStatusBar,showStatusBar,showTitleBar,showTitleBar,soundTransform,stage,startingIndex,startingIndex,states,states,status,status,status,statusBar,statusBar,statusBarFactory,statusBarFactory,statusBarStyleFilters,statusBarStyleFilters,stretchX,stretchY,styleDeclaration,styleManager,styleName,styleName,styleName,styleParent,styleSheet,styleSheet,stylesFactory,swfBridge,systemChrome,systemChrome,systemChrome,systemManager,systemManager,systemManager,systemManager,systemTrayIconMenu,tabChildren,tabEnabled,tabEnabled,tabFocusEnabled,tabFocusEnabled,tabIndex,tabIndex,text,text,text,text,textColor,textColor,textHeight,textHeight,textSnapshot,textWidth,textWidth,thickness,thickness,thickness,title,title,title,titleBar,titleBar,titleBarFactory,titleBarFactory,titleBarStyleFilters,titleBarStyleFilters,titleIcon,titleIcon,titleIcon,toolTip,toolTip,toolTip,top,top,top,topLevelApplication,transform,transform,transformX,transformX,transformY,transformY,transformZ,transformZ,transitions,transitions,transparent,transparent,transparent,tweeningProperties,tweeningProperties,tweeningProperties,tweeningProperties,type,type,type,type,type,type,uid,uid,unscaledHeight,unscaledWidth,updateCompletePendingFlag,updateCompletePendingFlag,updateCompletePendingFlag,url,useFTE,useHandCursor,useNativeDragManager,usePreloader,useRichTextClipboard,useRichTextClipboard,validationSubField,verifyDigest,verticalCenter,verticalCenter,verticalLineScrollSize,verticalPageScrollSize,verticalScrollBar,verticalScrollBar,verticalScrollPolicy,verticalScrollPolicy,verticalScrollPosition,verticalScrollPosition,verticalScrollPosition,viewMetrics,viewMetrics,viewMetrics,viewMetricsAndPadding,viewSourceURL,visible,visible,visible,visible,visible,width,width,width,wordWrap,wordWrap,x,x,x,y,y,y,z,activate,activate,addChild,addChild,addChild,addChildAt,addChildAt,addChildAt,addChildBridge,addChildBridge,addData,addElement,addElement,addElementAt,addElementAt,addHandler,addLayer,addMXMLChildren,addPreloadedRSL,addStyleClient,addToCreationQueue,adjustFocusRect,allowDomain,allowInsecureDomain,appendText,appendText,applyComputedMatrix,areInaccessibleObjectsUnderPoint,assignFocus,attachOverlay,attachOverlay,callInContext,callLater,callLater,canSkipMeasurement,childrenCreated,clearStyle,clone,close,close,close,commitProperties,contains,contains,containsBridge,containsBridge,contentToGlobal,contentToGlobal,contentToLocal,contentToLocal,create,createAutomationIDPart,createAutomationIDPartWithRequiredProperties,createBorder,createBorder,createChildren,createChildren,createComponentFromDescriptor,createComponentsFromDescriptors,createDeferredContent,createDeferredContent,createInFontContext,createInModuleContext,createReferenceOnParentDocument,createReferenceOnParentDocument,dataForFormat,deleteReferenceOnParentDocument,deleteReferenceOnParentDocument,determineTextFormatFromStyles,dispatchEvent,dispatchPropertyChangeEvent,drawFocus,drawFocus,drawRoundRect,effectFinished,effectStarted,endEffectsStarted,executeBindings,executeBindings,executeBindings,executeChildBindings,executeChildBindings,executeChildBindings,exit,finishPrint,focusInHandler,focusOutHandler,generateMXMLArray,generateMXMLAttributes,generateMXMLInstances,generateMXMLObject,generateMXMLVector,getAutomationChildAt,getAutomationChildren,getBounds,getBoundsXAtSize,getBoundsXAtSize,getBoundsYAtSize,getBoundsYAtSize,getCharBoundaries,getCharBoundaries,getCharIndexAtPoint,getCharIndexAtPoint,getChildAt,getChildAt,getChildAt,getChildBridgeProvider,getChildBridgeProvider,getChildBridges,getChildBridges,getChildByName,getChildByName,getChildByName,getChildIndex,getChildIndex,getChildIndex,getChildren,getClassStyleDeclarations,getConstraintValue,getConstraintValue,getElementAt,getElementAt,getElementIndex,getElementIndex,getExplicitOrMeasuredHeight,getExplicitOrMeasuredHeight,getExplicitOrMeasuredHeight,getExplicitOrMeasuredHeight,getExplicitOrMeasuredWidth,getExplicitOrMeasuredWidth,getExplicitOrMeasuredWidth,getExplicitOrMeasuredWidth,getFirstCharInParagraph,getFirstCharInParagraph,getFocus,getImageReference,getImageReference,getImplementation,getInstance,getInstance,getInstance,getLayerAt,getLayoutBoundsHeight,getLayoutBoundsHeight,getLayoutBoundsWidth,getLayoutBoundsWidth,getLayoutBoundsX,getLayoutBoundsX,getLayoutBoundsY,getLayoutBoundsY,getLayoutMatrix,getLayoutMatrix,getLayoutMatrix3D,getLayoutMatrix3D,getLineIndexAtPoint,getLineIndexAtPoint,getLineIndexOfChar,getLineIndexOfChar,getLineLength,getLineLength,getLineMetrics,getLineMetrics,getLineOffset,getLineOffset,getLineText,getLineText,getMaxBoundsHeight,getMaxBoundsHeight,getMaxBoundsWidth,getMaxBoundsWidth,getMinBoundsHeight,getMinBoundsHeight,getMinBoundsWidth,getMinBoundsWidth,getObjectsUnderPoint,getObjectsUnderPoint,getParagraphLength,getParagraphLength,getPreferredBoundsHeight,getPreferredBoundsHeight,getPreferredBoundsWidth,getPreferredBoundsWidth,getRect,getRepeaterItem,getStyle,getStyle,getStyle,getStyle,getTextFormat,getTextFormat,getTextStyles,getTextStyles,getUITextFormat,getUITextFormat,getUITextFormat,getVisibleApplicationRect,getVisibleRect,getWindow,globalToContent,globalToContent,globalToLocal,hasCSSState,hasFormat,hasState,hasState,hitTestObject,hitTestPoint,horizontalGradientMatrix,info,initAdvancedLayoutFeatures,initializationComplete,initialize,initialize,initialize,initialize,initializeAccessibility,initializeRepeater,initializeRepeater,initializeRepeaterArrays,initializeRepeaterArrays,initialized,initialized,initialized,invalidateDisplayList,invalidateDisplayList,invalidateDisplayList,invalidateDisplayList,invalidateLayering,invalidateLayoutDirection,invalidateLayoutDirection,invalidateLayoutDirection,invalidateLayoutDirection,invalidateParentSizeAndDisplayList,invalidateProperties,invalidateProperties,invalidateProperties,invalidateProperties,invalidateProperties,invalidateSize,invalidateSize,invalidateSize,invalidateSize,isOurFocus,keyDownHandler,keyUpHandler,layoutBackgroundImage,layoutChrome,layoutChrome,localToContent,localToContent,localToGlobal,matchesCSSState,matchesCSSType,maximize,maximize,maximize,measure,measureHTMLText,measureHTMLText,measureText,measureText,minimize,minimize,minimize,mouseWheelHandler,move,move,move,move,move,move,move,move,move,newInstance,newInstance,newInstance,notifyStyleChangeInChildren,open,orderInBackOf,orderInBackOf,orderInFrontOf,orderInFrontOf,orderToBack,orderToBack,orderToFront,orderToFront,owns,owns,owns,owns,parentChanged,parentChanged,parentChanged,parentChanged,prepareToPrint,regenerateStyleCache,registerEffects,registerEffects,registerImplementation,removeAllChildren,removeAllElements,removeAllElements,removeChild,removeChild,removeChild,removeChildAt,removeChildAt,removeChildAt,removeChildBridge,removeChildBridge,removeElement,removeElement,removeElementAt,removeElementAt,removeLayer,removeStyleClient,replaceSelectedText,replaceSelectedText,replaceText,replaceText,replayAutomatableEvent,replayAutomatableEvent,replayAutomatableEvent,reset,reset,reset,resolveAutomationIDPart,resourcesChanged,restore,restore,restore,resumeBackgroundProcessing,roomForScrollBar,scrollChildren,scrollHandler,selectRange,setActualSize,setActualSize,setActualSize,setActualSize,setActualSize,setActualSize,setActualSize,setActualSize,setActualSize,setChildIndex,setChildIndex,setChildIndex,setColor,setColor,setColor,setConstraintValue,setConstraintValue,setCurrentState,setElementIndex,setElementIndex,setFocus,setFocus,setFocus,setFocus,setFocus,setLayoutBoundsPosition,setLayoutBoundsPosition,setLayoutBoundsSize,setLayoutBoundsSize,setLayoutMatrix,setLayoutMatrix,setLayoutMatrix3D,setLayoutMatrix3D,setMXMLDescriptor,setMXMLProperties,setScrollBarProperties,setSelection,setSelection,setStretchXY,setStyle,setStyle,setStyle,setTextFormat,setTextFormat,setVisible,setVisible,setVisible,setVisible,showBorderAndBackground,startDrag,stateChanged,stopDrag,styleChanged,styleChanged,styleChanged,stylesInitialized,suspendBackgroundProcessing,swapChildren,swapChildrenAt,swapElements,swapElements,swapElementsAt,swapElementsAt,toString,toString,toString,toString,toString,toString,toString,toString,toString,transformAround,transformAround,transformPointToParent,truncateToFit,truncateToFit,truncateToFit,updateDisplayList,updateDisplayList,validateDisplayList,validateDisplayList,validateNow,validateNow,validateNow,validateNow,validateNow,validateProperties,validateSize,validationResultHandler,verticalGradientMatrix"><title>mx.core.UIFTETextField</title></head><body><script language="javascript" type="text/javascript" src="../../asdoc.js"></script><script language="javascript" type="text/javascript" src="../../help.js"></script><script language="javascript" type="text/javascript" src="../../cookies.js"></script><script language="javascript" type="text/javascript"><!--
				asdocTitle = 'UIFTETextField - ApacheFlex API Reference';
				var baseRef = '../../';
				window.onload = configPage;
			--></script>
<script type="text/javascript">
			scrollToNameAnchor();
		</script><table class="titleTable" cellpadding="0" cellspacing="0" id="titleTable" style="display:none"><tr><td class="titleTableTitle" align="left">Apache Flex 4.16.1 API Reference </td><td class="titleTableTopNav" align="right"><a href="../../package-summary.html" onclick="loadClassListFrame('../../all-classes.html')">All Packages</a>&nbsp;|&nbsp;<a href="../../class-summary.html" onclick="loadClassListFrame('../../all-classes.html')">All Classes</a>&nbsp;|&nbsp;<a href="../../all-index-A.html" onclick="loadClassListFrame('../../index-list.html')">Index</a>&nbsp;|&nbsp;<a id="framesLink1" href="../../index.html?mx/core/UIFTETextField.html&amp;mx/core/class-list.html">Frames</a><a id="noFramesLink1" style="display:none" href="" onclick="parent.location=document.location"> No Frames </a></td><td class="titleTableLogo" align="right" rowspan="3"><img src="../../images/logo.jpg" class="logoImage" alt="AdobeLogo" title="AdobeLogo"></td></tr><tr class="titleTableRow2"><td class="titleTableSubTitle" id="subTitle" align="left">UIFTETextField</td><td class="titleTableSubNav" id="subNav" align="right"><a href="#propertySummary">Properties</a>&nbsp;| <a href="#methodSummary">Methods</a></td></tr><tr class="titleTableRow3"><td colspan="3">&nbsp;</td></tr></table><script language="javascript" type="text/javascript" xml:space="preserve">
				<!--
				
					if (!isEclipse() || window.name != ECLIPSE_FRAME_NAME) {titleBar_setSubTitle("UIFTETextField"); titleBar_setSubNav(false,true,false,false,false,false,false,false,true,false,false	,false,false,false,false,false);}	
				-->
			</script><div xmlns:fn="http://www.w3.org/2005/xpath-functions" class="MainContent"><table class="classHeaderTable" cellpadding="0" cellspacing="0"><tr><td class="classHeaderTableLabel">Package</td><td><a href="package-detail.html" onclick="javascript:loadClassListFrame('class-list.html')">mx.core</a></td></tr><tr><td class="classHeaderTableLabel">Class</td><td class="classSignature">public  class  UIFTETextField</td></tr><tr><td class="classHeaderTableLabel">Inheritance</td><td class="inheritanceList">UIFTETextField  <img src="../../images/inherit-arrow.gif" title="Inheritance" alt="Inheritance" class="inheritArrow"> <a href="../../mx/core/FTETextField.html">FTETextField</a> <img src="../../images/inherit-arrow.gif" title="Inheritance" alt="Inheritance" class="inheritArrow"> flash.display.Sprite</td></tr><tr><td class="classHeaderTableLabel">Implements</td><td> <a href="../../mx/automation/IAutomationObject.html">IAutomationObject</a>,  <a href="../../mx/core/IIMESupport.html">IIMESupport</a>,  <a href="../../mx/core/IFlexModule.html">IFlexModule</a>,  <a href="../../mx/core/IInvalidating.html">IInvalidating</a>,  <a href="../../mx/styles/ISimpleStyleClient.html">ISimpleStyleClient</a>,  <a href="../../mx/managers/IToolTipManagerClient.html">IToolTipManagerClient</a>,  <a href="../../mx/core/IUITextField.html">IUITextField</a></td></tr><tr><td class="classHeaderTableLabel">Subclasses</td><td> <a href="../../spark/skins/spark/DefaultGridItemRenderer.html">DefaultGridItemRenderer</a>,  <a href="../../mx/controls/advancedDataGridClasses/FTEAdvancedDataGridItemRenderer.html">FTEAdvancedDataGridItemRenderer</a>,  <a href="../../mx/controls/dataGridClasses/FTEDataGridItemRenderer.html">FTEDataGridItemRenderer</a></td></tr></table><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p></p><p></p>
  The UIFTETextField class is an alternative to the UITextField class
  for displaying text in MX components.
   <p>UIFTETextField extends FTETextField in the same way
  that UITextField extends TextField.
  By extending FTETextField, it makes it possible
  for MX components to use the Flash Text Engine.
  Benefits of using FTE over TextField include
  higher-quality typography, bidirectional text, and rotatable text.</p>
               <p>When MX components use FTE, they can use the same
  embedded fonts as Spark components, which always use FTE.
  Otherwise, a font must be embedded with <code>embedAsCFF="false"</code>
  for use by TextField-based components, and with
  <code>embedAsCFF="true"</code> for use by FTE-based components.</p>
               <p>MX components that display text use the <code>textFieldClass</code>
  style to determine whether to create instances
  of UITextField or UIFTETextField.
  They are able to use either class because both classes implement
  the IUITextField interface.</p>
 
               <p>Warning: if UIFTETextField inherits <code>layoutDirection="rtl"</code>, it 
  will modify its own <code>transform.matrix</code> to restore the default
  coordinate system locally.</p>
            <p></p><p><span class="classHeaderTableLabel">See also</span></p><div class="seeAlso"><a href="UITextField.html" target="">mx.core.UITextField</a><br/><a href="FTETextField.html" target="">mx.core.FTETextField</a></div><br/><hr></div><a name="propertySummary"></a><div class="summarySection"><div class="summaryTableTitle">Public Properties</div><div class="showHideLinks"><div id="hideInheritedProperty" class="hideInheritedProperty"><a class="showHideLink" href="#propertySummary" onclick="javascript:setInheritedVisible(false,'Property');"><img class="showHideLinkImage" src="../../images/expanded.gif"> Hide Inherited Public Properties</a></div><div id="showInheritedProperty" class="showInheritedProperty"><a class="showHideLink" href="#propertySummary" onclick="javascript:setInheritedVisible(true,'Property');"><img class="showHideLinkImage" src="../../images/collapsed.gif"> Show Inherited Public Properties</a></div></div><table cellspacing="0" cellpadding="3" class="summaryTable " id="summaryTableProperty"><tr><th>&nbsp;</th><th colspan="2">Property</th><th class="summaryTableOwnerCol">Defined By</th></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#alwaysShowSelection" class="signatureLink">alwaysShowSelection</a> : Boolean<div class="summaryTableDescription">
          This property is not implemented in FTETextField
          because FTETextField does not support selection.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#antiAliasType" class="signatureLink">antiAliasType</a> : String<div class="summaryTableDescription">
          This property has no effect in FTETextField
          because FTE uses a newer font renderer than TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#automationDelegate" class="signatureLink">automationDelegate</a> : Object<div class="summaryTableDescription">
      The delegate object which is handling the automation related functionality.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#automationEnabled" class="signatureLink">automationEnabled</a> : Boolean<div class="summaryTableDescription">[read-only] 
      
      True if this component is enabled for automation, false
      otherwise.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#automationName" class="signatureLink">automationName</a> : String<div class="summaryTableDescription">
      
      Name that can be used as an identifier for this object.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#automationOwner" class="signatureLink">automationOwner</a> : DisplayObjectContainer<div class="summaryTableDescription">[read-only] 
      
      The owner of this component for automation purposes.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#automationParent" class="signatureLink">automationParent</a> : DisplayObjectContainer<div class="summaryTableDescription">[read-only] 
      
      The parent of this component for automation purposes.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#automationValue" class="signatureLink">automationValue</a> : Array<div class="summaryTableDescription">[read-only] 
      
      This value generally corresponds to the rendered appearance of the 
      object and should be usable for correlating the identifier with
      the object as it appears visually within the application.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#automationVisible" class="signatureLink">automationVisible</a> : Boolean<div class="summaryTableDescription">[read-only] 
      
      True if this component is visible for automation, false
      otherwise.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#autoSize" class="signatureLink">autoSize</a> : String<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#background" class="signatureLink">background</a> : Boolean<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#backgroundColor" class="signatureLink">backgroundColor</a> : uint<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#baselinePosition" class="signatureLink">baselinePosition</a> : Number<div class="summaryTableDescription">[read-only] 
      The y-coordinate of the baseline of the first line of text.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#border" class="signatureLink">border</a> : Boolean<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#borderColor" class="signatureLink">borderColor</a> : uint<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#bottomScrollV" class="signatureLink">bottomScrollV</a> : int<div class="summaryTableDescription">[read-only] 
          This property has not been implemented in FTETextField
          because FTETextField does not support scrolling.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#caretIndex" class="signatureLink">caretIndex</a> : int<div class="summaryTableDescription">[read-only] 
          This property has not been implemented in FTETextField
          because FTETextField does not support editing.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#className" class="signatureLink">className</a> : String<div class="summaryTableDescription">[read-only] 
      The name of this instance's class, such as
      "DataGridItemRenderer".</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#condenseWhite" class="signatureLink">condenseWhite</a> : Boolean<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#defaultTextFormat" class="signatureLink">defaultTextFormat</a> : TextFormat<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#direction" class="signatureLink">direction</a> : String<div class="summaryTableDescription">
          The directionality of the text displayed by the FTETextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#displayAsPassword" class="signatureLink">displayAsPassword</a> : Boolean<div class="summaryTableDescription">
          This property has not been implemented in FTETextField
          because FTETextField does not support editing.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#document" class="signatureLink">document</a> : Object<div class="summaryTableDescription">
      A reference to the document object associated with this UITextField object.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#embedFonts" class="signatureLink">embedFonts</a> : Boolean<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#enabled" class="signatureLink">enabled</a> : Boolean<div class="summaryTableDescription">
      A Boolean value that indicates whether the component is enabled.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#enableIME" class="signatureLink">enableIME</a> : Boolean<div class="summaryTableDescription">[read-only] 
      A flag that indicates whether the IME should
      be enabled when the component receives focus.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#explicitHeight" class="signatureLink">explicitHeight</a> : Number<div class="summaryTableDescription">
      Number that specifies the explicit height of the component,
      in pixels, in the component's coordinates.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#explicitMaxHeight" class="signatureLink">explicitMaxHeight</a> : Number<div class="summaryTableDescription">[read-only] 
      Number that specifies the maximum height of the component, 
      in pixels, in the component's coordinates, if the maxHeight property
      is set.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#explicitMaxWidth" class="signatureLink">explicitMaxWidth</a> : Number<div class="summaryTableDescription">[read-only] 
      Number that specifies the maximum width of the component, 
      in pixels, in the component's coordinates, if the maxWidth property
      is set.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#explicitMinHeight" class="signatureLink">explicitMinHeight</a> : Number<div class="summaryTableDescription">[read-only] 
      The minimum recommended height of the component to be considered
      by the parent during layout.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#explicitMinWidth" class="signatureLink">explicitMinWidth</a> : Number<div class="summaryTableDescription">[read-only] 
      The minimum recommended width of the component to be considered
      by the parent during layout.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#explicitWidth" class="signatureLink">explicitWidth</a> : Number<div class="summaryTableDescription">
      Number that specifies the explicit width of the component,
      in pixels, in the component's coordinates.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#focusPane" class="signatureLink">focusPane</a> : Sprite<div class="summaryTableDescription">
      
      A single Sprite object that is shared among components
      and used as an overlay for drawing the focus indicator.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#fontContext" class="signatureLink">fontContext</a> : <a href="../../mx/core/IFlexModuleFactory.html">IFlexModuleFactory</a><div class="summaryTableDescription">
          The IFlexModuleFactory instance that FTETextField
          uses for creating TextLine objects.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#gridFitType" class="signatureLink">gridFitType</a> : String<div class="summaryTableDescription">
          This property has no effect in FTETextField
          because FTE uses a newer font renderer than TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#htmlText" class="signatureLink">htmlText</a> : String<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#ignorePadding" class="signatureLink">ignorePadding</a> : Boolean<div class="summaryTableDescription">
      If true, the paddingLeft and
      paddingRight styles will not add space
      around the text of the component.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#imeMode" class="signatureLink">imeMode</a> : String<div class="summaryTableDescription">
      Specifies the IME (input method editor) mode.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#includeInLayout" class="signatureLink">includeInLayout</a> : Boolean<div class="summaryTableDescription">
      Specifies whether this component is included in the layout of the
      parent container.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#inheritingStyles" class="signatureLink">inheritingStyles</a> : Object<div class="summaryTableDescription">
      The beginning of this UITextField's chain of inheriting styles.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#initialized" class="signatureLink">initialized</a> : Boolean<div class="summaryTableDescription">
      A flag that determines if an object has been through all three phases
      of layout validation (provided that any were required).</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#isPopUp" class="signatureLink">isPopUp</a> : Boolean<div class="summaryTableDescription">
      Set to true by the PopUpManager to indicate
      that component has been popped up.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#length" class="signatureLink">length</a> : int<div class="summaryTableDescription">[read-only] </div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#locale" class="signatureLink">locale</a> : String<div class="summaryTableDescription">
          The locale of the text displayed by FTETextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#maxChars" class="signatureLink">maxChars</a> : int<div class="summaryTableDescription">
          This property has not been implemented in FTETextField
          because FTETextField does not support editing.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#maxHeight" class="signatureLink">maxHeight</a> : Number<div class="summaryTableDescription">[read-only] 
      The maximum recommended height of the component to be considered
      by the parent during layout.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#maxScrollH" class="signatureLink">maxScrollH</a> : int<div class="summaryTableDescription">[read-only] 
          This property has not been implemented in FTETextField
          because FTETextField does not support scrolling.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#maxScrollV" class="signatureLink">maxScrollV</a> : int<div class="summaryTableDescription">[read-only] 
          This property has not been implemented in FTETextField
          because FTETextField does not support scrolling.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#maxWidth" class="signatureLink">maxWidth</a> : Number<div class="summaryTableDescription">[read-only] 
      The maximum recommended width of the component to be considered
      by the parent during layout.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#measuredHeight" class="signatureLink">measuredHeight</a> : Number<div class="summaryTableDescription">[read-only] 
      The default height of the component, in pixels.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#measuredMinHeight" class="signatureLink">measuredMinHeight</a> : Number<div class="summaryTableDescription">
      The default minimum height of the component, in pixels.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#measuredMinWidth" class="signatureLink">measuredMinWidth</a> : Number<div class="summaryTableDescription">
      The default minimum width of the component, in pixels.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#measuredWidth" class="signatureLink">measuredWidth</a> : Number<div class="summaryTableDescription">[read-only] 
      The default width of the component, in pixels.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#minHeight" class="signatureLink">minHeight</a> : Number<div class="summaryTableDescription">[read-only] 
      The minimum recommended height of the component to be considered
      by the parent during layout.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#minWidth" class="signatureLink">minWidth</a> : Number<div class="summaryTableDescription">[read-only] 
      The minimum recommended width of the component to be considered
      by the parent during layout.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#moduleFactory" class="signatureLink">moduleFactory</a> : <a href="../../mx/core/IFlexModuleFactory.html">IFlexModuleFactory</a><div class="summaryTableDescription">
      The moduleFactory that is used to create TextFields in the correct SWF context.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#mouseWheelEnabled" class="signatureLink">mouseWheelEnabled</a> : Boolean<div class="summaryTableDescription">
          This property has not been implemented in FTETextField
          because FTETextField does not support scrolling.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#multiline" class="signatureLink">multiline</a> : Boolean<div class="summaryTableDescription">
          This property has no effect in FTETextField
          because FTETextField does not support editing.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#nestLevel" class="signatureLink">nestLevel</a> : int<div class="summaryTableDescription">
      Depth of this object in the containment hierarchy.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#nonInheritingStyles" class="signatureLink">nonInheritingStyles</a> : Object<div class="summaryTableDescription">
      The beginning of this UITextField's chain of non-inheriting styles.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#nonZeroTextHeight" class="signatureLink">nonZeroTextHeight</a> : Number<div class="summaryTableDescription">[read-only] 
      The height of the text, in pixels.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#numLines" class="signatureLink">numLines</a> : int<div class="summaryTableDescription">[read-only] </div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#owner" class="signatureLink">owner</a> : DisplayObjectContainer<div class="summaryTableDescription">
      By default, set to the parent container of this object.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#parent" class="signatureLink">parent</a> : DisplayObjectContainer<div class="summaryTableDescription">[override] [read-only] 
      The parent container or component for this component.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#percentHeight" class="signatureLink">percentHeight</a> : Number<div class="summaryTableDescription">
      Specifies the height of a component as a percentage
      of its parent's size.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#percentWidth" class="signatureLink">percentWidth</a> : Number<div class="summaryTableDescription">
      Specifies the width of a component as a percentage
      of its parent's size.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#processedDescriptors" class="signatureLink">processedDescriptors</a> : Boolean<div class="summaryTableDescription">
      Set to true after the createChildren()
      method creates any internal component children.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#restrict" class="signatureLink">restrict</a> : String<div class="summaryTableDescription">
          This property has not been implemented in FTETextField
          because FTETextField does not support scrolling.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#scrollH" class="signatureLink">scrollH</a> : int<div class="summaryTableDescription">
          This property has not been implemented in FTETextField
          because FTETextField does not support scrolling.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#scrollV" class="signatureLink">scrollV</a> : int<div class="summaryTableDescription">
          This property has not been implemented in FTETextField
          because FTETextField does not support scrolling.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#selectable" class="signatureLink">selectable</a> : Boolean<div class="summaryTableDescription">
          Setting this property has no effect in FTETextField
          because FTETextField does not support selection.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#selectionBeginIndex" class="signatureLink">selectionBeginIndex</a> : int<div class="summaryTableDescription">[read-only] 
          This property has not been implemented in FTETextField
          because FTETextField does not support selection.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#selectionEndIndex" class="signatureLink">selectionEndIndex</a> : int<div class="summaryTableDescription">[read-only] 
          This property has not been implemented in FTETextField
          because FTETextField does not support selection.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#sharpness" class="signatureLink">sharpness</a> : Number<div class="summaryTableDescription">
          This property has no effect in FTETextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#styleName" class="signatureLink">styleName</a> : Object<div class="summaryTableDescription">
      The class style used by this component.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#styleSheet" class="signatureLink">styleSheet</a> : StyleSheet<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#systemManager" class="signatureLink">systemManager</a> : <a href="../../mx/managers/ISystemManager.html">ISystemManager</a><div class="summaryTableDescription">
      Returns the SystemManager object used by this component.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#text" class="signatureLink">text</a> : String<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#textColor" class="signatureLink">textColor</a> : uint<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#textHeight" class="signatureLink">textHeight</a> : Number<div class="summaryTableDescription">[read-only] </div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#textWidth" class="signatureLink">textWidth</a> : Number<div class="summaryTableDescription">[read-only] </div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#thickness" class="signatureLink">thickness</a> : Number<div class="summaryTableDescription">
          This property has no effect in FTETextField
          because FTE uses a newer font renderer than TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#toolTip" class="signatureLink">toolTip</a> : String<div class="summaryTableDescription">
      Text to display in the ToolTip.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#tweeningProperties" class="signatureLink">tweeningProperties</a> : Array<div class="summaryTableDescription">
      Array of properties that are currently being tweened on this object.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#type" class="signatureLink">type</a> : String<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a href="#updateCompletePendingFlag" class="signatureLink">updateCompletePendingFlag</a> : Boolean<div class="summaryTableDescription">
      A flag that determines if an object has been through all three phases
      of layout validation (provided that any were required)
      
      </div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#useRichTextClipboard" class="signatureLink">useRichTextClipboard</a> : Boolean<div class="summaryTableDescription">
          This property is not implemented in FTETextField
          because FTETextField does not support selection
          or clipboard operations.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedProperty"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><a href="../../mx/core/FTETextField.html#wordWrap" class="signatureLink">wordWrap</a> : Boolean<div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr></table></div><a name="methodSummary"></a><div class="summarySection"><div class="summaryTableTitle">Public Methods </div><div class="showHideLinks"><div id="hideInheritedMethod" class="hideInheritedMethod"><a class="showHideLink" href="#methodSummary" onclick="javascript:setInheritedVisible(false,'Method');"><img class="showHideLinkImage" src="../../images/expanded.gif"> Hide Inherited Public Methods</a></div><div id="showInheritedMethod" class="showInheritedMethod"><a class="showHideLink" href="#methodSummary" onclick="javascript:setInheritedVisible(true,'Method');"><img class="showHideLinkImage" src="../../images/collapsed.gif"> Show Inherited Public Methods</a></div></div><table cellspacing="0" cellpadding="3" class="summaryTable " id="summaryTableMethod"><tr><th>&nbsp;</th><th colspan="2">Method</th><th class="summaryTableOwnerCol">Defined By</th></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#UIFTETextField()" class="signatureLink">UIFTETextField</a>()</div><div class="summaryTableDescription">
      Constructor.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#appendText()" class="signatureLink">appendText</a>(newText:String):void</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getCharBoundaries()" class="signatureLink">getCharBoundaries</a>(charIndex:int):Rectangle</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getCharIndexAtPoint()" class="signatureLink">getCharIndexAtPoint</a>(x:Number, y:Number):int</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#getExplicitOrMeasuredHeight()" class="signatureLink">getExplicitOrMeasuredHeight</a>():Number</div><div class="summaryTableDescription">
      A convenience method for determining whether to use the
      explicit or measured height
           </div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#getExplicitOrMeasuredWidth()" class="signatureLink">getExplicitOrMeasuredWidth</a>():Number</div><div class="summaryTableDescription">
      A convenience method for determining whether to use the
      explicit or measured width
           </div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getFirstCharInParagraph()" class="signatureLink">getFirstCharInParagraph</a>(charIndex:int):int</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getImageReference()" class="signatureLink">getImageReference</a>(id:String):DisplayObject</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getLineIndexAtPoint()" class="signatureLink">getLineIndexAtPoint</a>(x:Number, y:Number):int</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getLineIndexOfChar()" class="signatureLink">getLineIndexOfChar</a>(charIndex:int):int</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getLineLength()" class="signatureLink">getLineLength</a>(lineIndex:int):int</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getLineMetrics()" class="signatureLink">getLineMetrics</a>(lineIndex:int):TextLineMetrics</div><div class="summaryTableDescription"></div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getLineOffset()" class="signatureLink">getLineOffset</a>(lineIndex:int):int</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getLineText()" class="signatureLink">getLineText</a>(lineIndex:int):String</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getParagraphLength()" class="signatureLink">getParagraphLength</a>(charIndex:int):int</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#getStyle()" class="signatureLink">getStyle</a>(styleProp:String):*</div><div class="summaryTableDescription">
      Gets a style property that has been set anywhere in this
      component's style lookup chain.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#getTextFormat()" class="signatureLink">getTextFormat</a>(beginIndex:int = -1, endIndex:int = -1):TextFormat</div><div class="summaryTableDescription">
          This method has been implemented in FTETextField
          to simply return a copy of the defaultTextFormat,
          because FTETextField does not support formatting a range.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#getTextStyles()" class="signatureLink">getTextStyles</a>():TextFormat</div><div class="summaryTableDescription">
      Returns the TextFormat object that represents 
      character formatting information for this UITextField object.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#getUITextFormat()" class="signatureLink">getUITextFormat</a>():<a href="../../mx/core/UITextFormat.html">UITextFormat</a></div><div class="summaryTableDescription">
      Returns a UITextFormat object that contains formatting information for this component.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#initialize()" class="signatureLink">initialize</a>():void</div><div class="summaryTableDescription">
      Initializes this component.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#invalidateDisplayList()" class="signatureLink">invalidateDisplayList</a>():void</div><div class="summaryTableDescription">
      Marks a component so that its updateDisplayList()
      method gets called during a later screen update.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#invalidateProperties()" class="signatureLink">invalidateProperties</a>():void</div><div class="summaryTableDescription">
      Marks a component so that its commitProperties()
      method gets called during a later screen update.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#invalidateSize()" class="signatureLink">invalidateSize</a>():void</div><div class="summaryTableDescription">
      Marks a component so that its measure()
      method gets called during a later screen update.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#move()" class="signatureLink">move</a>(x:Number, y:Number):void</div><div class="summaryTableDescription">
       Moves the component to a specified position within its parent.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#owns()" class="signatureLink">owns</a>(child:DisplayObject):Boolean</div><div class="summaryTableDescription">
      Returns true if the child is parented or owned by this object.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#parentChanged()" class="signatureLink">parentChanged</a>(p:DisplayObjectContainer):void</div><div class="summaryTableDescription">
      This function is called when a UITextField object is assigned
      a parent.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#replaceSelectedText()" class="signatureLink">replaceSelectedText</a>(value:String):void</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#replaceText()" class="signatureLink">replaceText</a>(beginIndex:int, endIndex:int, newText:String):void</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because very few components use it in TextField.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#replayAutomatableEvent()" class="signatureLink">replayAutomatableEvent</a>(event:Event):Boolean</div><div class="summaryTableDescription">
      
      Replays the specified event.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#setActualSize()" class="signatureLink">setActualSize</a>(w:Number, h:Number):void</div><div class="summaryTableDescription">
      Sizes the object.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#setColor()" class="signatureLink">setColor</a>(color:uint):void</div><div class="summaryTableDescription">
      Sets the font color of the text.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#setFocus()" class="signatureLink">setFocus</a>():void</div><div class="summaryTableDescription">
      Sets the focus to this component.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#setSelection()" class="signatureLink">setSelection</a>(beginIndex:int, endIndex:int):void</div><div class="summaryTableDescription">
          This method has not been implemented in FTETextField
          because FTETextField does not support selection.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#setStyle()" class="signatureLink">setStyle</a>(styleProp:String, value:*):void</div><div class="summaryTableDescription">
      Does nothing.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class="hideInheritedMethod"><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol"><img src="../../images/inheritedSummary.gif" alt="Inherited" title="Inherited" class="inheritedSummaryImage"></td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="../../mx/core/FTETextField.html#setTextFormat()" class="signatureLink">setTextFormat</a>(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void</div><div class="summaryTableDescription">
          This method has no effect on a FTETextField if beginIndex
          or endIndex does not equal -1
          because FTETextField does not support formatting a range.</div></td><td class="summaryTableOwnerCol"><a href="../../mx/core/FTETextField.html">FTETextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#setVisible()" class="signatureLink">setVisible</a>(visible:Boolean, noEvent:Boolean = false):void</div><div class="summaryTableDescription">
      Sets the visible property of this UITextField object.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#styleChanged()" class="signatureLink">styleChanged</a>(styleProp:String):void</div><div class="summaryTableDescription">
      Detects changes to style properties.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#truncateToFit()" class="signatureLink">truncateToFit</a>(truncationIndicator:String = null):Boolean</div><div class="summaryTableDescription">
      Truncate text to make it fit horizontally in the area defined for the control, 
      and append an ellipsis, three periods (...), to the text.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><a href="#validateNow()" class="signatureLink">validateNow</a>():void</div><div class="summaryTableDescription">
      Validate and update the properties and layout of this object
      and redraw it, if necessary.</div></td><td class="summaryTableOwnerCol">UIFTETextField</td></tr></table></div><script language="javascript" type="text/javascript"><!--
										showHideInherited();
										--></script><div class="MainContent"><div class="detailSectionHeader">Property Detail</div><a name="propertyDetail"></a><a name="automationDelegate"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">automationDelegate</td><td class="detailHeaderType">property</td></tr></table><div class="detailBody"><code>automationDelegate:Object</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The delegate object which is handling the automation related functionality.
     
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get automationDelegate():Object</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set automationDelegate(value:Object):void</code><br/></div><a name="propertyDetail"></a><a name="automationEnabled"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">automationEnabled</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>automationEnabled:Boolean</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
      
      True if this component is enabled for automation, false
      otherwise.
     
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get automationEnabled():Boolean</code><br/></div><a name="propertyDetail"></a><a name="automationName"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">automationName</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>automationName:String</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      
      Name that can be used as an identifier for this object.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get automationName():String</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set automationName(value:String):void</code><br/></div><a name="propertyDetail"></a><a name="automationOwner"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">automationOwner</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>automationOwner:DisplayObjectContainer</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
      
      The owner of this component for automation purposes.
     
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get automationOwner():DisplayObjectContainer</code><br/></div><a name="propertyDetail"></a><a name="automationParent"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">automationParent</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>automationParent:DisplayObjectContainer</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
      
      The parent of this component for automation purposes.
     
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get automationParent():DisplayObjectContainer</code><br/></div><a name="propertyDetail"></a><a name="automationValue"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">automationValue</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>automationValue:Array</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      
      This value generally corresponds to the rendered appearance of the 
      object and should be usable for correlating the identifier with
      the object as it appears visually within the application.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get automationValue():Array</code><br/></div><a name="propertyDetail"></a><a name="automationVisible"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">automationVisible</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>automationVisible:Boolean</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  9, AIR 1.1</td></tr></table><p></p><p></p><p>
      
      True if this component is visible for automation, false
      otherwise.
     
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get automationVisible():Boolean</code><br/></div><a name="propertyDetail"></a><a name="baselinePosition"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">baselinePosition</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>baselinePosition:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The y-coordinate of the baseline of the first line of text.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get baselinePosition():Number</code><br/></div><a name="propertyDetail"></a><a name="className"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">className</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>className:String</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The name of this instance's class, such as
      <code>"DataGridItemRenderer"</code>.
           <p>This string does not include the package name.
      If you need the package name as well, call the
      <code>getQualifiedClassName()</code> method in the flash.utils package.
      It will return a string such as
      <code>"mx.controls.dataGridClasses::DataGridItemRenderer"</code>.</p>
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get className():String</code><br/></div><a name="propertyDetail"></a><a name="document"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">document</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>document:Object</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      A reference to the document object associated with this UITextField object. 
      A document object is an Object at the top of the hierarchy of an application, 
      MXML component, or ActionScript component.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get document():Object</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set document(value:Object):void</code><br/></div><a name="propertyDetail"></a><a name="enabled"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">enabled</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>enabled:Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      A Boolean value that indicates whether the component is enabled. 
      This property only affects
      the color of the text and not whether the UITextField is editable.
      To control editability, use the 
      <code>flash.text.TextField.type</code> property.
      
      </p><p> The default value is <code>true</code>.</p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get enabled():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set enabled(value:Boolean):void</code><br/><p><span class="label">See also</span></p><div class="seeAlso">flash.text.TextField</div></div><a name="propertyDetail"></a><a name="enableIME"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">enableIME</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>enableIME:Boolean</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      A flag that indicates whether the IME should
      be enabled when the component receives focus.
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get enableIME():Boolean</code><br/></div><a name="propertyDetail"></a><a name="explicitHeight"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">explicitHeight</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>explicitHeight:Number</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Number that specifies the explicit height of the component,
      in pixels, in the component's coordinates.
           <p>This value is used by the container in calculating
      the size and position of the component.
      It is not used by the component itself in determining
      its default size.
      Thus this property may not have any effect if parented by
      Container, or containers that don't factor in
      this property.
      Because the value is in component coordinates,
      the true <code>explicitHeight</code> with respect to its parent
      is affected by the <code>scaleY</code> property.</p>
      <p>Setting the <code>height</code> property also sets this property to
      the specified height value.</p>
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get explicitHeight():Number</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set explicitHeight(value:Number):void</code><br/></div><a name="propertyDetail"></a><a name="explicitMaxHeight"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">explicitMaxHeight</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>explicitMaxHeight:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Number that specifies the maximum height of the component, 
      in pixels, in the component's coordinates, if the maxHeight property
      is set. Because maxHeight is read-only, this method returns NaN. 
      You must override this method and add a setter to use this
      property.
      
      </p><p> The default value is <code>NaN</code>.</p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get explicitMaxHeight():Number</code><br/><p><span class="label">See also</span></p><div class="seeAlso"><a href="UIComponent.html#explicitMaxHeight" target="">mx.core.UIComponent.explicitMaxHeight</a></div></div><a name="propertyDetail"></a><a name="explicitMaxWidth"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">explicitMaxWidth</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>explicitMaxWidth:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Number that specifies the maximum width of the component, 
      in pixels, in the component's coordinates, if the <code>maxWidth</code> property
      is set. Because the <code>maxWidth</code> property is read-only, this method returns <code>NaN</code>. 
      You must override this method and add a setter to use this
      property.
      
      </p><p> The default value is <code>NaN</code>.</p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get explicitMaxWidth():Number</code><br/><p><span class="label">See also</span></p><div class="seeAlso"><a href="UIComponent.html#explicitMaxWidth" target="">mx.core.UIComponent.explicitMaxWidth</a></div></div><a name="propertyDetail"></a><a name="explicitMinHeight"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">explicitMinHeight</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>explicitMinHeight:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The minimum recommended height of the component to be considered
      by the parent during layout. This value is in the
      component's coordinates, in pixels.
           <p>Application developers typically do not set the explicitMinHeight property. Instead, they
      set the value of the minHeight property, which sets the explicitMinHeight property. The
      value of minHeight does not change.</p>
           <p>At layout time, if minHeight was explicitly set by the application developer, then
      the value of explicitMinHeight is used. Otherwise, the value of measuredMinHeight
      is used.</p>
           <p>This value is used by the container in calculating
      the size and position of the component.
      It is not used by the component itself in determining
      its default size.
      Thus this property may not have any effect if parented by
      Container, or containers that don't factor in
      this property.
      Because the value is in component coordinates,
      the true <code>minHeight</code> with respect to its parent
      is affected by the <code>scaleY</code> property.</p>
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get explicitMinHeight():Number</code><br/></div><a name="propertyDetail"></a><a name="explicitMinWidth"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">explicitMinWidth</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>explicitMinWidth:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The minimum recommended width of the component to be considered
      by the parent during layout. This value is in the
      component's coordinates, in pixels.
           <p>Application developers typically do not set the explicitMinWidth property. Instead, they
      set the value of the minWidth property, which sets the explicitMinWidth property. The
      value of minWidth does not change.</p>
           <p>At layout time, if minWidth was explicitly set by the application developer, then
      the value of explicitMinWidth is used. Otherwise, the value of measuredMinWidth
      is used.</p>
           <p>This value is used by the container in calculating
      the size and position of the component.
      It is not used by the component itself in determining
      its default size.
      Thus this property may not have any effect if parented by
      Container, or containers that don't factor in
      this property.
      Because the value is in component coordinates,
      the true <code>minWidth</code> with respect to its parent
      is affected by the <code>scaleX</code> property.</p>
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get explicitMinWidth():Number</code><br/></div><a name="propertyDetail"></a><a name="explicitWidth"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">explicitWidth</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>explicitWidth:Number</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Number that specifies the explicit width of the component,
      in pixels, in the component's coordinates.
           <p>This value is used by the container in calculating
      the size and position of the component.
      It is not used by the component itself in determining
      its default size.
      Thus this property may not have any effect if parented by
      Container, or containers that don't factor in
      this property.
      Because the value is in component coordinates,
      the true <code>explicitWidth</code> with respect to its parent
      is affected by the <code>scaleX</code> property.</p>
      <p>Setting the <code>width</code> property also sets this property to
      the specified width value.</p>
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get explicitWidth():Number</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set explicitWidth(value:Number):void</code><br/></div><a name="propertyDetail"></a><a name="focusPane"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">focusPane</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>focusPane:Sprite</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      
      A single Sprite object that is shared among components
      and used as an overlay for drawing the focus indicator.
      Components share this object if their parent is a focused component,
      not if the component implements the IFocusManagerComponent interface.
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get focusPane():Sprite</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set focusPane(value:Sprite):void</code><br/></div><a name="propertyDetail"></a><a name="ignorePadding"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">ignorePadding</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>ignorePadding:Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      If <code>true</code>, the <code>paddingLeft</code> and
      <code>paddingRight</code> styles will not add space
      around the text of the component.
      
      </p><p> The default value is <code>true</code>.</p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get ignorePadding():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set ignorePadding(value:Boolean):void</code><br/></div><a name="propertyDetail"></a><a name="imeMode"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">imeMode</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>imeMode:String</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Specifies the IME (input method editor) mode.
      The IME enables users to enter text in Chinese, Japanese, and Korean.
      Flex sets the specified IME mode when the control gets the focus,
      and sets it back to the previous value when the control loses the focus.
          <p>The flash.system.IMEConversionMode class defines constants for the
      valid values for this property.
      You can also specify <code>null</code> to specify no IME.</p>
           </p><p> The default value is <code>null</code>.</p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get imeMode():String</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set imeMode(value:String):void</code><br/><p><span class="label">See also</span></p><div class="seeAlso">flash.system.IMEConversionMode</div></div><a name="propertyDetail"></a><a name="includeInLayout"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">includeInLayout</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>includeInLayout:Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      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.
     
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get includeInLayout():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set includeInLayout(value:Boolean):void</code><br/></div><a name="propertyDetail"></a><a name="inheritingStyles"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">inheritingStyles</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>inheritingStyles:Object</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The beginning of this UITextField's chain of inheriting styles.
      The <code>getStyle()</code> method accesses
      <code>inheritingStyles[<i>styleName</i>]</code> to search the entire
      prototype-linked chain.
      This object is set up by the <code>initProtoChain()</code> method.
      You typically never need to access this property directly.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get inheritingStyles():Object</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set inheritingStyles(value:Object):void</code><br/></div><a name="propertyDetail"></a><a name="initialized"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">initialized</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>initialized:Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      A flag that determines if an object has been through all three phases
      of layout validation (provided that any were required).
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get initialized():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set initialized(value:Boolean):void</code><br/></div><a name="propertyDetail"></a><a name="isPopUp"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">isPopUp</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>isPopUp:Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Set to <code>true</code> by the PopUpManager to indicate
      that component has been popped up.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get isPopUp():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set isPopUp(value:Boolean):void</code><br/></div><a name="propertyDetail"></a><a name="maxHeight"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">maxHeight</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>maxHeight:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The maximum recommended height of the component to be considered
      by the parent during layout. This value is in the
      component's coordinates, in pixels. The default value of this property is
      set by the component developer.
           <p>The component developer uses this property to set an upper limit on the
      height of the component.</p>
           <p>If the application developer overrides the default value of maxHeight,
      the new value is stored in explicitMaxHeight. The default value of maxHeight
      does not change. As a result, at layout time, if
      maxHeight was explicitly set by the application developer, then the value of
      explicitMaxHeight is used for the component's maximum recommended height.
      If maxHeight is not set explicitly by the user, then the default value is used.</p>
           <p>This value is used by the container in calculating
      the size and position of the component.
      It is not used by the component itself in determining
      its default size.
     
      Thus this property may not have any effect if parented by
      Container, or containers that don't factor in
      this property.
      Because the value is in component coordinates,
      the true <code>maxHeight</code> with respect to its parent
      is affected by the <code>scaleY</code> property.
      Some components have no theoretical limit to their height.
      In those cases their <code>maxHeight</code> is set to
      <code>UIComponent.DEFAULT_MAX_HEIGHT</code>.</p>
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get maxHeight():Number</code><br/></div><a name="propertyDetail"></a><a name="maxWidth"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">maxWidth</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>maxWidth:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The maximum recommended width of the component to be considered
      by the parent during layout. This value is in the
      component's coordinates, in pixels. The default value of this property is
      set by the component developer.
           <p>The component developer uses this property to set an upper limit on the
      width of the component.</p>
           <p>If the application developer overrides the default value of maxWidth,
      the new value is stored in explicitMaxWidth. The default value of maxWidth
      does not change. As a result, at layout time, if
      maxWidth was explicitly set by the application developer, then the value of
      explicitMaxWidth is used for the component's maximum recommended width.
      If maxWidth is not set explicitly by the user, then the default value is used.</p>
           <p>This value is used by the container in calculating
      the size and position of the component.
      It is not used by the component itself in determining
      its default size.
      Thus this property may not have any effect if parented by
      Container, or containers that don't factor in
      this property.
      Because the value is in component coordinates,
      the true <code>maxWidth</code> with respect to its parent
      is affected by the <code>scaleX</code> property.
      Some components have no theoretical limit to their width.
      In those cases their <code>maxWidth</code> is set to
      <code>UIComponent.DEFAULT_MAX_WIDTH</code>.</p>
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get maxWidth():Number</code><br/></div><a name="propertyDetail"></a><a name="measuredHeight"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">measuredHeight</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>measuredHeight:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The default height of the component, in pixels.
      This value is set by the <code>measure()</code> method.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get measuredHeight():Number</code><br/></div><a name="propertyDetail"></a><a name="measuredMinHeight"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">measuredMinHeight</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>measuredMinHeight:Number</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The default minimum height of the component, in pixels.
      This value is set by the <code>measure()</code> method.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get measuredMinHeight():Number</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set measuredMinHeight(value:Number):void</code><br/></div><a name="propertyDetail"></a><a name="measuredMinWidth"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">measuredMinWidth</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>measuredMinWidth:Number</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The default minimum width of the component, in pixels.
      This value is set by the <code>measure()</code> method.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get measuredMinWidth():Number</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set measuredMinWidth(value:Number):void</code><br/></div><a name="propertyDetail"></a><a name="measuredWidth"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">measuredWidth</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>measuredWidth:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The default width of the component, in pixels.
      This value is set by the <code>measure()</code> method.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get measuredWidth():Number</code><br/></div><a name="propertyDetail"></a><a name="minHeight"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">minHeight</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>minHeight:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The minimum recommended height of the component to be considered
      by the parent during layout. This value is in the
      component's coordinates, in pixels. The default value depends on
      the component's implementation.
           <p>If the application developer sets the value of minHeight,
      the new value is stored in explicitMinHeight. The default value of minHeight
      does not change. As a result, at layout time, if
      minHeight was explicitly set by the application developer, then the value of
      explicitMinHeight is used for the component's minimum recommended height.
      If minHeight is not set explicitly by the application developer, then the value of
      measuredMinHeight is used.</p>
           <p>This value is used by the container in calculating
      the size and position of the component.
      It is not used by the component itself in determining
      its default size.
      Thus this property may not have any effect if parented by
      Container, or containers that don't factor in
      this property.
      Because the value is in component coordinates,
      the true <code>minHeight</code> with respect to its parent
      is affected by the <code>scaleY</code> property.</p>
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get minHeight():Number</code><br/></div><a name="propertyDetail"></a><a name="minWidth"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">minWidth</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>minWidth:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The minimum recommended width of the component to be considered
      by the parent during layout. This value is in the
      component's coordinates, in pixels. The default value depends on
      the component's implementation.
           <p>If the application developer sets the value of minWidth,
      the new value is stored in explicitMinWidth. The default value of minWidth
      does not change. As a result, at layout time, if
      minWidth was explicitly set by the application developer, then the value of
      explicitMinWidth is used for the component's minimum recommended width.
      If minWidth is not set explicitly by the application developer, then the value of
      measuredMinWidth is used.</p>
           <p>This value is used by the container in calculating
      the size and position of the component.
      It is not used by the component itself in determining
      its default size.
      Thus this property may not have any effect if parented by
      Container, or containers that don't factor in
      this property.
      Because the value is in component coordinates,
      the true <code>minWidth</code> with respect to its parent
      is affected by the <code>scaleX</code> property.</p>
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get minWidth():Number</code><br/></div><a name="propertyDetail"></a><a name="moduleFactory"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">moduleFactory</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>moduleFactory:<a href="../../mx/core/IFlexModuleFactory.html">IFlexModuleFactory</a></code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The moduleFactory that is used to create TextFields in the correct SWF context. This is necessary so that
      embedded fonts will work.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get moduleFactory():<a href="../../mx/core/IFlexModuleFactory.html">IFlexModuleFactory</a></code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set moduleFactory(value:<a href="../../mx/core/IFlexModuleFactory.html">IFlexModuleFactory</a>):void</code><br/></div><a name="propertyDetail"></a><a name="nestLevel"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">nestLevel</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>nestLevel:int</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Depth of this object in the containment hierarchy.
      This number is used by the measurement and layout code.
      The value is 0 if this component is not on the DisplayList.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get nestLevel():int</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set nestLevel(value:int):void</code><br/></div><a name="propertyDetail"></a><a name="nonInheritingStyles"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">nonInheritingStyles</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>nonInheritingStyles:Object</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The beginning of this UITextField's chain of non-inheriting styles.
      The <code>getStyle()</code> method accesses
      <code>nonInheritingStyles[styleName]</code> method to search the entire
      prototype-linked chain.
      This object is set up by the <code>initProtoChain()</code> method.
      You typically never need to access this property directly.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get nonInheritingStyles():Object</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set nonInheritingStyles(value:Object):void</code><br/></div><a name="propertyDetail"></a><a name="nonZeroTextHeight"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">nonZeroTextHeight</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>nonZeroTextHeight:Number</code>&nbsp;&nbsp;[read-only] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The height of the text, in pixels. Unlike the <code>textHeight</code> property,
      the <code>nonZeroTextHeight</code> property returns a non-zero value of what the 
      height of the text would be, even if the text is empty.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get nonZeroTextHeight():Number</code><br/></div><a name="propertyDetail"></a><a name="owner"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">owner</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>owner:DisplayObjectContainer</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      By default, set to the parent container of this object. 
      However, if this object is a child component that is 
      popped up by its parent, such as the dropdown list of a ComboBox control, 
      the owner is the component that popped up this object. 
           <p>This property is not managed by Flex, but by each component. 
      Therefore, if you use the <code>PopUpManger.createPopUp()</code> or 
      <code>PopUpManger.addPopUp()</code> method to pop up a child component, 
      you should set the <code>owner</code> property of the child component 
      to the component that popped it up.</p>
     
      <p>The default value is the value of the <code>parent</code> property.</p>
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get owner():DisplayObjectContainer</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set owner(value:DisplayObjectContainer):void</code><br/></div><a name="propertyDetail"></a><a name="parent"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">parent</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>parent:DisplayObjectContainer</code>&nbsp;&nbsp;[read-only] [override] <p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The parent container or component for this component.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get parent():DisplayObjectContainer</code><br/></div><a name="propertyDetail"></a><a name="percentHeight"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">percentHeight</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>percentHeight:Number</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Specifies the height of a component as a percentage
      of its parent's size. Allowed values are 0-100. The default value is NaN.
      Setting the <code>height</code> or <code>explicitHeight</code> properties
      resets this property to NaN.
           <p>This property returns a numeric value only if the property was
      previously set; it does not reflect the exact size of the component
      in percent.</p>
           <p>This property is always set to NaN for the UITextField control.</p>
      
      <p>When used with Spark layouts, this property is used to calculate the
      height of the component's bounds after scaling and rotation. For example 
      if the component is rotated at 90 degrees, then specifying 
      <code>percentHeight</code> will affect the component's width.</p>
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get percentHeight():Number</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set percentHeight(value:Number):void</code><br/></div><a name="propertyDetail"></a><a name="percentWidth"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">percentWidth</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>percentWidth:Number</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Specifies the width of a component as a percentage
      of its parent's size. Allowed values are 0-100. The default value is NaN.
      Setting the <code>width</code> or <code>explicitWidth</code> properties
      resets this property to NaN.
           <p>This property returns a numeric value only if the property was
      previously set; it does not reflect the exact size of the component
      in percent.</p>
           <p>This property is always set to NaN for the UITextField control.</p>
     
      <p>When used with Spark layouts, this property is used to calculate the
      width of the component's bounds after scaling and rotation. For example 
      if the component is rotated at 90 degrees, then specifying 
      <code>percentWidth</code> will affect the component's height.</p>
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get percentWidth():Number</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set percentWidth(value:Number):void</code><br/></div><a name="propertyDetail"></a><a name="processedDescriptors"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">processedDescriptors</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>processedDescriptors:Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Set to <code>true</code> after the <code>createChildren()</code>
      method creates any internal component children.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get processedDescriptors():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set processedDescriptors(value:Boolean):void</code><br/></div><a name="propertyDetail"></a><a name="styleName"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">styleName</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>styleName:Object</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      The class style used by this component. This can be a String, CSSStyleDeclaration
      or an IStyleClient.
           <p>If this is a String, it is the name of one or more whitespace delimited class
      declarations in an <code>&lt;fx:Style&gt;</code> tag or CSS file. You do not include the period
      in the <code>styleName</code>. For example, if you have a class style named <code>".bigText"</code>,
      set the <code>styleName</code> property to <code>"bigText"</code> (no period).</p>
           <p>If this is an IStyleClient (typically a UIComponent), all styles in the
      <code>styleName</code> object are used by this component.</p>
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get styleName():Object</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set styleName(value:Object):void</code><br/></div><a name="propertyDetail"></a><a name="systemManager"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">systemManager</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>systemManager:<a href="../../mx/managers/ISystemManager.html">ISystemManager</a></code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Returns the SystemManager object used by this component.
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get systemManager():<a href="../../mx/managers/ISystemManager.html">ISystemManager</a></code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set systemManager(value:<a href="../../mx/managers/ISystemManager.html">ISystemManager</a>):void</code><br/></div><a name="propertyDetail"></a><a name="toolTip"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">toolTip</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>toolTip:String</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Text to display in the ToolTip.
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get toolTip():String</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set toolTip(value:String):void</code><br/></div><a name="propertyDetail"></a><a name="tweeningProperties"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">tweeningProperties</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>tweeningProperties:Array</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Array of properties that are currently being tweened on this object.
           <p>Used to alert the EffectManager that certain properties of this object
      are being tweened, so that the EffectManger doesn't attempt to animate
      the same properties.</p>
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get tweeningProperties():Array</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set tweeningProperties(value:Array):void</code><br/></div><a name="propertyDetail"></a><a name="updateCompletePendingFlag"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">updateCompletePendingFlag</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>updateCompletePendingFlag:Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      A flag that determines if an object has been through all three phases
      of layout validation (provided that any were required)
      
      </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get updateCompletePendingFlag():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set updateCompletePendingFlag(value:Boolean):void</code><br/></div><a name="constructorDetail"></a><div class="detailSectionHeader">Constructor Detail</div><a name="UIFTETextField()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">UIFTETextField</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">Constructor</td></tr></table><div class="detailBody"><code>public function UIFTETextField()</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p>
      Constructor.
      
      </p></div><a name="methodDetail"></a><div class="detailSectionHeader">Method Detail</div><a name="getExplicitOrMeasuredHeight()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">getExplicitOrMeasuredHeight</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td></tr></table><div class="detailBody"><code> public function getExplicitOrMeasuredHeight():Number</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      A convenience method for determining whether to use the
      explicit or measured height
           </p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>Number</code> &mdash; A Number which is explicitHeight if defined
      or measuredHeight if not.
      
      </td></tr></table></div><a name="getExplicitOrMeasuredWidth()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">getExplicitOrMeasuredWidth</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function getExplicitOrMeasuredWidth():Number</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      A convenience method for determining whether to use the
      explicit or measured width
           </p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>Number</code> &mdash; A Number which is explicitWidth if defined
      or measuredWidth if not.
      
      </td></tr></table></div><a name="getStyle()"></a><a name="getStyle(String)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">getStyle</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function getStyle(styleProp:String):*</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Gets a style property that has been set anywhere in this
      component's style lookup chain.
           <p>This same method is used to get any kind of style property,
      so the value returned can be a Boolean, String, Number, int,
      uint (for an RGB color), Class (for a skin), or any kind of object.
      Therefore the return type is simply specified as *.</p>
           <p>If you are getting a particular style property, you 
      know its type and often want to store the result in a
      variable of that type.
      No casting from * to that type is necessary.</p>
           <p>
      <code>
      var backgroundColor:uint = getStyle("backgroundColor");
      </code>
      </p>
           <p>If the style property has not been set anywhere in the
      style lookup chain, the value returned by <code>getStyle()</code>
      is <code>undefined</code>.
      Note that <code>undefined</code> is a special value that is
      not the same as <code>false</code>, <code>""</code>,
      <code>NaN</code>, <code>0</code>, or <code>null</code>.
      No valid style value is ever <code>undefined</code>.
      You can use the method
      <code>IStyleManager2.isValidStyleValue()</code>
      to test whether the value was set.</p>
           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">styleProp</span>:String</code> &mdash; Name of the style property.
           </td></tr></table></p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>*</code> &mdash; Style value.
      
      </td></tr></table></div><a name="getTextStyles()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">getTextStyles</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function getTextStyles():TextFormat</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Returns the TextFormat object that represents 
      character formatting information for this UITextField object.
           </p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>TextFormat</code> &mdash; A TextFormat object. 
           </td></tr></table><p><span class="label">See also</span></p><div class="seeAlso">flash.text.TextFormat</div></div><a name="getUITextFormat()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">getUITextFormat</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function getUITextFormat():<a href="../../mx/core/UITextFormat.html">UITextFormat</a></code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Returns a UITextFormat object that contains formatting information for this component. 
      This method is similar to the <code>getTextFormat()</code> method of the 
      flash.text.TextField class, but it returns a UITextFormat object instead 
      of a TextFormat object.
           <p>The UITextFormat class extends the TextFormat class to add the text measurement methods
      <code>measureText()</code> and <code>measureHTMLText()</code>.</p>
           </p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code><a href="../../mx/core/UITextFormat.html">UITextFormat</a></code> &mdash; An object that contains formatting information for this component.
           </td></tr></table><p><span class="label">See also</span></p><div class="seeAlso"><a href="UITextFormat.html" target="">mx.core.UITextFormat</a><br/>flash.text.TextField</div></div><a name="initialize()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">initialize</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function initialize():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Initializes this component.
           <p>This method is required by the IUIComponent interface,
      but it actually does nothing for a UITextField.</p>
      
      </p></div><a name="invalidateDisplayList()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">invalidateDisplayList</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function invalidateDisplayList():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Marks a component so that its <code>updateDisplayList()</code>
      method gets called during a later screen update.
           <p>Invalidation is a useful mechanism for eliminating duplicate
      work by delaying processing of changes to a component until a
      later screen update.
      For example, if you want to change the width and height,
      it would be wasteful to update the component immediately after you
      change the width and then update again with the new height.
      It is more efficient to change both properties and then render
      the component with its new size once.</p>
           <p>Invalidation methods rarely get called.
      In general, setting a property on a component automatically
      calls the appropriate invalidation method.</p>
      
      </p></div><a name="invalidateProperties()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">invalidateProperties</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function invalidateProperties():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Marks a component so that its <code>commitProperties()</code>
      method gets called during a later screen update.
           <p>Invalidation is a useful mechanism for eliminating duplicate
      work by delaying processing of changes to a component until a
      later screen update.
      For example, if you want to change the text color and size,
      it would be wasteful to update the color immediately after you
      change it and then update the size when it gets set.
      It is more efficient to change both properties and then render
      the text with its new size and color once.</p>
           <p>Invalidation methods rarely get called.
      In general, setting a property on a component automatically
      calls the appropriate invalidation method.</p>
      
      </p></div><a name="invalidateSize()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">invalidateSize</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function invalidateSize():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Marks a component so that its <code>measure()</code>
      method gets called during a later screen update.
           <p>Invalidation is a useful mechanism for eliminating duplicate
      work by delaying processing of changes to a component until a
      later screen update.
      For example, if you want to change the text and font size,
      it would be wasteful to update the text immediately after you
      change it and then update the size when it gets set.
      It is more efficient to change both properties and then render
      the text with its new size once.</p>
           <p>Invalidation methods rarely get called.
      In general, setting a property on a component automatically
      calls the appropriate invalidation method.</p>
      
      </p></div><a name="move()"></a><a name="move(Number,Number)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">move</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function move(x:Number, y:Number):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
       Moves the component to a specified position within its parent.
       Calling this method is exactly the same as
       setting the component's <code>x</code> and <code>y</code> properties.
             <p>If you are overriding the <code>updateDisplayList()</code> method
       in a custom component, call the <code>move()</code> method
       rather than setting the <code>x</code> and <code>y</code> properties.
       The difference is that the <code>move()</code> method changes the location
       of the component and then dispatches a <code>move</code> event when you
       call the method, while setting the <code>x</code> and <code>y</code>
       properties changes the location of the component and dispatches
       the event on the next screen refresh.</p>
             </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">x</span>:Number</code> &mdash; Left position of the component within its parent.
             </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">y</span>:Number</code> &mdash; Top position of the component within its parent.
       
       </td></tr></table></p></div><a name="owns()"></a><a name="owns(flash.display.DisplayObject)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">owns</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function owns(child:DisplayObject):Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Returns <code>true</code> if the child is parented or owned by this object.
           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">child</span>:DisplayObject</code> &mdash; The child DisplayObject.
           </td></tr></table></p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>Boolean</code> &mdash; <code>true</code> if the child is parented or owned by this UITextField object.
     
      </td></tr></table><p><span class="label">See also</span></p><div class="seeAlso"><a href="UIFTETextField.html#owner" target="">owner</a></div></div><a name="parentChanged()"></a><a name="parentChanged(flash.display.DisplayObjectContainer)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">parentChanged</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function parentChanged(p:DisplayObjectContainer):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      This function is called when a UITextField object is assigned
      a parent.
      You typically never need to call this method.
           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">p</span>:DisplayObjectContainer</code> &mdash; The parent of this UITextField object.
      
      </td></tr></table></p></div><a name="replayAutomatableEvent()"></a><a name="replayAutomatableEvent(flash.events.Event)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">replayAutomatableEvent</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function replayAutomatableEvent(event:Event):Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      
      Replays the specified event.  A component author should probably call 
      super.replayAutomatableEvent in case default replay behavior has been defined 
      in a superclass.
           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">event</span>:Event</code> &mdash; The event to replay.
           </td></tr></table></p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>Boolean</code> &mdash; <code>true</code> if a replay was successful.  
      
      </td></tr></table></div><a name="setActualSize()"></a><a name="setActualSize(Number,Number)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">setActualSize</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function setActualSize(w:Number, h:Number):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Sizes the object.
      Unlike directly setting the <code>width</code> and <code>height</code>
      properties, calling the <code>setActualSize()</code> method
      does not set the <code>explictWidth</code> and
      <code>explicitHeight</code> properties, so a future layout
      calculation can result in the object returning to its previous size.
      This method is used primarily by component developers implementing
      the <code>updateDisplayList()</code> method, by Effects,
      and by the LayoutManager.
           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">w</span>:Number</code> &mdash; Width of the object.
           </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">h</span>:Number</code> &mdash; Height of the object.
      
      </td></tr></table></p></div><a name="setColor()"></a><a name="setColor(uint)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">setColor</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function setColor(color:uint):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Sets the font color of the text.
           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">color</span>:uint</code> &mdash; The new font color.
      
      </td></tr></table></p></div><a name="setFocus()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">setFocus</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function setFocus():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Sets the focus to this component.
      The component can in turn pass focus to a subcomponent.
           <p><b>Note:</b> Only the TextInput and TextArea controls show a highlight
      when this method sets the focus.
      All controls show a highlight when the user tabs to the control.</p>
      
      </p></div><a name="setStyle()"></a><a name="setStyle(String,any)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">setStyle</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function setStyle(styleProp:String, value:*):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Does nothing.
      A UITextField cannot have inline styles.
           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">styleProp</span>:String</code> &mdash; n/a
           </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">value</span>:*</code> &mdash; n/a
      
      </td></tr></table></p></div><a name="setVisible()"></a><a name="setVisible(Boolean,Boolean)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">setVisible</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function setVisible(visible:Boolean, noEvent:Boolean = false):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Sets the <code>visible</code> property of this UITextField object.
     
      </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">visible</span>:Boolean</code> &mdash; <code>true</code> to make this UITextField visible, 
      and <code>false</code> to make it invisible.
           </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">noEvent</span>:Boolean</code> (default = <code>false</code>)<code></code> &mdash; <code>true</code> to suppress generating an event when you change visibility.
      
      </td></tr></table></p></div><a name="styleChanged()"></a><a name="styleChanged(String)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">styleChanged</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function styleChanged(styleProp:String):void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Detects changes to style properties. When any style property is set,
      Flex calls the <code>styleChanged()</code> method,
      passing to it the name of the style being set.
           <p>This is an advanced method that you might override
      when creating a subclass of UIComponent. When you create a custom component,
      you can override the <code>styleChanged()</code> method
      to check the style name passed to it, and handle the change accordingly.
      This lets you override the default behavior of an existing style,
      or add your own custom style properties.</p>
           <p>If you handle the style property, your override of
      the <code>styleChanged()</code> method should call the
      <code>invalidateDisplayList()</code> method to cause Flex to execute
      the component's <code>updateDisplayList()</code> method at the next screen update.</p>
           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">styleProp</span>:String</code> &mdash; The name of the style property, or null if all styles for this
      component have changed.
      
      </td></tr></table></p></div><a name="truncateToFit()"></a><a name="truncateToFit(String)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">truncateToFit</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function truncateToFit(truncationIndicator:String = null):Boolean</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Truncate text to make it fit horizontally in the area defined for the control, 
      and append an ellipsis, three periods (...), to the text.
           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">truncationIndicator</span>:String</code> (default = <code>null</code>)<code></code> &mdash; The text to be appended after truncation.
      If you pass <code>null</code>, a localizable string
      such as <code>"..."</code> will be used.
           </td></tr></table></p><p></p><span class="label">Returns</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>Boolean</code> &mdash; <code>true</code> if the text needed truncation.
      
      </td></tr></table></div><a name="validateNow()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName">validateNow</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function validateNow():void</code><p></p><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Language Version :&nbsp;</b></td><td>ActionScript 3.0</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Product Version :&nbsp;</b></td><td>Flex 4</td></tr></table><table cellpadding="0" cellspacing="0" border="0"><tr><td style="white-space:nowrap" valign="top"><b> Runtime Versions :&nbsp;</b></td><td>Flash Player  10, AIR 1.5</td></tr></table><p></p><p></p><p>
      Validate and update the properties and layout of this object
      and redraw it, if necessary.
           Processing properties that require substantial computation are normally
      not processed until the script finishes executing.
      For example setting the <code>width</code> property is delayed, because it can
      require recalculating the widths of the objects children or its parent.
      Delaying the processing prevents it from being repeated
      multiple times if the script sets the <code>width</code> property more than once.
      This method lets you manually override this behavior.
      
      </p></div><br/><br/><hr><br/><p></p><center class="copyright"><footer>The Apache Software Foundation</footer><br/>Wed Nov 15 2017, 09:50 AM +01:00  </center></div></body></html><!--The Apache Software Foundation<br/>Wed Nov 15 2017, 09:50 AM +01:00  -->