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