The following example shows how you can set the selected text in a Flex TextArea control by using the setSelection() method.
Full code after the jump.
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/04/25/setting-text-selection-on-a-textarea-control-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.core.IUITextField;
import mx.events.SliderEvent;
import mx.controls.sliderClasses.Slider;
private function slider_change(evt:SliderEvent):void {
var value1:int = Slider(evt.currentTarget).values[0];
var value2:int = Slider(evt.currentTarget).values[1];
var min:int = Math.min(value1, value2);
var max:int = Math.max(value1, value2);
textArea.setSelection(min, max);
}
private function init():void {
var tf:IUITextField = textArea.mx_internal::getTextField();
tf.alwaysShowSelection = true;
textArea.verticalScrollPosition = 0;
}
]]>
</mx:Script>
<mx:String id="lorem" source="lorem.html" />
<mx:ApplicationControlBar dock="true">
<mx:Form styleName="plain">
<mx:FormItem label="setSelection():">
<mx:HSlider id="slider"
minimum="0"
maximum="{textArea.htmlText.length}"
thumbCount="2"
liveDragging="true"
allowThumbOverlap="true"
snapInterval="1"
dataTipPrecision="0"
change="slider_change(event);" />
</mx:FormItem>
</mx:Form>
</mx:ApplicationControlBar>
<mx:TextArea id="textArea"
htmlText="{lorem}"
textAlign="justify"
condenseWhite="true"
width="100%"
height="100%"
creationComplete="init();" />
</mx:Application>
View source is enabled in the following example.
You can also set the selected text in a TextArea control by setting the selectionBeginIndex and selectionEndIndex properties, as seen in the following example:
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/04/25/setting-text-selection-on-a-textarea-control-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.core.IUITextField;
import mx.events.SliderEvent;
import mx.controls.sliderClasses.Slider;
private function slider_change(evt:SliderEvent):void {
textArea.selectionBeginIndex = beginSlider.value;
textArea.selectionEndIndex = endSlider.value;
textArea.validateNow();
beginLabel.text = textArea.selectionBeginIndex.toString();
endLabel.text = textArea.selectionEndIndex.toString();
}
private function init():void {
var tf:IUITextField = textArea.mx_internal::getTextField();
tf.alwaysShowSelection = true;
textArea.verticalScrollPosition = 0;
}
]]>
</mx:Script>
<mx:String id="lorem" source="lorem.html" />
<mx:ApplicationControlBar dock="true">
<mx:Form styleName="plain">
<mx:FormItem label="selectionBeginIndex:"
direction="horizontal">
<mx:HSlider id="beginSlider"
minimum="0"
maximum="{textArea.htmlText.length}"
value="0"
liveDragging="true"
change="slider_change(event);" />
<mx:Label id="beginLabel" />
</mx:FormItem>
<mx:FormItem label="selectionEndIndex:"
direction="horizontal">
<mx:HSlider id="endSlider"
minimum="0"
maximum="{textArea.htmlText.length}"
value="0"
snapInterval="1"
liveDragging="true"
change="slider_change(event);" />
<mx:Label id="endLabel" />
</mx:FormItem>
</mx:Form>
</mx:ApplicationControlBar>
<mx:TextArea id="textArea"
htmlText="{lorem}"
textAlign="justify"
condenseWhite="true"
width="100%"
height="100%"
creationComplete="init();" />
</mx:Application>
View source is enabled in the following example.





0 Responses to “Setting text selection on a TextArea control in Flex”
Leave a Reply