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