- 浏览: 20384 次
- 性别:
- 来自: 北京
文章分类
最新评论
package com { import flash.events.Event; import flash.events.FocusEvent; import flash.text.TextLineMetrics; import mx.containers.HBox; import mx.controls.NumericStepper; import mx.controls.Text; import mx.controls.TextInput; import mx.core.UITextField; import mx.core.mx_internal; import mx.events.FlexEvent; import mx.managers.IFocusManager; use namespace mx_internal; /** * Dispatched when the time changes, which could be either the hour, minute. */ [Event(name="change",type="flash.events.Event")] /** * Dispatched when the hour changes. */ [Event(name="hoursChange",type="flash.events.Event")] /** * Dispatched when the minutes change. */ [Event(name="minutesChange",type="flash.events.Event")] /** * Dispatched when the seconds change. */ [Event(name="secondsChange",type="flash.events.Event")] public class TimeInputEx extends NumericStepper { /** * 时间转换字符串 */ public static function formatNumberWithChar(value:Number,length:int=2,pref:String="0"):String { var str:String = new String(value); var len:int = str.length; if(len > length) { return str.substr(0,length); } else { var n:int = length - len; for( var i:int = 0 ; i < n ; i++ ) { str = pref + str; } return str; } } /** * Construction */ public function TimeInputEx() { super(); this.maxChars = 2; this.minimum = 0; this.maximum = 23; this.stepSize = 1; this.addEventListener(FlexEvent.VALUE_COMMIT,valueCommandHandler); } //-------------------------------------------------------------------------- // // Variables // //-------------------------------------------------------------------------- /** * @private */ protected var inputBox:HBox; /** * @private */ protected var sText:Text; protected var sText2:Text; /** * @private */ protected var hoursInputField:TextInput; /** * @private */ protected var minutesInputField:TextInput; /** * @private */ protected var secondsInputField:TextInput; /** * @private */ protected var _hours:Number = 0; /** * @private */ protected var _minutes:Number = 0; /** * @private */ protected var _seconds:Number = 0; /** * @private */ protected var _time:Date; /** * @private */ protected var _text:String; /** * @private */ private var _enabled:Boolean=true; /** * @override creationChildren */ override protected function createChildren():void { super.createChildren(); if(!inputBox) { inputBox = new HBox(); inputBox.setStyle("paddingLeft",0); inputBox.setStyle("paddingRight",0); inputBox.setStyle("paddingTop",0); inputBox.setStyle("paddingBottom",0); inputBox.setStyle("horizontalGap",0); inputBox.setStyle("borderStyle","solid"); inputBox.setStyle("verticalAlign","middle"); addChild(inputBox); } var v:String = "00"; var lineMetrics:TextLineMetrics = this.measureText(v); var textWidth:Number = lineMetrics.width + UITextField.TEXT_WIDTH_PADDING; var textHeight:Number = lineMetrics.height + UITextField.TEXT_HEIGHT_PADDING; if (!hoursInputField) { hoursInputField = new TextInput(); hoursInputField.focusEnabled = false; hoursInputField.styleName = this; // restrict to numbers - dashes - commas - decimals hoursInputField.restrict = "0-9"; hoursInputField.maxChars = 2; hoursInputField.text = formatNumberWithChar(_hours,2,"0"); hoursInputField.width = textWidth; hoursInputField.height = textHeight; //hoursInputField.parentDrawsFocus = true; hoursInputField.setStyle("textAlign","right"); hoursInputField.setStyle("borderStyle","none"); hoursInputField.setStyle("paddingLeft",0); hoursInputField.setStyle("paddingRight",0); hoursInputField.setStyle("paddingTop",0); hoursInputField.setStyle("paddingBottom",0); hoursInputField.setStyle("horizontalGap",0); hoursInputField.addEventListener(FocusEvent.FOCUS_IN,inputField_focusInHandler); hoursInputField.addEventListener(FocusEvent.FOCUS_OUT, inputField_focusOutHandler); inputBox.addChild(hoursInputField); } inputField=hoursInputField; if(!sText){ sText=new Text(); sText.text=":"; sText.setStyle("textAlign","center"); sText.setStyle("paddingLeft",0); sText.setStyle("paddingRight",0); sText.setStyle("paddingTop",0); sText.setStyle("paddingBottom",0); sText.setStyle("horizontalGap",0); inputBox.addChild(sText); } if (!minutesInputField) { minutesInputField = new TextInput(); minutesInputField.focusEnabled = false; minutesInputField.styleName = this; // minutesInputField.width=textWidth; // restrict to numbers - dashes - commas - decimals minutesInputField.restrict = "0-9"; minutesInputField.maxChars = 2; minutesInputField.text = formatNumberWithChar(_minutes,2,"0"); minutesInputField.width = textWidth; minutesInputField.height = textHeight; //minutesInputField.parentDrawsFocus = true; minutesInputField.setStyle("textAlign","left"); minutesInputField.setStyle("borderStyle","none"); minutesInputField.setStyle("paddingLeft",0); minutesInputField.setStyle("paddingRight",0); minutesInputField.setStyle("paddingTop",0); minutesInputField.setStyle("paddingBottom",0); minutesInputField.setStyle("horizontalGap",0); minutesInputField.addEventListener(FocusEvent.FOCUS_IN,inputField_focusInHandler); minutesInputField.addEventListener(FocusEvent.FOCUS_OUT, inputField_focusOutHandler); inputBox.addChild(minutesInputField); } if(!sText2){ sText2=new Text(); sText2.text=":"; sText2.setStyle("textAlign","center"); sText2.setStyle("paddingLeft",0); sText2.setStyle("paddingRight",0); sText2.setStyle("paddingTop",0); sText2.setStyle("paddingBottom",0); sText2.setStyle("horizontalGap",0); inputBox.addChild(sText2); } if (!secondsInputField) { secondsInputField = new TextInput(); secondsInputField.focusEnabled = false; secondsInputField.styleName = this; // secondsInputField.width=textWidth; // restrict to numbers - dashes - commas - decimals secondsInputField.restrict = "0-9"; secondsInputField.maxChars = 2; secondsInputField.text = formatNumberWithChar(_seconds,2,"0"); secondsInputField.width = textWidth; secondsInputField.height = textHeight; //secondsInputField.parentDrawsFocus = true; secondsInputField.setStyle("textAlign","left"); secondsInputField.setStyle("borderStyle","none"); secondsInputField.setStyle("paddingLeft",0); secondsInputField.setStyle("paddingRight",0); secondsInputField.setStyle("paddingTop",0); secondsInputField.setStyle("paddingBottom",0); secondsInputField.setStyle("horizontalGap",0); secondsInputField.addEventListener(FocusEvent.FOCUS_IN,inputField_focusInHandler); secondsInputField.addEventListener(FocusEvent.FOCUS_OUT, inputField_focusOutHandler); inputBox.addChild(secondsInputField); } } /** * @private * Return the preferred sizes of the stepper. */ override protected function measure():void { super.measure(); var inputBoxHeight:Number = inputBox.getExplicitOrMeasuredHeight(); var buttonHeight:Number = prevButton.getExplicitOrMeasuredHeight() + nextButton.getExplicitOrMeasuredHeight(); var h:Number = Math.max(inputBoxHeight, buttonHeight); h = Math.max(DEFAULT_MEASURED_MIN_HEIGHT, h); var inputBoxWidth:Number = inputBox.getExplicitOrMeasuredWidth(); var buttonWidth:Number = Math.max(prevButton.getExplicitOrMeasuredWidth(), nextButton.getExplicitOrMeasuredWidth()); var w:Number = inputBoxWidth + buttonWidth; w = Math.max(DEFAULT_MEASURED_MIN_WIDTH, w); measuredMinWidth = DEFAULT_MEASURED_MIN_WIDTH; measuredMinHeight = DEFAULT_MEASURED_MIN_HEIGHT; measuredWidth = w; measuredHeight = h; } /** * @private * Place the buttons to the right of the text field. */ override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); var w:Number = nextButton.getExplicitOrMeasuredWidth(); var h:Number = Math.round(unscaledHeight / 2); var h2:Number = unscaledHeight - h; nextButton.x = unscaledWidth - w; nextButton.y = 0; nextButton.setActualSize(w, h2); prevButton.x = unscaledWidth - w; prevButton.y = unscaledHeight - h; prevButton.setActualSize(w, h); var inputBoxHeight:Number = inputBox.getExplicitOrMeasuredHeight(); var inputBoxWidth:Number = inputBox.getExplicitOrMeasuredWidth(); inputBox.setActualSize(unscaledWidth - w, unscaledHeight); trace(unscaledWidth - w + " " + unscaledHeight); // inputBox.setActualSize(inputBoxWidth,inputBoxHeight); } /** * @private */ private function inputField_focusInHandler(event:FocusEvent):void { if (this.listData) { this.Caption = this.listData.label; } inputField=event.currentTarget as TextInput; if(event.currentTarget as TextInput == hoursInputField){ this.value=parseInt(inputField.text); this.minimum=0; this.maximum=23; }else{ this.value=parseInt(inputField.text); this.minimum=0; this.maximum=59; } focusInHandler(event); // Send out a new FocusEvent because the TextInput eats the event // Make sure that it does not bubble. dispatchEvent(new FocusEvent(event.type, false, false, event.relatedObject, event.shiftKey, event.keyCode)); } /** * @private */ private function inputField_focusOutHandler(event:FocusEvent):void { if (this.listData) { this.listData.label = this.Caption; } focusOutHandler(event); // Send out a new FocusEvent because the TextInput eats the event // Make sure that it does not bubble dispatchEvent(new FocusEvent(event.type, false, false, event.relatedObject, event.shiftKey,event.keyCode)); } /** * @private * * do for format number to string */ private function valueCommandHandler(event:FlexEvent):void{ //var v=this.value; inputField.text=formatNumberWithChar(value,2,"0"); if(inputField==hoursInputField){ this.hours=value; } else if(inputField==minutesInputField){ this.minutes=value; } else if(inputField==secondsInputField){ this.seconds=value; } this.Caption=formatNumberWithChar(this.hours,2,"0") +":"+formatNumberWithChar(this.minutes,2,"0") +":"+formatNumberWithChar(this.seconds,2,"0"); } /** * @private * Remove the focus from the text field. */ override protected function focusInHandler(event:FocusEvent):void { super.focusInHandler(event); var fm:IFocusManager = focusManager; if (fm) fm.defaultButtonEnabled = false; } [Bindable] /** * The hours (an integer from 0 to 23) of the day. * * @default 0 */ public function get hours():Number { return _hours; } [Inspectable(defaultValue=0,category="Time",name="Hours")] public function set hours(val:Number):void { if (val >= 0 || val <= 24) { this._hours = val; if(inputField){ if(inputField==hoursInputField && val!=value) value=val; else{ hoursInputField.text=formatNumberWithChar(val,2,"0"); } } } dispatchEvent(new Event("hoursChange")); dispatchEvent(new Event("change")); } [Bindable] /** * The minutes (an integer from 0 to 59) passed in the hours. * * @default 30 */ public function get minutes():Number { return _minutes; } [Inspectable(defaultValue=30,category="Time",name="Minutes")] public function set minutes(val:Number):void { if (val >= 0 || val <= 59) { this._minutes = val; if(inputField){ if(inputField==minutesInputField && val!=value) value=val; else{ minutesInputField.text=formatNumberWithChar(val,2,"0"); } } } dispatchEvent(new Event("minutesChange")); dispatchEvent(new Event("change")); } [Bindable] /** * The seconds (an integer from 0 to 59) passed in the hours. * * @default 30 */ public function get seconds():Number { return _seconds; } [Inspectable(defaultValue=30,category="Time",name="Seconds")] public function set seconds(val:Number):void { if (val >= 0 || val <= 59) { this._seconds = val; if(inputField){ if(inputField==secondsInputField && val!=value) value=val; else{ secondsInputField.text=formatNumberWithChar(val,2,"0"); } } } dispatchEvent(new Event("secondsChange")); dispatchEvent(new Event("change")); } public function get Time():Date{ var d:Date=new Date(); d.hours=_hours; d.minutes=_minutes; d.seconds=_seconds; return d; } public function set Time(time:Date):void{ this._time=time; this.hours=time.hours; this.minutes=time.minutes; this.seconds=time.seconds; } [Bindable] public function get Caption():String{ return _text; } [Inspectable(defaultValue="00:00:00",category="Caption",name="Caption")] public function set Caption(timestr:String):void{ this._text=timestr; this.hours=Number(timestr.substring(0,2)); this.minutes=Number(timestr.substring(3,5)); this.seconds=Number(timestr.substring(6,8)); } /** * @private */ override public function set enabled(value:Boolean):void { _enabled = value; if(hoursInputField){ hoursInputField.enabled=value; minutesInputField.enabled=value; secondsInputField.enabled=value; sText.enabled=value; sText2.enabled=value; nextButton.enabled=value; prevButton.enabled=value; } } /** * @private */ override public function get enabled():Boolean { return _enabled; } } }
<?xml version="1.0" encoding="utf-8"?> <mx:Application creationComplete="init();" xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="12" layout="horizontal" xmlns:ns1="*" xmlns:com="com.*"> <mx:Script> <![CDATA[ private function init():void{ ac.addItem({starttime:"00:00:00", endtime:"01:00:00", program:""}); ac.addItem({starttime:"01:00:00", endtime:"02:00:00", program:""}); } ]]> </mx:Script> <mx:DateFormatter id="timeFormatter" formatString="J:NN:SS A" /> <mx:ArrayCollection id="ac"/> <mx:Panel layout="absolute" paddingLeft="5" paddingRight="5" paddingTop="5" paddingBottom="5" title="TimeInput" width="100%" height="224"> <com:TimeInputEx id="timerinput" hours="23" minutes="45" width="250" seconds="30" Caption="03:45:30" top="10"/> <mx:DataGrid textAlign="center" id="dg" dataProvider="{ac}" sortableColumns="false" fontSize="14" editable="true" alternatingItemColors="[#ffffff, #d1d1d1]" headerColors="[#ffffff, #d1d1d1]" alpha="0.6" left="10" right="10" top="51" bottom="29"> <mx:columns> <mx:DataGridColumn headerText="start time" dataField="starttime" textAlign="center" editable="true" minWidth="125" itemEditor="com.TimeInputEx" editorDataField="Caption"/> <mx:DataGridColumn headerText="end time" dataField="endtime" textAlign="center" editable="true" minWidth="125" itemEditor="com.TimeInputEx" editorDataField="Caption"/> </mx:columns> </mx:DataGrid> </mx:Panel> <mx:Panel layout="vertical" paddingLeft="5" paddingRight="5" paddingTop="5" paddingBottom="5" title="time now"> <mx:Text text="hours:{timerinput.hours}"/> <mx:Text text="minutes:{timerinput.minutes}"/> <mx:Text text="seconds:{timerinput.seconds}"/> <mx:Text text="caption:{timerinput.Caption}"/> <mx:Button label="setTime to 8:10:03" click="timerinput.Caption='08:10:03'" /> <mx:Button label="switchEnable" click="if(timerinput.enabled) timerinput.enabled=false; else timerinput.enabled=true;"/> </mx:Panel> </mx:Application>
什么都不说了,自己看代码吧,TimerInputEx中只是在原有基础之上增加了label和input
发表评论
-
ColorLabel
2014-06-19 09:46 445package com.components { imp ... -
Flex菜单弹跳效果
2014-03-14 15:06 1123一个很简单的单击效果(弹跳,选中时加下划线),可适用于菜单单击 ... -
Flex4动态加载组件存在的问题
2014-03-13 10:14 1189为了提高Spark组件性能,Adobe做了很多,但凡事均有利弊 ... -
Flex DragManager
2013-12-30 16:34 440当用户使用鼠标选择某个项目时,所选组件称之为启动器,移动过程中 ... -
AdvancedDatagrid分组、显示概要信息及问题
2013-12-27 17:28 447<?xml version="1.0" ... -
Flex日志使用及配置
2013-02-26 12:43 731Flex集成一个Log框架,可以完成很多用trac ... -
Flex 读写本地文件(Flash Player 10)
2013-02-26 11:43 1515FileReference 类提供了在用户计算机和 ... -
Flex FileReference URLRequest 请求缓存问题
2013-02-19 10:20 1208UrlRequest请求时会缓存会话 ... -
Flex 资源链接
2013-01-31 10:47 699RIA爱好者 http://www.riafan.com Co ... -
Flex 4 组件继承关系
2013-01-05 09:55 801. -
自定义的组件中加入多个MXML标记的子UI元素 (转)
2012-11-29 15:24 908首先我们来看一下它定 ... -
Flex 3 与 Flex 4 之间的区别 (转载)
2012-11-23 14:00 594http://www.adobe.com/cn/devn ... -
Flex 4 随记
2012-11-23 13:41 6501. Flex多状态事件 private functio ... -
Flash Builder 4.6 破解
2012-11-20 10:46 2具体步骤如下:1.到Adobe官网下载FlashBuil ... -
Flex HtmlButton 控件
2012-11-19 10:24 775package com { import flash ... -
探究Flex声明周期 (转载 IBM)
2012-11-16 17:14 650http://www.ibm.com/developerwor ... -
Flex 组件 生命周期
2012-11-16 16:12 9151、生命周期简述 (1) Constructio ... -
Flex 杂篇
2012-11-08 13:44 7111.复制内容到系统剪贴板System.setClipbo ... -
Failed to connect; session timed out.(无法连接,会议超时)
2012-11-06 16:23 1446Failed to connect; session time ...
相关推荐
定时器输入监视输入或textarea元素的值是否已更改,例如input事件。用法 var keyword = document . getElementById ( 'keyword' ) ;var kwInput = new TimerInput ( keyword ) ;kwInput . on ( function ( e ) { ...
当用户点击StartButton时,会触发一个事件处理程序,该处理程序将用户在timerInput中输入的时间转换为秒,并将其存储在变量`alarmTime`中。然后,启动`timerClock`,并设置其Elapsed事件处理程序,以便在时间到达时...
采用s函数编写的永磁同步电机矢量控制双闭环PMSM控制模型,利用matlab simulink搭建,可修改参数,增减负载均能恢复参考值正常运行。
===如资源质量问题,可半价退款,代下全网资源,价格公道==== 微博热搜数据可视化分析系统 技术框架 python + flask web + mysql 角色介绍 管理员 admin 123456 模块分析 可视化模块 趋势模块(折线图) 热搜模块(云词图) 分析模块 情感分析模块 (因为舆情分析包含了情感分析我们为了区分两者的区别在舆情模块中包含了中文分词jiba功能) 影响分析模块 (影响分析我们根据数据库中的数据来分析,主要做两部获取数据库中最大的热度标题,jiba分词获取出现频率最大的热搜,和最小的热搜) 舆情分析模块 (单独的使用snow就行因为舆情分析包含了情感分析) 学院模块 邮箱模块 (在学院模块中如果舆情值低于0.3发送邮箱到指定的邮箱中) 爬虫模块 (页面上有一个爬虫按钮,当用户点击以后它爬出一次热搜的数据并添加到数据库中) 学院模块 (爬虫专门爬虫学校贴吧信息,然后如果舆情值低于多少使用邮箱通知管理员) 密码重置模块 数据库WBAnalysis。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
引体向上和俯卧撑的自动感知计数原理
springboot263校园组团平台
springboot+vue的桂林旅游网站系统_1e9t9f02.zip
python
springboot239华府便利店信息管理系统
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
T型逆变器仿真(SPWM)Matlab2021a 加设LCL滤波器,三相负载为纯阻性, 采用SPWM,正弦波作为调制波。 逆变器输出线电压为五电平波形,滤波后电压电流为对称三相电。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python
springboot237毕业设计成绩管理系统的设计与实现
内容概要:本文介绍了一个基于 Activiti 流程引擎的低代码办公平台的设计与开发。该平台由低代码设计模块和基本信息模块组成,支持线上创建业务对象、表单、数据对象和流程模型等,利用 DDL语言进行数据库操作、Activiti 进行流程管理,前端使用 Bpmn-js 和 Vue.js 开发,表单和数据对象通过 JSON 存储和 Vue 的 Element UI 回显。基本信息模块则涵盖了权限管理和系统管理。测试结果显示平台功能完整,设计简便易用。 适合人群:适合中小型企业的技术人员、管理人员和其他参与办公流程设计与实施的相关人员。 使用场景及目标:平台旨在减少开发投入,降低对专业开发人才的依赖。主要适用于企业内部审批、业务流程自动化等领域,帮助优化业务流程管理,提高办公效率。 其他说明:本文展示了基于Activiti低代码办公平台的具体应用场景和技术实现细节。关键技术点涉及 Activiti 工作流、Vue.js 前端框架和 MySQL 数据库管理系统,为开发类似办公系统提供了有价值的参考和借鉴。
springboot219基于SpringBoot的网络海鲜市场系统的设计与实现
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
自动驾驶车道保持LKA,基于LQR算法,carsim与simulink联合仿真,包括说明书及LQR的推导过程(每一步怎么做的)
python