2010-09-28 7 views
2

J'ai un tableau de jours. Je veux que ces jours aient une couleur de fond différente dans le composant DateChooser, disons rouge.Flex 4 DateChooser

Comment puis-je faire cela s'il vous plaît?

Répondre

3

Le DateChooser est pas facile à personnaliser!

Quelque chose proche de cela fonctionnera, mais vous aurez besoin de ruser un peu en fonction de ce que vous voulez faire.

public class FancyDateChooser extends DateChooser { 
    public var fancyStyleName : String; 
    public var dayToMakeFancy : String; 

    protected override createChildren() : void { 
     super.createChildren(); 
     var dateGrid : UIComponent = mx_internal::dateGrid; 
     for (var i: int = 0; i < dateGrid.numChidren; i++) { 
      if ((dateGrid.getChildAt(i) as IUITextField).text == dayToMakeFancy) { 
       dateGrid.getChildAt(i).styleName = fancyStyleName; 
      } 
     } 
    } 
} 
+0

Merci, Gregor. Cela fera l'affaire. J'espérais ne pas devoir prolonger le cours, mais il semble que je ne puisse pas m'en passer. Je me demande si une peau personnalisée suffira cependant. – Francisc

0

Vous devez utiliser disabledRanges et disabledColor. Voici un example sur "Flex exemples".

+0

Mais je ne veux pas les désactiver, je les veux utilisables, juste balisés. De plus, il y a 2 ou 3 couleurs que je veux utiliser. – Francisc

+0

Oups, j'étais endormi au commutateur. – splash

+0

Pas de problème, merci d'avoir essayé. :) – Francisc

2

Merci pour la part de Gregor Kiddie. J'ai modifié un peu le code de Gregor Kiddie. Laissez-le entrer plusieurs dates.

public class MyDateChooser extends DateChooser 
{ 
    public var highlightColor : Number = 0xff0000; // sample 
    public var highlightDate : Array = ["10","20"]; // sample 

    public function MyDateChooser() 
    { 
     super(); 
    } 

    protected override function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { 
        super.updateDisplayList(unscaledWidth, unscaledHeight); 
        var dateGrid : UIComponent = mx_internal::dateGrid; 
        for (var i: int = 0; i < dateGrid.numChildren; i++) { 
      if (dateGrid.getChildAt(i) is IUITextField) { 
       var textField:UITextField = dateGrid.getChildAt(i) as UITextField; 
       for (var j:int = 0; j<highlightDate.length; j++) { 
        if (textField.text == highlightDate[j]) { 
         textField.textColor = highlightColor; 
        } 
       } 
      } 
        }