YJQDateField.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <s:HGroup xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx"
- horizontalAlign="left"
- width="176" height="22">
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- </fx:Declarations>
- <fx:Script>
- <![CDATA[
- import mx.controls.DateField;
- import mx.core.FlexGlobals;
- import mx.core.INavigatorContent;
- import mx.formatters.DateFormatter;
- import mx.managers.PopUpManager;
- [Bindable]
- /**
- * 控件是否可以直接输入日期
- */
- public var editable:Boolean;
- [Bindable]
- /**
- * 日期格式 YYYY MM DD HH NN SS
- */
- public var formatString:String ="YYYY-MM-DD HH:NN:SS";
- [Bindable]
- private var _date:Date = new Date();
- private var _year:int=0,_month:int=0,_day:int=0,_hour:int=0,_minute:int=0,_second:int=0;
- /**
- * 设置显示日期字符串
- */
- public function set text(value:String):void
- {
- _date=DateFormatter.parseDateString(value);
- }
- /**
- * 设置日期
- */
- public function set date(value:Date):void
- {
- _year = value.fullYear;
- _month = value.month;
- _day =value.day;
- _minute=value.minutes;
- _hour=value.hours;
- _second=value.seconds;
- _date = value;
- }
- /**
- * 获取控件时间
- */
- public function get date():Date
- {
- return _date;
- }
- /**
- * 获取Chooser日期
- */
- public function onGetDate(y:int,mo:int,d:int,h:int,mi:int,s:int):void
- {
- this._year=y;
- this._month = mo;
- this._day = d;
- this._hour = h;
- this._minute = mi;
- this._second = s;
- _date = new Date(_year,_month,_day,_hour,_minute,_second);
- _inSelected = false;
- }
- private var _inSelected:Boolean = false;
- /**
- * 选择年月日
- */
- protected function chooseDate_LBtn_clickHandler(event:MouseEvent):void
- {
- // TODO Auto-generated method stub
- if(_inSelected == true)
- return ;
- var dateChooser:YJQChooseDate = new YJQChooseDate();
- dateChooser.setDate(date.fullYear,date.month,date.date,date.hours,date.minutes,date.seconds);
- dateChooser.onReturnTime = onGetDate;
- dateChooser.cancelHandler = function():void
- {
- _inSelected = false;
- }
- dateChooser.x = event.stageX;
- dateChooser.y = event.stageY;
- PopUpManager.addPopUp(dateChooser,FlexGlobals.topLevelApplication as DisplayObject);
- _inSelected = true;
- }
- private function DateToString(d:Date,format:String):String
- {
- //YYYY-MM-DD HH:NN:SS
- var str:String = format;
- str=str.replace("YYYY",d.fullYear);
- str = str.replace("MM",d.month+1);
- str=str.replace("DD",d.date);
- str=str.replace("HH",d.hours);
- str=str.replace("NN",d.minutes);
- str=str.replace("SS",d.seconds);
- return str;
- }
- override public function toString():String
- {
- return DateToString(_date,formatString);
- }
- ]]>
- </fx:Script>
- <s:TextInput id="date_input" text="{DateToString(_date,formatString)}" height="100%" width="100%" />
- <mx:LinkButton label=">>" id="chooseDate_LBtn" click="chooseDate_LBtn_clickHandler(event)" />
- </s:HGroup>
- <?xml version="1.0" encoding="utf-8"?>
- <s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx"
- minWidth="200" maxWidth="200"
- minHeight="260" maxHeight="260"
- width="200" height="260">
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- </fx:Declarations>
- <fx:Script>
- <![CDATA[
- import mx.events.FlexEvent;
- import mx.managers.PopUpManager;
- /**
- * year month day hour minute second
- */
- public var onReturnTime:Function;
- [Bindable]
- private var _hour:int = 0;
- [Bindable]
- private var _minute:int =0;
- [Bindable]
- private var _second:int =0;
- private var _year:int,_month:int,_day:int;
- /**
- * 设置日期
- */
- public function setDate(year:int,month:int,day:int ,hour:int,minute:int,second:int):void
- {
- _year=year;
- _month=month;
- _day=day;
- _hour = hour;
- _minute=minute;
- _second=second;
- }
- /**
- * 输入小时是否合理
- */
- protected function hour_focusOutHandler(event:FocusEvent):void
- {
- if(isNaN(Number(hour.text)))
- {
- hour.text=_hour.toString();
- return;
- }
- _hour = int(hour.text);
- if(_hour<0)
- _hour=0;
- else if(_hour>23)
- _hour=23;
- hour.text = _hour.toString();
- }
- /**
- * 输入分钟是否合理
- */
- protected function minute_focusOutHandler(event:FocusEvent):void
- {
- if(isNaN(Number(minute.text)))
- {
- minute.text=_minute.toString();
- return;
- }
- _minute = int(minute.text);
- if(_minute<0)
- _minute=0;
- else if(_minute>59)
- _minute=59;
- minute.text = _minute.toString();
- }
- /**
- * 输入秒是否合理
- */
- protected function second_focusOutHandler(event:FocusEvent):void
- {
- if(isNaN(Number(second.text)))
- {
- second.text=_second.toString();
- return;
- }
- _second = int(second.text);
- if(_second<0)
- _second=0;
- else if(_second>59)
- _second=59;
- second.text = _second.toString();
- }
- /**
- * 双击代表选择
- */
- protected function vgroup1_doubleClickHandler(event:MouseEvent):void
- {
- ok_clickHandler(null);
- }
- /**
- * 返回日期
- */
- protected function ok_clickHandler(event:MouseEvent):void
- {
- // TODO Auto-generated method stub
- var date:Date = dateChosser.selectedDate;
- onReturnTime(date.fullYear,date.month,date.day,_hour,_minute,_second);
- try
- {
- PopUpManager.removePopUp(this);
- }
- catch(error:Error)
- {
- this.parent.removeChild(this);
- }
- }
- public var cancelHandler:Function;
- /**
- * 取消日期选择
- */
- protected function cancel_clickHandler(event:MouseEvent):void
- {
- try
- {
- PopUpManager.removePopUp(this);
- }
- catch(error:Error)
- {
- this.parent.removeChild(this);
- }
- cancelHandler();
- }
- /**
- * DateChooser加载完成后执行
- */
- protected function dateChosser_creationCompleteHandler(event:FlexEvent):void
- {
- // TODO Auto-generated method stub
- dateChosser.selectedDate .setFullYear(_year,_month,_day);
- }
- ]]>
- </fx:Script>
- <s:VGroup width="100%" height="100%" >
- <mx:DateChooser width="100%" id="dateChosser" >
- </mx:DateChooser>
- <s:HGroup paddingTop="0" paddingLeft="10" width="100%" horizontalAlign="left">
- <s:TextInput id="hour" width="23" text="{this._hour.toString()}" focusOut="hour_focusOutHandler(event)" />
- <s:Label paddingTop="4" text="时:" />
- <s:TextInput id="minute" width="21" text="{this._minute.toString()}" focusOut="minute_focusOutHandler(event)"/>
- <s:Label paddingTop="4" text="分:" />
- <s:TextInput id="second" width="22" text="{this._second.toString()}" focusOut="second_focusOutHandler(event)"/>
- <s:Label paddingTop="4" text="秒:" />
- </s:HGroup>
- <s:HGroup width="100%" horizontalCenter="true" >
- <s:Button label="确定" id="ok" click="ok_clickHandler(event)" />
- <mx:Spacer width="100%" />
- <s:Button label="取消" id="cancel" click="cancel_clickHandler(event)" />
- </s:HGroup>
- </s:VGroup>
- </s:BorderContainer>
- <?xml version="1.0" encoding="utf-8"?>
- <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx"
- creationComplete="application1_creationCompleteHandler(event)"
- xmlns:supportClasses="com.esri.ags.skins.supportClasses.*"
- minWidth="955" minHeight="600" xmlns:YJQDateField="YJQDateField.*">
- <s:layout>
- <supportClasses:AttachmentLayout/>
- </s:layout>
- <fx:Script>
- <![CDATA[
- import mx.controls.Alert;
- import mx.events.FlexEvent;
- import mx.formatters.DateFormatter;
- protected function application1_creationCompleteHandler(event:FlexEvent):void
- {
- // TODO Auto-generated method stub
- var date:Date = DateFormatter.parseDateString("2011-08-06 14:21:25");
- }
- ]]>
- </fx:Script>
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- </fx:Declarations>
- <YJQDateField:YJQDateField />
- </s:Application>