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