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