2011-01-31 4 views
0

Nous utilisons le mx: DateField pour nos dates et éditable = "true" afin que nous puissions choisir une date ou l'entrer aussi bien. L'exigence est que nous ne devrions pas être en mesure d'entrer plus de 10 caractères dans ce champ (10/10/2010). Mais le champ DateField n'a pas la propriété maxChars pour limiter cela.Flex DateField/DateChooser Problème

Nous avons donc essayé d'utiliser un champ de texte + DateChooser pour restreindre le nombre de caractères. Tout fonctionne comme vous le souhaitez, mais le problème est que le DateChooser affiche l'ensemble du calendrier sur la page et non comme une icône de calendrier qui fera apparaître un calendrier (en tant que DateField).

Alors maintenant, mon q est

1) Utilisation du DateField, comment puis-je limiter le nombre de caractères qui peuvent être saisis dans le champ de texte à 10

ou

2) Utilisation de la DateChooser, comment puis-je changer son apparence pour afficher une icône de calendrier, puis afficher le calendrier en tant que popup en cliquant dessus (similaire à DateField).

Si quelqu'un peut m'aider à ce sujet, ce serait merveilleux.

Répondre

2

Commencez avec quelque chose comme ceci:

<s:TextInput click="dc.visible=!dc.visible" maxChars="10" /> 
<mx:DateChooser id="dc" visible="false" /> 

De là, vous avez juste besoin de gérer les événements de clic à la date chooser et remplissez le textinput correctement

MISE À JOUR: Pour tenter de répondre à vos questions des commentaires

UI:

<s:HGroup> 
    <s:TextInput id="dateInput" click="dateInput_clickHandler(event)" maxChars="10" /> 
    <mx:DateChooser id="dc" visible="false" includeInLayout="false" change="dc_changeHandler(event)" /> 
</s:HGroup> 

Script:

protected function dateInput_clickHandler(event:MouseEvent):void 
{ 
    dc.includeInLayout = !dc.includeInLayout; 
    dc.visible = !dc.visible; 
} 

protected function dc_changeHandler(event:CalendarLayoutChangeEvent):void 
{  
    dateInput.text = dateFormatter.format(event.newDate); 
    dateInput_clickHandler(null); 
} 

Déclarations:

<mx:DateFormatter id="dateFormatter" formatString="MM/DD/YYYY" /> 

Hope this helps! -Ian

+0

Merci pour votre réponse Totec. Appréciez-le. Cela fonctionne, mais nous devons ensuite afficher une icône (ou quelque chose de similaire) à côté du champ de texte, afin que les utilisateurs sachent qu'ils doivent cliquer dessus pour afficher le calendrier et éditer également le champ de date. Des idées là-dessus? – Harry

+0

@Harish: Créez un habillage personnalisé pour votre TextInput en fonction du skin par défaut et ajoutez votre icône. –

+0

Je suis d'accord avec Wade. Créez un habillage personnalisé pour TextInput. Sous la section (en bas) après le composant RichEditableText ajouter une image pour l'icône de calendrier. –