自定义DateField
来源:互联网 发布:mac装机必备 编辑:程序博客网 时间:2024/06/13 05:28
MyDateChooser.as
package hhmmss{ import mx.controls.DateChooser; //重写DateChooser,添加了时分秒的选择 public class MyDateChooser extends DateChooser { public var times:MyTimesChoose; public function MyDateChooser() { super(); this.width=195; this.height=195; this.setStyle("fontSize", "12"); times = new MyTimesChoose(); times.x=0; times.y=this.height; } protected override function createChildren():void { super.createChildren(); addChild(times); } }}
MyDateField.as
package hhmmss{ import flash.events.Event; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.ui.Keyboard; import mx.controls.DateField; import mx.core.ClassFactory; import mx.events.CalendarLayoutChangeEvent; import mx.events.FlexEvent; import mx.formatters.DateFormatter; //重写DateField,设置默认中文显示,添加了时分秒的选择 public class MyDateField extends DateField { public var hours:int; public var minutes:int; public var seconds:int; public function MyDateField() { super(); this.formatString="YYYY-MM-DD"; this.dropdownFactory=new ClassFactory(MyDateChooser); this.labelFunction=formatDate; this.editable=false; this.addEventListener(MouseEvent.DOUBLE_CLICK,closeDateField); } public override function initialize():void{ bindTimes(); super.initialize(); } private function bindTimes():void{ if(this.text){ var bindDate:Date = stringToDate(this.text); hours = bindDate.hours; minutes = bindDate.minutes; seconds = bindDate.seconds; } } private function initHMS():void{ bindTimes(); if(this.hours+this.minutes+this.seconds>0){ var tempNmsDateChooser:MyDateChooser=this.dropdown as MyDateChooser; if(tempNmsDateChooser || tempNmsDateChooser.times.nmsHour){ this.open(); } tempNmsDateChooser.times.nmsHour.selectedIndex = this.hours; tempNmsDateChooser.times.nmsMinute.selectedIndex = this.minutes; tempNmsDateChooser.times.nmsSecond.selectedIndex = this.seconds; if(this.selectedDate){ this.selectedDate.hours = this.hours; this.selectedDate.minutes = this.minutes; this.selectedDate.seconds = this.seconds; this.text = dateToString(this.selectedDate, "YYYY-MM-DD JJ:NN:SS"); //选中当前选择日期 var selectedDate:Date = new Date(this.selectedDate.fullYear, this.selectedDate.month, this.selectedDate.date); this.selectedDate = selectedDate; } } } protected override function downArrowButton_buttonDownHandler( event:FlexEvent):void{ super.downArrowButton_buttonDownHandler(event); initHMS(); } private function formatDate(currentDate:Date):String { var tempNmsDateChooser:MyDateChooser=this.dropdown as MyDateChooser; if(tempNmsDateChooser && tempNmsDateChooser.times.nmsHour){ currentDate.hours=(Number)(tempNmsDateChooser.times.nmsHour.selectedItem); currentDate.minutes=(Number)(tempNmsDateChooser.times.nmsMinute.selectedItem); currentDate.seconds=(Number)(tempNmsDateChooser.times.nmsSecond.selectedItem); } return dateToString(currentDate, "YYYY-MM-DD JJ:NN:SS"); } public function closeDateField():void{ //此处处理在时分秒下拉框出现时,关闭控件下拉框不会收回去的bug var tempNmsDateChooser:MyDateChooser=this.dropdown as MyDateChooser; tempNmsDateChooser.times.nmsHour.close(); tempNmsDateChooser.times.nmsMinute.close(); tempNmsDateChooser.times.nmsSecond.close(); this.close(); } public function stringToDate(dateString:String):Date{ var reg:RegExp = null; var array:Array = null; var year:int; var month:int; var day:int; var hour:int; var minute:int; var second:int; reg=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/; array = dateString.match(reg); if(array!=null){ year = int(array[1]); month = int(array[2])-1; day = int(array[3]); hour = int(array[4]); minute = int(array[5]); second = int(array[6]); return new Date(year,month,day,hour, minute, second); } reg=/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/; array = dateString.match(reg); if(array!=null){ year = int(array[1]); month = int(array[2])-1; day = int(array[3]); hour = int(array[4]); minute = int(array[5]); second = int(array[6]); return new Date(year,month,day,hour, minute, second); } return null; } public function dateToString(date:Date, formatString:String = "YYYYMMDDJJNNSS"):String{ var tempNmsDateChooser:MyDateChooser=this.dropdown as MyDateChooser; if(tempNmsDateChooser && tempNmsDateChooser.times.nmsHour){ date.hours=(Number)(tempNmsDateChooser.times.nmsHour.selectedItem); date.minutes=(Number)(tempNmsDateChooser.times.nmsMinute.selectedItem); date.seconds=(Number)(tempNmsDateChooser.times.nmsSecond.selectedItem); } var format:DateFormatter = new DateFormatter(); format.formatString = formatString; return format.format(date); } }}
MyTimesChoose.as
package hhmmss{ import flash.events.Event; import flash.events.MouseEvent; import mx.containers.HBox; import mx.containers.Panel; import mx.controls.Button; import mx.controls.ComboBox; import mx.controls.Label; import mx.formatters.DateFormatter; //重写Panel,实现时分秒的选择 public class MyTimesChoose extends Panel { public var timesBox:HBox; public var labMinute:Label; public var labSecond:Label; //时分秒下拉框 public var nmsHour:ComboBox; public var nmsMinute:ComboBox; public var nmsSecond:ComboBox; //获取当前时间 public var now:Button; private var parseDate:Date; //小时 private var dataSourceHour:Array=["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23"]; //分钟和秒 private var dataSourceMinuteSecond:Array=["00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59"]; //时分秒下拉框的填充色 private var arryBackgroundColor:Array=["white", "white", "white", "white"]; public function MyTimesChoose() { super(); this.width=195; this.height=23; this.setStyle("headerHeight", 0); this.setStyle("borderStyle", "solid"); this.setStyle("borderThicknessLeft", 1); this.setStyle("borderThicknessRight", 1); this.setStyle("cornerRadius", 0); timesBox=new HBox(); timesBox.setStyle("horizontalGap", "0"); timesBox.setStyle("verticalGap", "0"); timesBox.setStyle("verticalAlign", "middle"); timesBox.setStyle("backgroundColor", "white"); timesBox.setStyle("paddingLeft", "2"); timesBox.setStyle("paddingBottom", "2"); timesBox.setStyle("borderStyle", "none"); } protected override function createChildren():void { super.createChildren(); if (!nmsHour) { nmsHour=new ComboBox(); nmsHour.width=45; nmsHour.height=18; nmsHour.dataProvider=dataSourceHour; nmsHour.setStyle("cornerRadius", "0"); nmsHour.setStyle("fontSize", "10"); nmsHour.setStyle("fillColors", arryBackgroundColor); nmsHour.addEventListener("change", updateValue); } if (!labMinute) { labMinute=new Label(); labMinute.width=6; labMinute.text=":"; } if (!nmsMinute) { nmsMinute=new ComboBox(); nmsMinute.width=45; nmsMinute.height=18; nmsMinute.dataProvider=dataSourceMinuteSecond; nmsMinute.setStyle("fontSize", "10"); nmsMinute.setStyle("cornerRadius", "0"); nmsMinute.setStyle("fillColors", arryBackgroundColor); nmsMinute.addEventListener("change", updateValue); } if (!labSecond) { labSecond=new Label(); labSecond.width=6; labSecond.text=":"; } if (!nmsSecond) { nmsSecond=new ComboBox(); nmsSecond.width=45; nmsSecond.height=18; nmsSecond.setStyle("fontSize", "10"); nmsSecond.setStyle("cornerRadius", "0"); nmsSecond.setStyle("fillColors", arryBackgroundColor); nmsSecond.dataProvider=dataSourceMinuteSecond; nmsSecond.addEventListener("change", updateValue); } if(!now){ now = new Button(); now.label = "now"; now.width = 42; now.height = 18; now.addEventListener(MouseEvent.CLICK,setNowDate); } timesBox.addChild(nmsHour); timesBox.addChild(labMinute); timesBox.addChild(nmsMinute); timesBox.addChild(labSecond); timesBox.addChild(nmsSecond); timesBox.addChild(now); this.addChild(timesBox); } //当下拉时分秒下拉框的值改变的时候,动态修改日期控制的textinput的显示值 private function updateValue(event:Event):void { if (this.parent is MyDateChooser) { var dateChooser:MyDateChooser=this.parent as MyDateChooser; //若没有选择日期则默认为当天 if (dateChooser.selectedDate == null) { parseDate=new Date(); } else { parseDate=dateChooser.selectedDate; } if (dateChooser.owner is MyDateField) { var dateField:MyDateField=dateChooser.owner as MyDateField; dateField.labelFunction=formatDateTemp; } } } //日期显示格式 private function formatDateTemp(date:Date):String { if (date == null) { date=new Date(); } date.hours=(Number)(nmsHour.selectedItem); date.minutes=(Number)(nmsMinute.selectedItem); date.seconds=(Number)(nmsSecond.selectedItem); var df:DateFormatter=new DateFormatter(); df.formatString="YYYY-MM-DD JJ:NN:SS"; var times:String=df.format(date); return times; } private function setNowDate(event:Event):void{ var dateChooser:MyDateChooser=this.parent as MyDateChooser; var dateField:MyDateField=dateChooser.owner as MyDateField; var dateNow:Date = new Date(); dateField.selectedDate = dateNow; dateField.selectedDate.hours = dateNow.hours; dateField.selectedDate.minutes = dateNow.minutes; dateField.selectedDate.seconds = dateNow.seconds; nmsHour.selectedIndex = dateNow.hours; nmsMinute.selectedIndex = dateNow.minutes; nmsSecond.selectedIndex = dateNow.seconds; dateField.text = dateField.dateToString(dateField.selectedDate, "YYYY-MM-DD JJ:NN:SS"); dateField.closeDateField(); } }}
- 自定义DateField
- DateField自定义样式
- Flex4 自定义DateField 带时分秒
- 【ExtJS】自定义int类型值的datefield
- Flex4 DateField自定义的日期选择控件,可选择时分秒
- Flex4 DateField自定义的日期选择控件,可选择时分秒
- Flex4 DateField自定义的日期选择控件,可选择时分秒
- DateField Create
- DateField实例
- flex DateField
- Flex组件篇:DateField
- DateField绑定日期控件
- ext dateField汉化问题
- Flex基础控件--DateField
- J2ME-DateField应用
- DateField完整技术
- ext DateField控件格式
- gxt中DateField
- Android Camera 架构简析1
- Dynamics CRM 2011编程系列(48): WCF Service 和 Web Service 程序的部署
- Project facet Java version 1.7 is not supported
- shell字符串的截取
- Android Camera 架构简析2
- 自定义DateField
- 神经网络与支持向量机
- source insight调用Keil编译器并且定位到错误行
- BugFix 2:状态栏显示耳机插拔图标
- MR21批量修改价格
- java.util.Date的getYear() .
- codeforces 156A Message
- 10个重要的算法C语言实现源代码
- 使用Apache Ambari管理Hadoop