У меня есть массив дней. Я хочу, чтобы те дни имели другой фоновый цвет в компоненте DateChooser, например красный.Flex 4 DateChooser
Как я могу это сделать?
У меня есть массив дней. Я хочу, чтобы те дни имели другой фоновый цвет в компоненте DateChooser, например красный.Flex 4 DateChooser
Как я могу это сделать?
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;
}
}
}
}
Вы должны использовать disabledRanges и disabledColor. Ниже приведен пример example «Примеры Flex».
Благодарим за долю Грегора Кидди. Я немного изменил код Грегора Кидди. Пусть он может вводить несколько дат.
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;
}
}
}
}
Спасибо, Грегор. Что будет делать. Я надеялся, что мне не придется расширять класс, но, похоже, я не могу уйти без него. Интересно, будет ли пользовательский скин. – Francisc