Just interested. Is all this worth the hassle? I mean instead using a TextArea, I would go for a normal TextField and a custom scrollbar all in 1 movieclip. And set the needs.
Cor. -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Muzak Sent: zondag 29 maart 2009 1:20 To: Flash Coders List Subject: Re: [Flashcoders] ?: how to prevent users to copy text from aTextArea? The problem seems to be that TextArea uses the "enabled" value to set the inner textField's selectable property value. protected function updateTextFieldType():void { textField.type = (enabled && _editable) ? TextFieldType.INPUT : TextFieldType.DYNAMIC; textField.selectable = enabled; textField.wordWrap = _wordWrap; textField.multiline = true; } So each time the updateTextFieldType() method is called, no matter what you set TextArea.textField.selectable to, it will revert to the TextArea.enabled value. That's why : details_ta.textField.selectable = false; doesn't really work. So it's not really a bug, just a (very) bad decision. Why it was done that way, who knows.. To get the TextArea to work the way you want, you can extend it and override the updateTextFieldType() method and add a selectable property, like so: package { import fl.controls.TextArea; import flash.text.TextFieldType; public class TextArea2 extends TextArea { private var _selectable:Boolean = true; override protected function updateTextFieldType():void { textField.type = (enabled && _editable) ? TextFieldType.INPUT : TextFieldType.DYNAMIC; textField.selectable = _selectable; textField.wordWrap = _wordWrap; textField.multiline = true; } public function get selectable():Boolean { return _selectable; } public function set selectable(value:Boolean):void { _selectable = value; super.textField.selectable = value; updateTextFieldType() } } } Tested with the code you provided earlier (normal TextArea on stage): package { import flash.display.Sprite; import fl.controls.TextArea; import flash.text.TextField; import flash.events.Event; import TextArea2; public class TestTextArea extends Sprite { public var details_ta:TextArea; public var details2_ta:TextArea2; public function TestTextArea() { addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler); init(); } private function init():void { trace("TestTextArea ::: init"); details2_ta = new TextArea2(); details2_ta.selectable = false; details2_ta.x = 220; details2_ta.y = 10; details2_ta.width = 200; details2_ta.height = 100; addChild(details2_ta); } private function addedToStageHandler(evt:Event):void { trace("TestTextArea ::: addedToStageHandler"); var msg:String = "<b>Lorem ipsum dolor sit amet,</b> consectetuer adipiscing elit."; details_ta.htmlText = msg; details2_ta.htmlText = msg; } } } regards, Muzak ----- Original Message ----- From: "Keith Reinfeld" <[email protected]> To: "'Flash Coders List'" <[email protected]> Sent: Saturday, March 28, 2009 10:11 PM Subject: RE: [Flashcoders] ?: how to prevent users to copy text from aTextArea? > Then again there is this: > > package{ > //imports > import fl.controls.TextArea; > import flash.text.TextField; > > public class CustomTextArea extends TextArea{ > //vars > private var internalTextField:TextField; > > public function CustomTextArea(){ > super(); > internalTextField = TextField(this.textField); > } > > public function set selectable(b:Boolean):void{ > internalTextField.mouseEnabled = b; > this.editable = b; > } > > public function get selectable():Boolean{ > return internalTextField.mouseEnabled; > } > } > } > > Example usage: > > package{ > //imports > import flash.display.MovieClip; > import CustomTextArea; > > public class Application extends MovieClip{ > //vars > private var customTA:CustomTextArea; > > public function Application(){ > init(); > //addEventListener(KeyboardEvent.KEY_DOWN, > onUpArrow); > } > > private function init():void{ > customTA = new CustomTextArea(); > > addChild(customTA); > customTA.x = 0; > customTA.y = 0; > customTA.width = 150; > customTA.height = 90; > customTA.htmlText = "<font color='#0000FF'><b>Lorem > ipsum dolor sit amet,</b> consectetuer adipiscing elit.</font><font > color='#0000FF'><b>Lorem ipsum dolor sit amet,</b> consectetuer adipiscing > elit.</font><font color='#0000FF'><b>Lorem ipsum dolor sit amet,</b> > consectetuer adipiscing elit.</font><font color='#0000FF'><b>Lorem ipsum > dolor sit amet,</b> consectetuer adipiscing elit.</font>"; > > trace("customTA.selectable =",customTA.selectable); > customTA.selectable = false; > trace("customTA.selectable =",customTA.selectable); > } > } > } > > HTH > > Regards, > > -Keith _______________________________________________ Flashcoders mailing list [email protected] http://chattyfig.figleaf.com/mailman/listinfo/flashcoders No virus found in this incoming message. Checked by AVG - www.avg.com Version: 8.5.278 / Virus Database: 270.11.31/2028 - Release Date: 03/28/09 07:16:00 _______________________________________________ Flashcoders mailing list [email protected] http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

