加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex组件 DateField

发布时间:2020-12-15 01:20:12 所属栏目:百科 来源:网络整理
导读:? 转冷枫的,他写的太详细了, 日期选取组件用于显示日历和进行某天的选择,使用的是AS中的Date类。 创建DateChooser组件 下面的例子创建了一个日历组件,并且选中日期为2004年12月22号: mx:DateChooser id='date1' mx:selectedDate mx:Date month='12' dat
?

转冷枫的,他写的太详细了,
日期选取组件用于显示日历和进行某天的选择,使用的是AS中的Date类。
创建DateChooser组件
下面的例子创建了一个日历组件,并且选中日期为2004年12月22号:

<mx:DateChooser id='date1' >

<mx:selectedDate>

<mx:Date month='12' date='12' year='2004' />

</mx:selectedDate>

</mx:DateChooser>

我们还可以通过脚本的方式来设置选中日期

<mx:Script>
<![CDATA[
function initDC()
{
date1.selectedDate= new Date (2004,12,12);
}
]]>
</mx:Script>
<mx:DateChooser id='date1' initialize='initDC();' />

DateChooser组件使用了AS的Date类的一些方法
可以使用get和set方法来获取选中的日期值以及设置日期值。下面的例子比较详细的描述了DateChooser组件的使用。

<mx:Script>

<![CDATA[

function useDate(eventObj)
{

//Access the Date object from the event object.


day.text=eventObj.target.selectedDate.getDay();


date.text=eventObj.target.selectedDate.getDate();


month.text=eventObj.target.selectedDate.getMonth();


year.text=eventObj.target.selectedDate.getFullYear();

wholeDate.text=eventObj.target.selectedDate.getFullYear() +

'/' + (eventObj.target.selectedDate.getMonth()+1) +

'/' + eventObj.target.selectedDate.getDate();

}

]]>

</mx:Script>

<mx:DateChooser id='date1' change='useDate(event)' />

<mx:Form>

<mx:FormItem label='Day' >

<mx:TextInput id='day' width='100' />

</mx:FormItem >

<mx:FormItem label='Day of month' >

<mx:TextInput id='date' width='100' />

</mx:FormItem >

<mx:FormItem label='Month' >

<mx:TextInput id='month' width='100' />

</mx:FormItem >

<mx:FormItem label='Year' >

<mx:TextInput id='year' width='100' />

</mx:FormItem >

<mx:FormItem label='Date' >

<mx:TextInput id='wholeDate' width='300' />

</mx:FormItem >

</mx:Form>

这个例子通过响应组件的change事件来获取选中的日期信息,相信大家也不难看懂。

禁用某个日期段的选取
假如要禁用周一到周四的日期选择,可以使用
<mx:DateChooser id='date1' >

<mx:disabledDays>
<mx:Array>
<mx:String>1</mx:String>

<mx:String>2</mx:String>

<mx:String>3</mx:String>

<mx:String>4</mx:String>

</mx:Array>

</mx:disabledDays>

</mx:DateChooser>

更简单的写法为:

<mx:DateChooser id='date1' disabledDays='[1,2,3,4]' />

或者

<mx:Script>
<![CDATA[
function initDC()
{
date1.disabledDays=[1,4];
}
]]>
</mx:Script>

<mx:DateChooser id='date1' initialize='initDC();' />

个人觉得第三种方法比较通用,可以对日历进行初始化的设置。
注意:正确的说法应该是禁用第2~5列的日期。

更改星期名称
默认的日历星期名显示为英文,如果要更改成中文名称,可以用:

<mx:DateChooser id='date1' change='useDate(event);' >

<mx:dayNames>

<mx:Array>

<mx:String>日</mx:String>

<mx:String>一</mx:String>

<mx:String>二</mx:String>

<mx:String>三</mx:String>

<mx:String>四</mx:String>

<mx:String>五</mx:String>

<mx:String>六</mx:String>
</mx:Array>

</mx:dayNames>

</mx:DateChooser>

请注意,如果没有其它设置,数组的第一个元素就表示一周的第一天。当然,最简洁的还是AS的实现方法,而且更加灵活。

//设置星期显示名称

date1.dayNames=['日','一','二','三','四','五','六'];

//把周一作为每周的第一天

date1.myDC.firstDayOfWeek = 1;

//设置日历头部样式为绿色

date1.setStyle('headerColor',0x00ff00);

//设置字体样式为斜体

date1.setStyle('fontStyle','italic');

//设置日历的选择范围2004.1.1~2004.12.23

date1.selectableRange =

{ rangeStart: new Date(2004,1,1),rangeEnd: new Date(2004,23) };

DateChooser组件的常用属性和事件还有

01 :
02 : dayNames //星期的名称显示
03 : disabledDays //不可用的星期
04 : disabledRanges //不可用的日期范围
05 : displayedMonth //当前显示的月份
06 : displayedYear //当前显示的年份
07 : firstDayOfWeek //每周的第一天( 0~6 0表示dayNames中的第一个元素,依次类推 )
08 : headerStyle //头部样式
09 : todayStyle //今天的样式
10 : weekDayStyle //周末的样式
11 : monthNames //月份的名称显示
12 : selectableRange //可以选择的日期范围 由rangeStart 和 rangeEnd 指定
13 : selectedDate //选中的日期
14 : showToday //是否高亮显示今天的日期
15 :
16 : change //选中日期的事件响应
17 : scroll //移动的事件响应

通过对这些属性的设置你可以定义更强大的日历组件了。

?

?

?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

?

?

?
  1. 1、<mx:DateField?yearNavigationEnabled="true"?change="dateChanged(DateField(event.target).selectedDate)"?/> ??
  2. ??
  3. yearNavigationEnabled="true"?这个可以直接上调下调年份,比按前后箭头方便些 ??
  4. ??
  5. 2、<mx:DateField?id="dateField2"?yearNavigationEnabled="true"??
  6. ????????????disabledRanges="{[?{rangeEnd:?new?Date(2006,?5,?1)}?]}"?/> ??
  7. ??
  8. 200651日以前的不可选 ??
  9. ??
  10. 3、<mx:DateField?id="dateField2"?yearNavigationEnabled="true"??
  11. ????????????selectableRange="{{rangeStart?:?new?Date(2006,?rangeEnd?:?new?Date(2006,5,30)}}"?/> ??
  12. ??
  13. 日期可选范围 ??
  14. ??
  15. 4、<mx:DateField?id="dateField2"?yearNavigationEnabled="true"??
  16. ????????????selectableRange="{{rangeStart?:?new?Date(2006,30)}}"?formatString="YYYY-MM-DD"?/> ??
  17. ??
  18. 文本字段中所显示日期的格式。此属性包含?"MM""DD""YY""YYYY"、分隔符和标点符号的任意组合。 ??
  19. ??
  20. 5、显示格式若干属性:如,minYear最小年份,monthNames月份名,monthSymbol月份名后面的显示,showToday当日加亮,firstDayOfWeek?第一列显示的星期 ??
  21. ??
  22. 6、待。。。。。??


?

?
  1. <?xml?version="1.0"?encoding="utf-8"?> ??
  2. <mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"??
  3. layout="absolute"??
  4. verticalAlign="middle"??
  5. backgroundColor="#FCF9F9"> ??
  6. ??
  7. ??
  8. ??
  9. ????<mx:ComboBox?x="10"?y="168"></mx:ComboBox> ??
  10. ??
  11. ??
  12. ????<mx:ComboBox?x="10"?y="248"></mx:ComboBox> ??
  13. ????<mx:DateField?x="237"?y="168"?width="369"?height="34"?yearNavigationEnabled="true"??monthSymbol="月月发工资"??yearSymbol="年年有余"?dayNames="[日,一,二,三,四,五,六]"? ??
  14. ????????monthNames="[一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月]"?formatString="MM-DD-YYYY"/> ??
  15. ???? ??
  16. ????<mx:DateField?x="10"?y="299"?yearNavigationEnabled="true"??
  17. ??????????dayNames="[日,一,二,三,四,五,六]"?monthNames="[一月,二月,三月,四月,五月,六月,七月,八月,九月,十,??????十一月,十二月]"?formatString="YYYY-MM-DD"?width="156"?height="38"/> ??
  18. ??
  19. </mx:Application>? ??
  20. ???

?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

?

?

?

DataField控件可以让用户在图形化日历中选择日期。DateChooser控件的用户界面是日历。DateField控件有一个文本框,使用在弹出的日期选择器中选择的日期作为结果。DateField控件的属性集市DateChooser控件属性集的超集。

DateField这个控件由于功能单一,没什么好拓展的,所以比较简单。先举个例子
view plain copy to clipboard print ?
  1. <?xml?version="1.0"?encoding="utf-8"?>??
  2. <!--?Simple?example?to?demonstrate?the?DateField?control.?-->??
  3. <mx:Application?xmlns:mx="http://www.adobe.com/2006/mxml"?layout="horizontal"?verticalAlign="top"??
  4. ????horizontalAlign="center"?backgroundGradientColors="[0x000000,0x323232]"?paddingTop="0"?paddingBottom="0"?viewSourceURL="srcview/index.html">??
  5. ??
  6. ????<mx:Script>??
  7. ??????<!--[CDATA[??
  8. ??
  9. ?????????//?Event?handler?for?the?DateField?change?event. ??
  10. ?????????private?function?dateChanged(date:Date):void?{??
  11. ????????????if?(date?==?null)??
  12. ????????????????selection.text?=?"Date?selected:?";??????????????????
  13. ????????????else??
  14. ????????????????selection.text?=?"Date?selected:?"?+?date.getFullYear().toString()?+???
  15. ????????????????????'/'?+?(date.getMonth()+1).toString()?+?'/'?+?date.getDate();??
  16. ?????????}??
  17. ??????]]-->??
  18. ????</mx:Script>??
  19. ???
  20. ?<mx:DateFormatter?id="df"/>??
  21. ??
  22. ????<mx:Panel?title="DateField?Control?Example"?width="600"?color="0xffffff"?borderAlpha="0.15"?height="240"??
  23. ???????layout="horizontal"?horizontalGap="15"?paddingLeft="10"?paddingTop="10"?paddingRight="10"?paddingBottom="10"?horizontalScrollPolicy="off"?verticalScrollPolicy="off">??
  24. ??????????
  25. ????????<mx:VBox?width="50%"?borderColor="0xDCDCDC"?borderStyle="solid"?height="100%"?paddingLeft="10">??
  26. ????????????<mx:Label?id="selection"?color="0x323232"?text="Date?selected:"?/>??
  27. ??????????????
  28. ????????????<mx:DateField?id="dateField1"?yearNavigationEnabled="true"??
  29. ????????????????change="dateChanged(DateField(event.target).selectedDate)"?color="0x000000"/>??
  30. ??????????????????
  31. ????????????<mx:Label?color="0x000000"?text="Basic?DateField:"/>??
  32. ????????????<mx:Text?width="100%"?color="0x323232"??
  33. ????????????????text="Select?a?date?in?the?DateField?control.?Select?it?again?while?holding?down?the?Control?key?to?clear?it."/>??
  34. ??????????????
  35. ????????</mx:VBox>??
  36. ??????????
  37. ????????<mx:VBox?width="50%"?borderColor="0xDCDCDC"?borderStyle="solid"?height="100%"?paddingLeft="10">??
  38. ????????????<mx:Label?color="0x323232"?text="Date?selected:?{df.format(dateField2.selectedDate)}"/>??
  39. ??????????????
  40. ????????????<mx:DateField?id="dateField2"?yearNavigationEnabled="true"???
  41. ????????????????disabledRanges="{[?{rangeEnd:?new?Date(2008,?9,?31)}?]}"?color="0x000000"/>??
  42. ??????????????????
  43. ????????????<mx:Text?color="0x000000"?text="Disable?dates?on?or?before?Oct?31,?2008."/>??
  44. ????????</mx:VBox>??
  45. ??????????
  46. ????</mx:Panel>??
  47. </mx:Application>??
基本上DateField组件的使用和DateChooser差不多,掌握了DateChooser组件,DateField自然就不成问题。
另外注意知道的是DateField组件比DateChooser组件多了两个事件:
open 点击打开DateChooser组件的事件响应
close 用户选择了日期或者在DateChooser组件之外点击的事件响应
???
用以下方法来初始化Datafield
<mx:DateField id="date3" selectedDate="{new Date (2005,10)}"/>

?

下面讲下如何格式化时间,其实很简单DataField可以使用formatString来格式化
view plain copy to clipboard print ?
  1. <mx:DateField??monthNames='["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]'?formatString="YYYY-MM-DD"?width="120"/>??
最后讲下和时间格式相关的DateFormatter,注意格式表达式和JAVA中的不同
view plain copy to clipboard print ?
  1. private?static?var?dateFormatter:DateFormatter?=?new?DateFormatter();??
  2. ??/**?
  3. ???*?格式化日期,封装mx.formatters.DateFormatter类?
  4. ???*?可以在模式字符串中添加其它文本,以进一步设置字符串格式。可以使用标点、数字和所有小写字母。?
  5. ???*?应该避免使用大写字母,因为大写字母可能被解读为模式字母。?
  6. ???*??
  7. ???*?年份?
  8. ???*?YY?=?05?
  9. ???*?YYYY?=?2005?
  10. ???*?YYYYY?=?02005?
  11. ???*??
  12. ???*?一年中的月份?
  13. ???*?M?=?7?
  14. ???*?MM=?07?
  15. ???*?MMM=Jul?
  16. ???*?MMMM=?July?
  17. ???*??
  18. ???*?一月中的日期?
  19. ???*?D=4?
  20. ???*?DD=04?
  21. ???*?DD=10?
  22. ???*??
  23. ???*?星期中的天?
  24. ???*?E?=?1?
  25. ???*?EE?=?01?
  26. ???*?EEE?=?Mon?
  27. ???*?EEEE?=?Monday?
  28. ???*??
  29. ???*?A?am/pm?标记。??
  30. ???*??
  31. ???*?J?一天中的小时数?(0-23)。??
  32. ???*??
  33. ???*?H?一天中的小时数?(1-24)。??
  34. ???*??
  35. ???*?K?am/pm?中的小时数?(0-11)。??
  36. ???*??
  37. ???*?L?am/pm?中的小时数?(1-12)。??
  38. ???*??
  39. ???*?小时中的分钟数?
  40. ???*?N?=?3?
  41. ???*?NN?=?03?
  42. ???*??
  43. ???*?分钟中的秒数?
  44. ???*?SS?=?30?
  45. ???*??
  46. ???*?@param?value?日期?
  47. ???*?@param?formatString?格式?
  48. ???*?@param?return?指定格式的字符串?
  49. ???*/??
  50. ??public?static?function?formatDate(value:Object,?formatString:String="YYYY-MM-DD"):String?{??
  51. ???if?(value?==?null?||?StringUtil.trim(value.toString()).length?<=?0)?{??
  52. ????return?"-";??
  53. ???}??
  54. ???dateFormatter.formatString?=?formatString;??
  55. ???return?dateFormatter.format(value);??
  56. ??}??

?http://www.voidcn.com/article/p-hcjvuprn-hs.html

http://varyall.iteye.com/blog/806659

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读