Flex 4 DateChooser

У меня есть массив дней. Я хочу, чтобы в те дни в компоненте DateChooser был другой цвет фона, например красный.

Как я могу это сделать?


person Francisc    schedule 28.09.2010    source источник


Ответы (3)


DateChooser не так-то просто настроить!

Что-то близкое к этому будет работать, хотя вам нужно будет немного подправить его, чтобы оно соответствовало тому, что вы хотите делать.

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;
            }
        }
    }
}
person Gregor Kiddie    schedule 28.09.2010
comment
Спасибо, Грегор. Что будет делать. Я надеялся, что мне не придется расширять класс, но, похоже, я не могу обойтись без него. Интересно, хватит ли кастомного скина? - person Francisc; 28.09.2010

Спасибо за долю Грегора Кидди. Я немного изменил код Грегора Кидди. Пусть может вводить несколько дат.

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;
                    }
                }
            }
        }
person Michael    schedule 04.01.2011

Вы должны использовать disabledRanges и disabledColor. Вот example в разделе" Примеры Flex ".

person splash    schedule 28.09.2010
comment
Но я не хочу отключать их, я хочу, чтобы их можно было использовать, просто помеченные. Плюс есть 2 или 3 цвета, которые я хочу использовать. - person Francisc; 28.09.2010
comment
Ой, я спал у выключателя. - person splash; 28.09.2010