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

Responder a