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
-~----------~----~----~----~------~----~------~--~---

Responder a