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