<!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="StyleableTextField,spark.components.supportClasses.StyleableTextField,BOTTOM,BOTTOM,CONTAINS,DOWN,DROP_INDICATOR,ENDS_WITH,EXACT,FOCUS_PANE,LEFT,MASK,NONE,NOT,NOT_EMPTY,NO_SELECTION,OVER,POP,POP_ALL,POP_TO_FIRST,PUSH,REPLACE,RIGHT,STARTS_WITH,TOP,TOP,UP,_displayAsPassword,_editable,_maxChars,_multiline,_restrict,activeView,arrowKeysWrapFocus,autoCapitalize,autoCapitalize,autoCapitalize,autoCorrect,autoCorrect,autoCorrect,autoDrawBackground,autoLayout,autoRepeat,baselinePosition,baselinePosition,caretIndex,clipAndEnableScrolling,closeDropDownOnResize,closeOnResize,content,contentHeight,contentWidth,context,currentCSSState,dataField,dataTipFormatFunction,dataTipPrecision,debugId,defaultButton,defaultStyles,densityScale,displayAsPassword,displayAsPassword,displayAsPassword,down,dragging,dropDownController,editable,editable,editable,editable,enableIME,enabled,endFunction,focusEnabled,focusSkinExclusions,gap,headerStyleName,headerText,hiddenFocusStageText,hitAreaAdditions,horizontalScrollPosition,horizontalScrollPosition,hovered,hovered,icon,iconField,iconFunction,imeMode,invalidateStyleFlag,isActive,isAndroid,isDesktop,isDropDownOpen,isDropDownOpen,isFirstRow,isFirstRow,isLastRow,isLastRow,isOpen,isTruncated,isTruncated,itemIndex,itemRenderer,keyboardPressed,label,label,label,labelDisplay,labelField,labelFunction,labelFunction,lastFocusedStageText,layout,lineBreak,luminosityClip,luminosityInvert,mask,maskType,maxChars,maxChars,maxChars,maxDisplayedLines,maxDragRate,maximum,maximum,minHeight,minWidth,minimum,mouseCaptured,mouseEnabledWhereTransparent,multiline,multiline,numDisplayObjects,numElements,object,openButton,overlay,pageSize,parentNavigator,pendingValue,pendingValue,percentWidth,persistNavigatorState,persistenceManager,preventSelection,prompt,proxy,repeatFunction,requireSelection,resizeMode,restrict,restrict,restrict,returnKeyLabel,returnKeyLabel,returnKeyLabel,rollOverOpenDelay,selectable,selected,selected,selectedIndex,selectedItem,selectionActivePosition,selectionActivePosition,selectionActivePosition,selectionActivePosition,selectionAnchorPosition,selectionAnchorPosition,selectionAnchorPosition,selectionAnchorPosition,selectionHighlighting,showDataTip,showTruncationTip,showsCaret,skin,snapInterval,snapInterval,softKeyboardType,softKeyboardType,softKeyboardType,sortDescending,sortField,sortable,stageText,startFunction,state,stepSize,stickyHighlighting,stopFunction,styleDeclaration,styleName,styleName,styleName,suggestedFocusSkinExclusions,supportedStyles,systemManager,text,text,text,text,text,text,textAlign,transitionsEnabled,typicalText,updateFunction,useVirtualLayout,value,verticalScrollPosition,verticalScrollPosition,viewMenuOpen,viewport,width,addDisplayObject,addedToStageHandler,adjustSelection,animatePaging,animateStepping,animationEnd,animationRepeat,animationStart,animationStop,animationUpdate,appendText,appendText,appendText,appendText,attachSkin,backKeyUpHandler,backKeyUpHandler,beginHighlightBitmapCapture,buttonReleased,button_buttonDownHandler,button_buttonUpHandler,changeValueByPage,changeValueByStep,clearSkinParts,clickHandler,closeDropDown,closeDropDown,closeDropDown,commitStyles,commitStyles,containsElement,createChildren,createDynamicPartInstance,createPatternString,createPersistenceManager,createProxy,createRegExp,deactivateHandler,detachSkin,disposeProxy,endHighlightBitmapCapture,endTextEdit,findRowIndex,findRowIndex,findRowIndices,findRowIndices,findSkinParts,getButtonIndices,getCurrentRendererState,getCurrentSkinState,getCurrentSkinState,getDisplayObjectAt,getDisplayObjectDepth,getDynamicPartAt,getElementAt,getElementIndex,getGlobalViewPort,getHorizontalScrollPositionDelta,getStyle,getVerticalScrollPositionDelta,getVirtualElementAt,insertText,insertText,insertText,insertText,invalidateRendererState,invalidateSkinState,invokeHandler,itemAdded,itemRemoved,itemSelected,itemShowingCaret,itemToLabel,keepSoftKeyboardActive,loadNavigatorState,loadViewData,measureTextLineHeight,menuKeyUpHandler,mouseEventHandler,moveIndexFindRow,moveIndexFindRow,moveIndexFirstRow,moveIndexFirstRow,moveIndexLastRow,moveIndexLastRow,moveIndexNextRow,moveIndexNextRow,moveIndexPreviousRow,moveIndexPreviousRow,nearestValidValue,numDynamicParts,openDropDown,openDropDown,openDropDown,partAdded,partRemoved,pointToValue,prepareForTouchScroll,processFocusOut,processKeyDown,removeDisplayObject,removeDynamicPartInstance,removedFromStageHandler,restoreStageText,saveNavigatorState,saveViewData,scrollToRange,selectAll,selectAll,selectAll,selectAll,selectRange,selectRange,selectRange,selectRange,setButtonEnabled,setButtonsEnabled,setContentSize,setFocus,setSelectedIndex,setStyle,setValue,stageText_changeHandler,stageText_completeHandler,startTextEdit,styleChanged,truncateToFit,updateControlsForView,updateDataTip,updateProxy,updateSkinDisplayList,updateViewPort"><title>spark.components.supportClasses.StyleableTextField</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 = 'StyleableTextField - 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?spark/components/supportClasses/StyleableTextField.html&amp;spark/components/supportClasses/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">StyleableTextField</td><td class="titleTableSubNav" id="subNav" align="right"><a href="#propertySummary">Properties</a>&nbsp;| <a href="#methodSummary">Methods</a>&nbsp;| <a href="#styleSummary">Styles</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("StyleableTextField"); titleBar_setSubNav(false,true,true,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')">spark.components.supportClasses</a></td></tr><tr><td class="classHeaderTableLabel">Class</td><td class="classSignature">public  class  StyleableTextField</td></tr><tr><td class="classHeaderTableLabel">Inheritance</td><td class="inheritanceList">StyleableTextField  <img src="../../../images/inherit-arrow.gif" title="Inheritance" alt="Inheritance" class="inheritArrow"> <a href="../../../mx/core/FlexTextField.html">FlexTextField</a> <img src="../../../images/inherit-arrow.gif" title="Inheritance" alt="Inheritance" class="inheritArrow"> flash.text.TextField</td></tr><tr><td class="classHeaderTableLabel">Implements</td><td> <a href="../../../spark/core/IEditableText.html">IEditableText</a>,  <a href="../../../mx/styles/ISimpleStyleClient.html">ISimpleStyleClient</a>,  <a href="../../../mx/core/IVisualElement.html">IVisualElement</a></td></tr><tr><td class="classHeaderTableLabel">Subclasses</td><td> <a href="../../../spark/components/itemRenderers/MobileGridTextCellRenderer.html">MobileGridTextCellRenderer</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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p></p><p></p>
  The StyleableTextField class is a text primitive for use in ActionScript
  skins and item renderers. It cannot be used in MXML markup and is not
  compatible with effects.
   <p></p><br/><hr></div><a name="propertySummary"></a><div class="summarySection"><div class="summaryTableTitle">Public Properties</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=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#editable" class="signatureLink">editable</a> : Boolean<div class="summaryTableDescription">
      Specifies whether the text is editable, true,
      or not, false.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#enabled" class="signatureLink">enabled</a> : Boolean<div class="summaryTableDescription">
      Whether the component can accept user interaction.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#focusEnabled" class="signatureLink">focusEnabled</a> : Boolean<div class="summaryTableDescription">
      Indicates whether the component can receive focus when tabbed to.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#horizontalScrollPosition" class="signatureLink">horizontalScrollPosition</a> : Number<div class="summaryTableDescription">
      The horizontal scroll position of the text.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#isTruncated" class="signatureLink">isTruncated</a> : Boolean<div class="summaryTableDescription">[read-only] 
      Indicates whether the text has been truncated, true,
      or not, false.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#lineBreak" class="signatureLink">lineBreak</a> : String<div class="summaryTableDescription">
      Controls word wrapping within the text.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#minHeight" class="signatureLink">minHeight</a> : Number<div class="summaryTableDescription">
      The minimum recommended height of the component to be considered
      by the parent during layout.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#minWidth" class="signatureLink">minWidth</a> : Number<div class="summaryTableDescription">
      The minimum recommended width of the component to be considered
      by the parent during layout.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#selectionActivePosition" class="signatureLink">selectionActivePosition</a> : int<div class="summaryTableDescription">[read-only] 
      The active, or last clicked position, of the selection.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#selectionAnchorPosition" class="signatureLink">selectionAnchorPosition</a> : int<div class="summaryTableDescription">[read-only] 
      The anchor, or first clicked position, of the selection.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#styleDeclaration" class="signatureLink">styleDeclaration</a> : <a href="../../../mx/styles/CSSStyleDeclaration.html">CSSStyleDeclaration</a><div class="summaryTableDescription">
      Storage for the inline inheriting styles on this object.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#styleName" class="signatureLink">styleName</a> : Object<div class="summaryTableDescription">
      The class style used by this component.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#text" class="signatureLink">text</a> : String<div class="summaryTableDescription">[override] 
      The text displayed by this text component.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#verticalScrollPosition" class="signatureLink">verticalScrollPosition</a> : Number<div class="summaryTableDescription">
      The vertical scroll position of the text.</div></td><td class="summaryTableOwnerCol">StyleableTextField</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"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#StyleableTextField()" class="signatureLink">StyleableTextField</a>()</div><div class="summaryTableDescription">
      Constructor.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#appendText()" class="signatureLink">appendText</a>(text:String):void</div><div class="summaryTableDescription">[override] 
      Appends the specified text to the end of the text component,
      as if you had clicked at the end and typed.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#commitStyles()" class="signatureLink">commitStyles</a>():void</div><div class="summaryTableDescription">
      Commit the styles into the TextField.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<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">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#insertText()" class="signatureLink">insertText</a>(text:String):void</div><div class="summaryTableDescription">
      Inserts the specified text into the text component
      as if you had typed it.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#scrollToRange()" class="signatureLink">scrollToRange</a>(anchorPosition:int, activePosition:int):void</div><div class="summaryTableDescription">
      Scroll so the specified range is in view.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#selectAll()" class="signatureLink">selectAll</a>():void</div><div class="summaryTableDescription">
      Selects all of the text.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#selectRange()" class="signatureLink">selectRange</a>(anchorIndex:int, activeIndex:int):void</div><div class="summaryTableDescription">
      Selects a specified range of characters.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#setFocus()" class="signatureLink">setFocus</a>():void</div><div class="summaryTableDescription">
      Set focus to this text field.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#setStyle()" class="signatureLink">setStyle</a>(styleProp:String, value:*):void</div><div class="summaryTableDescription">
      Sets a style property on this component instance.</div></td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#styleChanged()" class="signatureLink">styleChanged</a>(styleProp:String):void</div><div class="summaryTableDescription">
      Detects changes to style properties.</div></td><td class="summaryTableOwnerCol">StyleableTextField</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/FlexTextField.html#toString()" class="signatureLink">toString</a>():String</div><div class="summaryTableDescription">[override] 
	  Returns a string indicating the location of this object
	  within the hierarchy of DisplayObjects in the Application.</div></td><td class="summaryTableOwnerCol"><a href="../../../mx/core/FlexTextField.html">FlexTextField</a></td></tr><tr class=""><td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;<a href="#truncateToFit()" class="signatureLink">truncateToFit</a>(truncationIndicator:String = ...):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">StyleableTextField</td></tr></table></div><a name="styleSummary"></a><div class="summarySection"><div class="summaryTableTitle">Styles</div><table cellspacing="0" cellpadding="3" class="summaryTable " id="summaryTableStyle"><tr><th>&nbsp;</th><th colspan="2">Style</th><th> Description </th><th class="summaryTableOwnerCol">Defined By</th></tr><tr class=""><td class="summaryTablePaddingCol"><a name="style:color"></a>&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><span class="signatureLink">color</span></div></td><td class="summaryTableDescription"><span class="label">Type: </span>uint&nbsp;<span class="label">Format: </span>Color&nbsp;<span class="label">CSS Inheritance: </span>yes<br/>
  Color of text in the component, including the component label.
   The default value for the Halo theme is <code>0x0B333C</code>.
  The default value for the Spark theme is <code>0x000000</code>.
  The default value for the Mobile theme is <code>0xFFFFFF</code>.
  
  </td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol"><a name="style:fontFamily"></a>&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><span class="signatureLink">fontFamily</span></div></td><td class="summaryTableDescription"><span class="label">Type: </span>String&nbsp;<span class="label">CSS Inheritance: </span>yes<br/>
  Name of the font to use.
  Unlike in a full CSS implementation,
  comma-separated lists are not supported.
  You can use any font family name.
  If you specify a generic font name,
  it is converted to an appropriate device font.
 
  The default font for the Halo theme is <code>"Verdana"</code>.
  The default font for the Spark theme is <code>"Arial"</code>.
  The default font for the Mobile theme is <code>"_sans"</code>.
  
  </td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol"><a name="style:fontSize"></a>&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><span class="signatureLink">fontSize</span></div></td><td class="summaryTableDescription"><span class="label">Type: </span>Number&nbsp;<span class="label">Format: </span>Length&nbsp;<span class="label">CSS Inheritance: </span>yes<br/>
  Height of the text, in pixels.
   In the Halo theme, the default value is 10 for all controls except
  the ColorPicker control. For the Halo themed ColorPicker control,
  the default value is 11. In the Spark theme, the default value is
  12 for all controls except the ColorPicker control. For the Spark 
  themed ColorPicker control, the default value is 11.
  The default value for the Mobile theme is 24.
  
  </td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol"><a name="style:fontStyle"></a>&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><span class="signatureLink">fontStyle</span></div></td><td class="summaryTableDescription"><span class="label">Type: </span>String&nbsp;<span class="label">CSS Inheritance: </span>yes<br/>
  Determines whether the text is italic font.
  Recognized values are <code>"normal"</code> and <code>"italic"</code>.
 
   The default value is<code> "normal"</code>.</td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol"><a name="style:fontWeight"></a>&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><span class="signatureLink">fontWeight</span></div></td><td class="summaryTableDescription"><span class="label">Type: </span>String&nbsp;<span class="label">CSS Inheritance: </span>yes<br/>
  Determines whether the text is boldface.
  Recognized values are <code>normal</code> and <code>bold</code>.
  The default value for Button controls is <code>bold</code>. 
  The default value for all other controls is <code>normal</code>.
  
  </td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol"><a name="style:leading"></a>&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><span class="signatureLink">leading</span></div></td><td class="summaryTableDescription"><span class="label">Type: </span>Number&nbsp;<span class="label">Format: </span>Length&nbsp;<span class="label">CSS Inheritance: </span>yes<br/>
  Additional vertical space between lines of text.
   <p>The default value is 0.</p>
  
                     </td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol"><a name="style:letterSpacing"></a>&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><span class="signatureLink">letterSpacing</span></div></td><td class="summaryTableDescription"><span class="label">Type: </span>Number&nbsp;<span class="label">CSS Inheritance: </span>yes<br/>
  The number of additional pixels to appear between each character.
  A positive value increases the character spacing beyond the normal spacing,
  while a negative value decreases it.
 
   The default value is<code> 0</code>.</td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol"><a name="style:textAlign"></a>&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><span class="signatureLink">textAlign</span></div></td><td class="summaryTableDescription"><span class="label">Type: </span>String&nbsp;<span class="label">CSS Inheritance: </span>yes<br/>
  Alignment of text within a container.
  Possible values are <code>"left"</code>, <code>"right"</code>,
  or <code>"center"</code>.
 
  <p>The default value for most components is <code>"left"</code>.
  For the FormItem component,
  the default value is <code>"right"</code>.
  For the Button, LinkButton, and AccordionHeader components,
  the default value is <code>"center"</code>, and
  this property is only recognized when the
  <code>labelPlacement</code> property is set to <code>"left"</code> or
  <code>"right"</code>.
  If <code>labelPlacement</code> is set to <code>"top"</code> or
  <code>"bottom"</code>, the text and any icon are centered.</p>
  
                     </td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol"><a name="style:textDecoration"></a>&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><span class="signatureLink">textDecoration</span></div></td><td class="summaryTableDescription"><span class="label">Type: </span>String&nbsp;<span class="label">CSS Inheritance: </span>yes<br/>
  Determines whether the text is underlined.
  Possible values are <code>"none"</code> and <code>"underline"</code>.
 
   The default value is<code> "none"</code>.</td><td class="summaryTableOwnerCol">StyleableTextField</td></tr><tr class=""><td class="summaryTablePaddingCol"><a name="style:textIndent"></a>&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><div class="summarySignature"><span class="signatureLink">textIndent</span></div></td><td class="summaryTableDescription"><span class="label">Type: </span>Number&nbsp;<span class="label">Format: </span>Length&nbsp;<span class="label">CSS Inheritance: </span>yes<br/>
  Offset of first line of text from the left side of the container, in pixels.
  This property cannot be a negative number when used with the mobile theme.
 
   The default value is<code> 0</code>.</td><td class="summaryTableOwnerCol">StyleableTextField</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="editable"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;editable</td><td class="detailHeaderType">property</td></tr></table><div class="detailBody"><code>editable: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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Specifies whether the text is editable, <code>true</code>,
      or not, <code>false</code>.
           </p><p> The default value is <code>true if type is TextFieldType.INPUT, otherwise false.</code>.</p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get editable():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set editable(value:Boolean):void</code><br/></div><a name="propertyDetail"></a><a name="enabled"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Whether the component can accept user interaction.
      After setting the <code>enabled</code> property to <code>false</code>,
      some components still respond to mouse interactions such as <code>mouseOver</code>.
      As a result, to fully disable the component, you should also set the value
      of the <code>mouseEnabled</code> property to <code>false</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/></div><a name="propertyDetail"></a><a name="focusEnabled"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;focusEnabled</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>focusEnabled: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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Indicates whether the component can receive focus when tabbed to.
      You can set <code>focusEnabled</code> to <code>false</code> when a
      component is used as a subcomponent of another component so that
      the outer component becomes the focusable entity.
      If this property is <code>false</code>, focus is transferred to
      the first parent that has <code>focusEnable</code> set to <code>true</code>.
           </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 focusEnabled():Boolean</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set focusEnabled(value:Boolean):void</code><br/></div><a name="propertyDetail"></a><a name="horizontalScrollPosition"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;horizontalScrollPosition</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>horizontalScrollPosition: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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      The horizontal scroll position of the text.
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get horizontalScrollPosition():Number</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set horizontalScrollPosition(value:Number):void</code><br/></div><a name="propertyDetail"></a><a name="isTruncated"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;isTruncated</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>isTruncated: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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Indicates whether the text has been truncated, <code>true</code>,
      or not, <code>false</code>.
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get isTruncated():Boolean</code><br/></div><a name="propertyDetail"></a><a name="lineBreak"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;lineBreak</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>lineBreak: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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Controls word wrapping within the text.
      This property corresponds to the <code>lineBreak</code> style.
           <p>Text may be set to fit the width of the container (<code>LineBreak.TO_FIT</code>),
      or can be set to break only at explicit return or line feed characters (<code>LineBreak.EXPLICIT</code>).</p>
           <p>Legal values are <code>flashx.textLayout.formats.LineBreak.EXPLICIT</code>,
      <code>flashx.textLayout.formats.LineBreak.TO_FIT</code>, and
      <code>flashx.textLayout.formats.FormatValue.INHERIT</code>.</p>
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get lineBreak():String</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set lineBreak(value:String):void</code><br/></div><a name="propertyDetail"></a><a name="minHeight"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;minHeight</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>public var minHeight: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.5</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>AIR 2.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></div><a name="propertyDetail"></a><a name="minWidth"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;minWidth</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>public var minWidth: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.5</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>AIR 2.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></div><a name="propertyDetail"></a><a name="selectionActivePosition"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;selectionActivePosition</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>selectionActivePosition:int</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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      The active, or last clicked position, of the selection.
      If the implementation does not support selection anchor
      this is the last character of the selection.
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get selectionActivePosition():int</code><br/></div><a name="propertyDetail"></a><a name="selectionAnchorPosition"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;selectionAnchorPosition</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>selectionAnchorPosition:int</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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      The anchor, or first clicked position, of the selection.
      If the implementation does not support selection anchor
      this is the first character of the selection.
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get selectionAnchorPosition():int</code><br/></div><a name="propertyDetail"></a><a name="styleDeclaration"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;styleDeclaration</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>styleDeclaration:<a href="../../../mx/styles/CSSStyleDeclaration.html">CSSStyleDeclaration</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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Storage for the inline inheriting styles on this object.
      This CSSStyleDeclaration is created the first time that
      the <code>setStyle()</code> method
      is called on this component to set an inheriting style.
      Developers typically never need to access this property directly.
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get styleDeclaration():<a href="../../../mx/styles/CSSStyleDeclaration.html">CSSStyleDeclaration</a></code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set styleDeclaration(value:<a href="../../../mx/styles/CSSStyleDeclaration.html">CSSStyleDeclaration</a>):void</code><br/></div><a name="propertyDetail"></a><a name="styleName"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      The class style used by this component. This should be an IStyleClient.
           </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="text"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;text</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>text:String</code>[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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      The text displayed by this text component.
           <p>The formatting of this text is controlled by CSS styles.
      The supported styles depend on the subclass.</p>
           </p><p> The default value is <code>""</code>.</p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get text():String</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set text(value:String):void</code><br/></div><a name="propertyDetail"></a><a name="verticalScrollPosition"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;verticalScrollPosition</td><td class="detailHeaderType">property</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code>verticalScrollPosition: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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      The vertical scroll position of the text.
           </p><br/><span class="label"> Implementation </span><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function get verticalScrollPosition():Number</code><br/><code>&nbsp;&nbsp;&nbsp;&nbsp;public function set verticalScrollPosition(value:Number):void</code><br/></div><a name="constructorDetail"></a><div class="detailSectionHeader">Constructor Detail</div><a name="StyleableTextField()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;StyleableTextField</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">Constructor</td></tr></table><div class="detailBody"><code>public function StyleableTextField()</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.5</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>AIR 2.5</td></tr></table><p></p><p>
      Constructor.
           </p></div><a name="methodDetail"></a><div class="detailSectionHeader">Method Detail</div><a name="appendText()"></a><a name="appendText(String)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;appendText</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td></tr></table><div class="detailBody"><code>override public function appendText(text: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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Appends the specified text to the end of the text component,
      as if you had clicked at the end and typed.
           <p>An insertion point is then set after the new text.
      If necessary, the text will scroll to ensure
      that the insertion point is visible.</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">text</span>:String</code> &mdash; The text to be appended.
           </td></tr></table></p></div><a name="commitStyles()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;commitStyles</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function commitStyles():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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Commit the styles into the TextField. This method must be called
      before the text is displayed, and any time the styles have changed.
      This method does nothing if the styles have already been committed.
           </p></div><a name="getStyle()"></a><a name="getStyle(String)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;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.5</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>AIR 2.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="insertText()"></a><a name="insertText(String)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;insertText</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function insertText(text: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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Inserts the specified text into the text component
      as if you had typed it.
           <p>If a range was selected, the new text replaces the selected text.
      If there was an insertion point, the new text is inserted there.</p>
           <p>An insertion point is then set after the new text.
      If necessary, the text will scroll to ensure
      that the insertion point is visible.</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">text</span>:String</code> &mdash; The text to be inserted.
           </td></tr></table></p><br/><span class="label">Throws</span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20"></td><td><code>Error </code> &mdash; This method or property cannot be used on a text field with a style sheet.
     
      </td></tr></table></div><a name="scrollToRange()"></a><a name="scrollToRange(int,int)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;scrollToRange</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function scrollToRange(anchorPosition:int, activePosition:int):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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Scroll so the specified range is in view.
           </p><p><span class="label"> Parameters </span><table cellpadding="0" cellspacing="0" border="0"><tr><td width="20px"></td><td><code><span class="label">anchorPosition</span>:int</code> &mdash; The anchor position of the selection range.
      </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">activePosition</span>:int</code> &mdash; The active position of the selection range.
           </td></tr></table></p></div><a name="selectAll()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;selectAll</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function selectAll():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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Selects all of the text.
           </p></div><a name="selectRange()"></a><a name="selectRange(int,int)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;selectRange</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td></tr></table><div class="detailBody"><code> public function selectRange(anchorIndex:int, activeIndex:int):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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Selects a specified range of characters.
           <p>If either position is negative, it will deselect the text range.</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">anchorIndex</span>:int</code> &mdash; The character position specifying the end
      of the selection that stays fixed when the selection is extended.
           </td></tr><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">activeIndex</span>:int</code> &mdash; The character position specifying the end
      of the selection that moves when the selection is extended.
           </td></tr></table></p></div><a name="setFocus()"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Set focus to this text field.
           </p></div><a name="setStyle()"></a><a name="setStyle(String,any)"></a><table class="detailHeader" cellpadding="0" cellspacing="0"><tr><td class="detailHeaderName"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;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.5</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>AIR 2.5</td></tr></table><p></p><p></p><p>
      Sets a style property on this component instance.
           <p>This can override a style that was set globally.</p>
           <p>Calling the <code>setStyle()</code> method can result in decreased performance.
      Use it only when necessary.</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><tr><td class="paramSpacer">&nbsp;</td></tr><tr><td width="20px"></td><td><code><span class="label">value</span>:*</code> &mdash; New value for the style.
      
      </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"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;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.5</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>AIR 2.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"><img src="../../../images/AirIcon12x12.gif" width="12" height="12" hspace="0" vspace="0" alt="AIR-only" title="Only available in the AIR runtime">&nbsp;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 = ...):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.5</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>AIR 2.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. This function
      only works for single line 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>...</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><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  -->