Sem querer ser espírito de porco, mas o DateChooser já não dá conta do recado? Eu falo isso pq vc não está a entrar dados de hora e minuto...
2009/9/2 thiagoalgo <thiagoa...@gmail.com> > > 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 -~----------~----~----~----~------~----~------~--~---