自定义日期字段组件,在flex 3中的下拉日历中包含comboBox和clear按钮

时间:2010-07-31 11:53:44

标签: flex date flex3 calendar

我插入了一个dateField组件。点击后,它会显示日历。我想添加2个组合框,一个显示小时(0到23),其他显示小时(0到59)到日历,以便用户可以选择时间和日期,并将在文本中显示输入日期和时间。我想添加的另一件事是清除日历中所选日期的清除按钮。

1 个答案:

答案 0 :(得分:1)

由于DateField本质上是一个TextInput加上DateChooser,为什么不亲自这样做呢?还要添加两个ComboBox,使您的TextInput可编辑=“false”text =“{dateTime}”,其中dateTime是您创建的Bindable字符串变量,作为DateChooser和两个ComboBox中值的串联。调用在所有三个输入的change事件上创建dateTime字符串的函数。

最后,添加清除Button,并将其click事件调用为将DateChooser设置为today,将两个组合框设置为默认值的函数,并根据需要更新dateTime字符串(空白或当前日期/时间)取决于你想要做什么。)

编辑: 正如你问得很好,当我正在为ACE考试而学习并认为这是一个很好的练习时,这就是我想出的。我在名为'components'的包中创建了以下自定义组件,并将其命名为'myCustomDateField.mxml'

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"
initialize="resetDisplay()">
<mx:DateFormatter id="dateFormat" formatString="DD-MMM-YYYY JJ:NN" />

<mx:Script>
<![CDATA[

[Bindable]
public var dateTime:Date;

     private function updateDisplay():void {
    var userDate:Date = new Date();
    userDate.date = cal.selectedDate.date;
    userDate.month = cal.selectedDate.month;
    userDate.fullYear = cal.selectedDate.fullYear;
    userDate.hours = hour.value;
    userDate.minutes = minute.value;
    dateTime = userDate;
}

private function resetDisplay():void {
    var now:Date = new Date();
    cal.selectedDate = now;
    hour.value = now.hours;
    minute.value = now.minutes;
    dateTime = now;
}

]]>
</mx:Script>

<mx:Label text="Select Date and Time:" />
<mx:TextInput id="display" text="{dateFormat.format(dateTime)}" editable="false" />
<mx:DateChooser id="cal" yearNavigationEnabled="true" change="updateDisplay()" />
<mx:Label text="Hour:" />
<mx:NumericStepper id="hour" minimum="0" maximum="23" change="updateDisplay()" />
<mx:Label text="Minute:" />
<mx:NumericStepper id="minute" minimum="0" maximum="59" change="updateDisplay()" />
<mx:Button label="Clear" click="resetDisplay()" />

</mx:HBox>

在我的应用程序中,我在声明标记中添加了xmlns:cust="components.*",并插入了一个<cust:myCustomDateFeild id="myDate" />.我可以使用{myDate.dateTime}.

访问父目录中的条目

我做了一些设计假设,你可能决定改变,就像格式化程序一样,我用NumericStepper替换你的组合框。