Flex: Limitando o número de linhas em um TextArea

Alguns usuários necessitam limitar o número de linhas em um TextArea. Não há nenhuma propriedade para fazê-lo. Crie uma sub-classe de TextArea, monitore a propriedade numLines do subjacente UITextField, e substitua os eventos de entrada para evitar que caracteres extras sejam digitados.

Por | @oficinadanet Programação

Alguns usuários necessitam limitar o número de linhas em um TextArea. Não há nenhuma propriedade para fazê-lo.


Solução:


Crie uma sub-classe de TextArea, monitore a propriedade numLines do subjacente UITextField, e substitua os eventos de entrada para evitar que caracteres extras sejam digitados.


Explicação detalhada:


Aqui está um exemplo de uma sub-classe que monitora a propriedade numLines do UITextField do TextArea, e substitui eventos para evitar que muitas linhas sejam criadas.

package{
    import mx.controls.TextArea;
    import flash.events.KeyboardEvent;    
    import flash.events.TextEvent;
    public class LimitedLinesTextArea extends TextArea
    {
        private var numLinesAllowed:int = 5;
        private var moreCharsAllowed:Boolean = true;

        public function LimitedLinesTextArea():void
        {
            this.addEventListener(flash.events.TextEvent.TEXT_INPUT, textInputHandler);
        }

        override protected function keyDownHandler(event:KeyboardEvent):void
        {
            trace(this.textField.numLines);
            if(this.textField.numLines > numLinesAllowed)
                moreCharsAllowed = false;
            else
                moreCharsAllowed = true;

            super.keyDownHandler(event);
        }
        private function textInputHandler(event:TextEvent):void
        {
            if(!moreCharsAllowed)
                event.preventDefault();
        }
    }
}


Com este código você limitará o número de caracteres em um textarea.

Fonte: Ensina.me
Versão original em inglês: Adobe Flex Cookbook

Mais sobre: flex tutorial dica
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo

Siga nossas contas no Twitter