Alguém?

Valeu,
-- 
Rodison dos Santos Ferreira
Analista de Sistemas
INSIDE SYSTEM INFORMÁTICA LTDA.
Florianópolis - Santa Catarina - Brazil
http://sites.google.com/site/rodisonferreira
http://www.twitter.com/rodison


2009/7/23 Rodison Ferreira <[email protected]>

> Oi pessoal, blz?
>
> Seguinte, preciso de uma ajudinha com um componente de DateField.
>
> Eu preciso de um DateField que permita que o usuário possa digitar uma data
> e que quando digitar a data vá colocando os "/" automaticamente.
>
> Procurei aqui na lista e não encontrei nenhum componente que faça isso,
> então, paciência, vamos lá criar ele :)
>
> Pra isso, eu fiz criei um StringDateFormatter com o seguinte código:
>
>
> package com.floripa.flex.formatter {import mx.formatters.Formatter;
> public class StringDateFormatter extends Formatter {
>    public function StringDateFormatter() {
>       super();
>    }
>
>    override public function format(value:Object):String {
>       var stringDataOriginal:String=value as String;
>       stringDataOriginal=stringDataOriginal.replace(/(\/)/g, "");
>       var dia:String="";
>       var mes:String="";
>       var ano:String="";
>       if (stringDataOriginal.length >= 1) {
>          dia=stringDataOriginal.substring(0, 2);
>       }
>       if (stringDataOriginal.length >= 3) {
>          mes=stringDataOriginal.substring(2, 4);
>       }
>       if (stringDataOriginal.length >= 5) {
>          ano=(stringDataOriginal.length == 6) ? 
> stringDataOriginal.substring(4, 6) : stringDataOriginal.substring(4,
>             8);
>       }
>       var dataFormatada:String="";
>       if (dia.length == 2) {
>          dataFormatada+=dia + "/";
>       } else {
>          return value as String;
>       }
>       if (mes.length == 2) {
>          dataFormatada+=mes + "/";
>       } else {
>          return dataFormatada + mes;
>       }
>       if (ano.length == 6 || ano.length == 8) {
>          dataFormatada+=ano;
>       } else {
>          return dataFormatada + ano;
>       }
>       return dataFormatada;
>    }
> }}
>
>
> Antes que falem algo, o código não tá otimizado ainda, tá? hehehehe. Vou
> otimizar o código depois, o que importa é que ele funcione primeiro, hehehe
> :)
>
> Vocês podem ver a tela e o código-fonte em
> http://www.insidesystem.com.br/galenus_teste
>
> Bem, e na minha tela (meu .mxml) estou usando ele assim:
>
>
> <?xml version="1.0" encoding="utf-8"?><mx:Application 
> xmlns:mx="http://www.adobe.com/2006/mxml"; layout="absolute"
>                 xmlns:formatter="com.floripa.flex.formatter.*" 
> viewSourceURL="srcview/index.html">
>
>    <mx:Script>
>       <![CDATA[
>          protected function formataCaracterData(campo:DateField, 
> evento:KeyboardEvent):void {
>             if (campo.text.length >= 7) {
>                return;
>             }
>             var stringDataFormatada:String=formatadorData.format(campo.text);
>             campo.text=stringDataFormatada;
>          }
>       ]]>
>    </mx:Script>
>
>    <formatter:StringDateFormatter id="formatadorData"/>
>
>    <mx:Form x="0" y="0" width="479" height="100%" paddingLeft="0" 
> paddingRight="0"
>             paddingTop="0" paddingBottom="0">
>       <mx:Canvas width="438" height="520">
>          <mx:FormItem label="Lalala" width="238" x="10" y="10" 
> required="true">
>             <mx:DateField id="inputData" width="185" toolTip="lalalá" 
> editable="true"
>                           keyUp="formataCaracterData(this.inputData, event)"/>
>          </mx:FormItem>
>       </mx:Canvas>
>    </mx:Form>
> </mx:Application>
>
>
> O código do meu StringDateFormatter criado está funcionando direitinho, o
> problema é que quando eu digito "01" (por exemplo), no DateField é escrito
> "01/". Beleza, direitinho como eu queria. O problema é que o cursor não está
> ficando depois do "/", mas sim antes do "/". Tanto que depois que eu digito
> o "01" eu tenho que clicar na tecla do direcional pro lado direito, pro
> cursor ficar depois do "/" que foi inserido e, daí, continuar digitando.
>
> Se vocês quiserem podem acessar o endereço
> http://www.insidesystem.com.br/galenus_teste e, na tela, digitar o
> seguinte valor 01022009 pra entenderem o meu drama :)
>
> Então, alguém sabe se tem como, depois que eu inserir o "/", fazer o cursor
> do campo ficar no final do texto?
> Valeu pessoal,
>
> --
> Rodison dos Santos Ferreira
> Analista de Sistemas
> INSIDE SYSTEM INFORMÁTICA LTDA.
> Florianópolis - Santa Catarina - Brazil
> http://sites.google.com/site/rodisonferreira
> http://www.twitter.com/rodison
>

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a