Esse background é importantíssimo para o entendimento do problema... Agora fica tudo mais claro!
Vou verificar o componente, obrigado pela explanação... Abraços. 2009/9/3 thiagoalgo <thiagoa...@gmail.com> > > Michel, no meu caso, os usuários tem um volume muito grande de dados > para digitar e para eles é muito mais fácil utilizar o teclado do que > o mouse. Estamos usando o Flex para substituir a interface de um > sistema que temos em Kylix e nossa preocupação é mais muito mais com a > usabilidade do usuário do que criar uma RIA propriamente dita. Para > você ter uma idéia, nós desenvolvedores relutamos em desenvolver um > requisto que era o pressionamento da tecla Enter para troca de campo. > Fizemos isso até o dia que nosso gerente veio e disse que no setor de > contabilidade da empresa o usuário segura uma nota fiscal com a mão > esquerda e digita no teclado numérico com a mão direita. Imagina esse > usuário tendo que girar seu tronco a cada dado digitado para > pressionar TAB para trocar de campo. Para muitos (inclusive para a > mim) isso, a princípio parece um absurdo, mas tem gente que passa o > dia executando tarefas repetitivas como esta e forçar o usuário o usar > o mouse ou qualquer outra coisa que não seja confortável para ele é > como dár-lhe chicotadas o dia inteiro. Voltando ao assunto inicial do > tópico, agora que já expliquei que tenho motivos para ter um campo > desse tipo, você poderia testá-lo e dar sua opinião e talvez até sua > contribuição com o componente né?... hheheh ... > > Abraços e obrigado por responder... > > On 2 set, 19:58, Michel Fernandes <miche...@gmail.com> wrote: > > 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) { > > > > ... > > > > 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 -~----------~----~----~----~------~----~------~--~---