2009-09-16 9 views
3

J'ai besoin d'un sélecteur de temps pour une application flexible, et autant que je sache, il n'y a pas de composant UI pour manipuler des objets à une résolution plus fine que par jour (le composant DateChooser).Y a-t-il un bon composant de sélection de date/heure Flex (3)?

Quel est le bon choix pour Flex? Je préfère fortement un composant Free in Libre et/ou Free comme dans Beer.

Répondre

4

Cela devrait fonctionner pour vous: http://joelhooks.com/2008/10/11/flex-date-and-time-datetime-picker-control/

Il y a une démo et un lien vers le code source juste au-dessus.

+0

Merci. C'est celui que j'utilise actuellement, mais je ne suis pas terriblement content de ça. Cela fonctionne cependant. Donc, si personne n'en a un meilleur, je marquerai cela comme accepté bientôt. –

1

Le Yahoo! Astra TimeInput et TimeStepper sont utiles.

http://developer.yahoo.com/flash/astra-flex/timeinput/

http://developer.yahoo.com/flash/astra-flex/timestepper/

Cependant, apparemment, il y a un problème lors de leur utilisation avec le SDK Flex 4 et il semble Yahoo! Actuellement, il ne prévoit pas de mettre à jour ses composants Astra.

Vous pouvez consulter ce lien pour une version qui fonctionne avec Flex 4. https://github.com/joshtynjala/astra-flex

Je pense qu'une entrée de temps serait un bon candidat pour un composant Flex SDK natif.

0

Essayez ce code: Cela sera utile à l'entrée HH: MM 12hr sans AM/PM

code MXML:

<Timepicker maxChars="5" restrict="0-9" /> 

code ActionScript:

package 
{ 
import flash.events.KeyboardEvent; 

import mx.controls.TextInput; 

public class Timepicker extends TextInput 
{ 
    public function Timepicker() 
    { 
    } 

    override protected function keyUpHandler(event:KeyboardEvent):void 
    { 
     super.keyUpHandler(event); 

     if (text.length == 0) 
     { 
      return; 
     } 
     var keyDel:Boolean=false; 
     if (event.charCode == 8 || event.charCode == 46) 
      keyDel=true; 
     var numberString:String=text; 
     if (keyDel) 
      text=numberString; 

     if (numberString.length > 0 && !keyDel) 
     { 
      if (numberString.length == 2 && numberString.indexOf(":") == -1) 
      { 
       text=numberString; 
       textField.appendText(":"); 
      } 
      else if (numberString.length >= 4 && Number(numberString.charAt(3)) > 5) 
      { 
       text=numberString.substr(0, 3) 
      } 
      else if (numberString.length == 3 && numberString.charAt(2) != ":") 
      { 
       if (Number(numberString.charAt(2)) <= 5) 
       { 
        var fourthDigit:String=numberString.charAt(2); 
        super.textField.text=""; 
        super.textField.appendText(numberString.substring(0, 2) + ":" + fourthDigit); 
       } 
       else 
       { 
        super.textField.text=""; 
        super.textField.appendText(numberString.substring(0, 2) + ":"); 
       } 
      } 
      textField.setSelection(textField.length, textField.length); 

     } 
    } 

    override protected function keyDownHandler(event:KeyboardEvent):void 
    { 
     super.keyDownHandler(event); 
     var keyDel:Boolean=false; 
     if (event.charCode == 8 || event.charCode == 46) 
      keyDel=true; 

     super.text=text; 
     if (super.text.length == 0) 
     { 
      var inputVal:String=String.fromCharCode(event.charCode); 
      if (Number(inputVal) > 1) 
      { 
       super.textField.appendText("0" + inputVal + ":"); 
      } 
     } 
     super.textField.setSelection(super.textField.length, super.textField.length); 
    } 

} 

}

Questions connexes