Opa Felipe, a sua idéia é legal. Mas nesse campo aí o usuário não
precisa digitar as barras e o campo está sempre aparecendo formatado
para ele. Quanto a usar um DateValidator eu não tinha pensado ainda,
mas deve economizar algumas linhas de código realmente.

On 2 set, 16:36, Felipe Bianconi <felipebianc...@gmail.com> wrote:
> Uma dica, aqui nós formatamos o texto digitado, ao entrar no DateField,
> retiramos as barras(/) e deixamos só os números, e ao sair, formatamos ele
> com o DateFormatter e validamos com o DateValidator, setando o maxChars do
> _textInput do DateField para 8 quando entra e 10 ao sair. Isso economiza o
> trabalho do usuário digitar as barras. Mas que eu dei uma olhada rápida no
> código, parece ser muito funcional.
>
> Obrigado,
> Felipe Bianconi
>
> 2009/9/2 thiagoalgo <thiagoa...@gmail.com>
>
>
>
> > Pessoal,
>
> > Primeiramente desculpem a pretenção no título do email, mas incluí a
> > palavra enviando pois se não a maioria das pessoas iria achar que
> > estou solicitando um componente de máscara.
>
> > Fiz um componente de data que está funcionando muito bem, porém está
> > bem "engessado" aceitando apenas o formato dd/mm/yyyy. Por isso estou
> > disponibilizando para uso e se alguma alma caridosa se inspirar e
> > quiser melhorá-lo e talvez até dinamizar o formato da máscara o código
> > está aí.
>
> > Uma coisa que acho que ficou nesse componente é que você pode
> > trabalhar diretamente com dados do tipo Date e não com a propriedade
> > text do componente.
>
> > Segue abaixo o código, se alguém quiser o arquivo posso enviar também.
> > Lembro que foi feito a "marretada" então tem coisas que com certeza
> > podem ser melhoradas.
>
> > package {
> >        import flash.events.Event;
> >        import flash.events.KeyboardEvent;
> >        import flash.ui.Keyboard;
>
> >        import mx.controls.TextInput;
> >        import mx.formatters.DateFormatter;
>
> >        public class ERKDateInput extends TextInput {
>
> >                private var _text:String = "";
> >                private var _textFormated:String = "";
>
> >                [Inspectable(defaultValue="false", enumeration="true,false",
> > category="ERK")]
> >                private var _keepInitial:Boolean = false; // Verifica se o
> > valor
> > inicial deve ser setado quando chamado o metodo reset
>
> >                private var _initialValue:Date = null; // Armazena o
> > primeiro valor
> > setado no componente para setar novamente quando o metodo reset for
> > invocado e quando _keepInitial for verdadeiro
>
> >                [Inspectable(defaultValue="false", enumeration="true,false",
> > category="ERK")]
> >                private var _controlavel:Boolean = true;
>
> >                public function ERKDateInput() {
> >                        super();
> >                }
>
> >                override protected function childrenCreated():void {
> >                        super.childrenCreated();
> >                        this.width = 80;
> >                        this.addEventListener(KeyboardEvent.KEY_DOWN,
> > _onKeyDown);
> >                        this.formatar();
> >                }
>
> >                private function _onKeyDown(event:KeyboardEvent):void {
> >                        var ini:int = selectionBeginIndex; // inicio da
> > selecao
> >                        var fim:int = selectionEndIndex; // fim da selecao
>
> >                        if (event.keyCode == Keyboard.BACKSPACE) {
> >                                var limiteAuxIni:int = 0;
> >                                var inicioAuxFim:int = 0;
>
> >                                if (fim - ini > 0) {
> >                                        if (ini >= 6) {
> >                                                limiteAuxIni = ini - 2;
> >                                        } else if (ini >= 3) {
> >                                                limiteAuxIni = ini - 1;
> >                                        } else {
> >                                                limiteAuxIni = ini - 0;
> >                                        }
>
> >                                        if (fim >= 6) {
> >                                                inicioAuxFim = fim - 2;
> >                                        } else if (fim >= 3) {
> >                                                inicioAuxFim = fim - 1;
> >                                        } else {
> >                                                inicioAuxFim = fim - 0;
> >                                        }
>
> >                                } else {
> >                                        if (ini >= 6) {
> >                                                limiteAuxIni = ini - 1 - 2;
> >                                        } else if (ini >= 3) {
> >                                                limiteAuxIni = ini - 1 - 1;
> >                                        } else {
> >                                                limiteAuxIni = ini - 1 - 0;
> >                                        }
>
> >                                        if (fim >= 6) {
> >                                                inicioAuxFim = fim - 2;
> >                                        } else if (fim >= 3) {
> >                                                inicioAuxFim = fim - 1;
> >                                        } else {
> >                                                inicioAuxFim = fim - 0;
> >                                        }
> >                                }
>
> >                                var auxIni:String = this._text.substring(0,
> > limiteAuxIni);
> >                                var auxFim:String =
> > this._text.substring(inicioAuxFim,
> > this._text.length);
>
> >                                this._text = auxIni.concat(auxFim);
>
> >                                // Definindo a posicao do cursor
> >                                if (ini == 6) {
> >                                        this.selectionBeginIndex = 4;
> >                                        this.selectionEndIndex = 4;
>
> >                                } else if (ini == 3) {
> >                                        this.selectionBeginIndex = 1;
> >                                        this.selectionEndIndex = 1;
>
> >                                }
>
> >                        } else if (event.keyCode == Keyboard.DELETE) {
> >                                var limiteAuxIni:int = 0;
> >                                var inicioAuxFim:int = 0;
>
> >                                if (fim - ini > 0) {
> >                                        if (ini >= 6) {
> >                                                limiteAuxIni = ini - 2;
> >                                        } else if (ini >= 3) {
> >                                                limiteAuxIni = ini - 1;
> >                                        } else {
> >                                                limiteAuxIni = ini - 0;
> >                                        }
>
> >                                        if (fim >= 6) {
> >                                                inicioAuxFim = fim - 2;
> >                                        } else if (fim >= 3) {
> >                                                inicioAuxFim = fim - 1;
> >                                        } else {
> >                                                inicioAuxFim = fim - 0;
> >                                        }
>
> >                                } else {
> >                                        if (ini >= 6) {
> >                                                limiteAuxIni = ini - 2;
> >                                        } else if (ini >= 3) {
> >                                                limiteAuxIni = ini - 1;
> >                                        } else {
> >                                                limiteAuxIni = ini - 0;
> >                                        }
>
> >                                        if (fim >= 6) {
> >                                                inicioAuxFim = fim + 1 - 2;
> >                                        } else if (fim >= 3) {
> >                                                inicioAuxFim = fim + 1 - 1;
> >                                        } else {
> >                                                inicioAuxFim = fim + 1 - 0;
> >                                        }
> >                                }
>
> >                                var auxIni:String = this._text.substring(0,
> > limiteAuxIni);
> >                                var auxFim:String =
> > this._text.substring(inicioAuxFim,
> > this._text.length);
> >                                this._text = auxIni.concat(auxFim);
>
> >                        } else if (event.keyCode >= Keyboard.NUMPAD_0 &&
> > event.keyCode <=
> > Keyboard.NUMPAD_9) {
> >                                var digitado:String = null;
> >                                if (ini >= 6) {
> >                                        ini -= 2;
> >                                } else if (ini >= 3) {
> >                                        ini--;
> >                                }
>
> >                                if (fim >= 6) {
> >                                        fim -= 2;
> >                                } else if (fim >= 3) {
> >                                        fim--;
> >                                }
>
> >                                if (event.keyCode == Keyboard.NUMPAD_0) {
> > digitado = "0"; }
> >                                else if (event.keyCode == Keyboard.NUMPAD_1)
> > { digitado = "1"; }
> >                                else if (event.keyCode == Keyboard.NUMPAD_2)
> > { digitado = "2"; }
> >                                else if (event.keyCode == Keyboard.NUMPAD_3)
> > { digitado = "3"; }
> >                                else if (event.keyCode == Keyboard.NUMPAD_4)
> > { digitado = "4"; }
> >                                else if (event.keyCode == Keyboard.NUMPAD_5)
> > { digitado = "5"; }
> >                                else if (event.keyCode == Keyboard.NUMPAD_6)
> > { digitado = "6"; }
> >                                else if (event.keyCode == Keyboard.NUMPAD_7)
> > { digitado = "7"; }
> >                                else if (event.keyCode == Keyboard.NUMPAD_8)
> > { digitado = "8"; }
> >                                else if (event.keyCode ==
>
> ...
>
> mais »
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a