Da uma olhadinha ehn: www.flexpernambuco.com.br

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

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


-- 
PEREIRA, F.L.
LCA - Laboratório de Computação Aplicada - Coordenador de Projetos
SisNET - Professor de PHP do Curso Superior de Sistemas para Internet
UNIVALI - Universidade do Vale do Itajaí

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