首页 > 代码库 > Flex 日期区域控件

Flex 日期区域控件

     日期区域空间(DateField Control)由一个文本输入控件和一个日历图标组成。

     用户可以在文本输入控件中输入日期,或者单击日历图标弹出日期选择器后,在日期选择器中选择合适的日期。

 

      

 

    1、日期区域控件标签

       对应的MXML标签为<mx:DateField>.

      该控件的属性融合文本输入控件的属性和日期选择器控件的属性。除此之外,自身的常用属性如图所示:

 

在labelFunction指明的方法中,参数为Date类型,返回值类型为String,格式如下所示:

public function formatDate(currentDate:Date):String{

     //定义方法内容

    return dateString;

}

参数说明:currentDate:选择的时间。

 

在parseFunction指明的方法中,包含两个参数,返回值为Date类型,格式如下所示:

public function parseDate(valueString:string,inputFormat:String):Date{

    //定义方法内容

   return newDate

}

参数说明:valueString:用户输入的日期。

              inputFormat:日期的格式,如MM/DD/YYYY。

 

labelFunction和parseFunction属性通常一起使用,用来格式化日期区域控件的日期格式。如果这两个属性在一起使用,如不指定处理方法,应将属性设为null。

 

注意:控件中的文本输入属性editeable为true时,用户可以收工输入日期。为false时,用户不能输入日期,只能在单击控件时,在自动弹出的时间选择器中选择日期。

 

2.事件

日期区域控件中可触发的事件包括如下5个:

change:改变选择日期或者关闭日期选择器时,该事件被触发。对象类型:mx.events.CalendarLayoutChangeEvent。

dataChange:日期改变时该事件被触发。常与data属性一起出现。

close:在日期选择器中选择日期后,或者用户单击组件外部区域关闭日期选择器后触发该事件。对象类型:mx.events.DropdownEvent。

open:当用户选择控件区域打开下拉箭头时触发的事件。事件对象类型: mx.events.Dropdown Event。

scroll:在改变日期选择器中月份时触发该事件。事件对象类型:mx.events.DateChooserEvent。

 

3.格式化日期

       除了使用控件的属性格式化日期外,还可以使用formatDate()方法以及<mx:DateFormatter>标签指定日期格式。在labelFunction和parseFunction指定的方法格式化数据时,如果定义了<mx:DateFormatter>标签,在labelFunction指定的方法中,可以调用<mx:DateFormatter>对象格式化日期,代码如下所示:

<fx:Script>
    <![CDATA[

           private function formatDate(date:Date):String{

          return formatter.format(date);

}

]]>

</fx:Script>

 

<!--使用DateFormatter对象的formatString属性指定格式-->

   <mx:DateFormatter id="formatter" formatString="YYYY/MM/DD"/>

  <mx:DateField id="df" labelFunction="formatDate" parseFunction="null"/>

 

4.创建日期区域控件

 1 <?xml version="1.0" encoding="utf-8"?> 2 <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"  3                        xmlns:s="library://ns.adobe.com/flex/spark"  4                        xmlns:mx="library://ns.adobe.com/flex/mx"> 5     <fx:Declarations> 6         <!-- 将非可视元素(例如服务、值对象)放在此处 --> 7         <!--定义时间格式--> 8         <mx:DateFormatter id="formater" formatString="YYYY.MM.DD"/> 9     </fx:Declarations>10     <fx:Script>11         <![CDATA[12             import mx.controls.Alert;13             import mx.events.CalendarLayoutChangeEvent;14             15             //处理时间选择器日期时间16             private  function parseChooser(date:Date):String17             {18                 var d:String = formater.format(date);19                 return d;20             }21             22             //处理选择完毕后的事件23             private function submitDate():void{24                 var start:String = dateField1.text;25                 var end:String = dateField2.text;26                 mx.controls.Alert.show("您选择的日期为"+start+"到"+end,"提示");27             }28             29             //清空输入的日期30             private function clear():void{31             32                 dateField1.text="";33                 dateField2.text="";34             }35             36         ]]>37     </fx:Script>38     39     40 41       <mx:Panel title="时间区域控件例子" height="192" width="310" paddingTop="10"42                 paddingLeft="10" paddingRight="10">43           <mx:Label width="100%"44                     text="请选择查询的日期,日期格式为 年.月.日"/>45           <!--定义开始时间选择,定义时间范围为2000年1月1日到2007年10月15日,允许用户输入时间,并改变日期选择器选择的时间格式-->46           <mx:HBox width="207">47               <mx:Label text="起始时间"/>48               <mx:DateField id="dateField1"49                             labelFunction="parseChooser"50                             parseFunction="null"51                             yearNavigationEnabled="true"52                             editable="true"53                             selectableRange="{{rangeStart:new Date(2000,0,1),rangeEnd:new Date(2007,9,15)}}"/>54           </mx:HBox>55           56           <!--定义结束时间选择,与开始时间选择相类似-->57           <mx:HBox width="206">58               <mx:Label text="截至日期"/>59               <mx:DateField id="dateField2"60                             labelFunction="parseChooser"61                             parseFunction="null"62                             yearNavigationEnabled="true"63                             editable="true"64                             selectableRange="{{rangeStart:new Date(2000,0,1),rangeEnd:new Date(2007,9,15)}}"/>65                             66           </mx:HBox>67           <mx:HBox width="206">68               <mx:Button label="确定" click="submitDate()"/>69               <mx:Button label="重置" click="clear()"/>70               71           </mx:HBox>72           73       </mx:Panel>74 </s:WindowedApplication>

 

Flex 日期区域控件