`
qiansheng1987
  • 浏览: 5700 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

仿DateField的时间组件

    博客分类:
  • Flex
阅读更多

<?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"
       width="{timeWidth}" height="{timeHeight}" borderColor="#DEDEDE"
       borderVisible="true"
       creationComplete="bordercontainer1_creationCompleteHandler(event)">
 <fx:Declarations>
  <!-- 将非可视元素(例如服务、值对象)放在此处 -->
 </fx:Declarations>
 <fx:Script>
  <![CDATA[
   import com.easymap.publicWidget.toolWidget.assets.script.CreateTimeImgScript;
   
   import mx.controls.DateChooser;
   import mx.core.FlexGlobals;
   import mx.events.CalendarLayoutChangeEvent;
   import mx.events.FlexEvent;
   import mx.formatters.DateFormatter;
   import mx.managers.PopUpManager;
   
   public var df:DateFormatter = new DateFormatter();
   public var  dc:DateChooser; //时间戳
   public var isPopExist:Boolean = false; //是否有时间控件弹出
   public var isCurrent:Boolean = false; //点击的是否为时间控件
   
   [Bindable]
   public var text:String = ""; //控件文本
   
   [Bindable]
   public var timeWidth:Number = 0; //控件宽
   
   [Bindable]
   public var timeHeight:Number = 0; //控件高
   
   /**
    * 点击日历小图标
    * */
   protected function timestampImg_clickHandler(event:MouseEvent):void
   {
    if (isPopExist) {
     PopUpManager.removePopUp(dc);
     isPopExist = false;
     isCurrent = false;
    } else {
     isPopExist = true;
     isCurrent = true;
     dc = new DateChooser();
     dc.yearNavigationEnabled = true;
     dc.addEventListener(CalendarLayoutChangeEvent.CHANGE, onChange);
     PopUpManager.addPopUp(dc, this.timestampImg, false);
     PopUpManager.centerPopUp(dc);
    }
   }
   
   /**
    * 选择时间事件
    * */
   private function onChange(event:CalendarLayoutChangeEvent):void
   {
    var dt:Date = new Date();
    //df.formatString="YYYY-MM-DD JJ:NN:SS";
    df.formatString="YYYY-MM-DD";
    var stmp:String = df.format(event.newDate);
    stmp = stmp.substr(0, 11) + df.format(dt).substr(10);
    this.textInput.text = stmp;
    this.text = stmp;
    PopUpManager.removePopUp(dc);
    isPopExist = false;
    isCurrent = false;
   }
   
   /**
    * 改变日历图标
    * */
   protected function timestampImg_mouseOverHandler(event:MouseEvent):void
   {
    timestampImg.source = CreateTimeImgScript.QUERY_RILI_OVER;
   }
   
   /**
    * 改变日历图标
    * */
   protected function timestampImg_mouseOutHandler(event:MouseEvent):void
   {
    timestampImg.source = CreateTimeImgScript.QUERY_RILI_UP;
   }
   
   /**
    * 点击文本框
    * */
   protected function textInput_clickHandler(event:MouseEvent):void
   {
    textInput.text = ""; //清楚文本框内容
    this.text = ""; //清楚文本框内容
    if (isPopExist) {
     PopUpManager.removePopUp(dc);
     isPopExist = false;
     isCurrent = false;
    } else {
     isPopExist = true;
     isCurrent = true;
     dc = new DateChooser();
     dc.yearNavigationEnabled = true;
     dc.addEventListener(CalendarLayoutChangeEvent.CHANGE, onChange);
     PopUpManager.addPopUp(dc, this.timestampImg, false);
     PopUpManager.centerPopUp(dc);
    }
   }
   
   /**
    *  派发鼠标点击监听事件
    * */
   protected function bordercontainer1_creationCompleteHandler(event:FlexEvent):void
   {
    Sprite(FlexGlobals.topLevelApplication).addEventListener(MouseEvent.CLICK, hideDateTime);
   }
   
   /**
    * 控制点击时间组件之外的舞台时,隐藏时间控件
    * */
   private function hideDateTime(event:Event):void
   {
    if (!isCurrent) {
     if (isPopExist) {
      isPopExist = false;
      PopUpManager.removePopUp(dc);
     }
    }
    isCurrent = false;
   }
  ]]>
 </fx:Script>
 <s:BorderContainer id="topPanel3" left="0" width="{timeWidth}" height="{timeHeight}"
        backgroundAlpha="0.0" borderColor="#DEDEDE" borderVisible="false"
        verticalCenter="0">
  <s:Image id="timestampImg" y="2" x="0" top="2" bottom="2" right="2" click="timestampImg_clickHandler(event)"
     mouseOut="timestampImg_mouseOutHandler(event)"
     mouseOver="timestampImg_mouseOverHandler(event)"
     source="{CreateTimeImgScript.QUERY_RILI_UP}"/>
  <s:TextInput id="textInput" left="2" top="4" bottom="4" width="90%" borderColor="#FFFFFF"
      borderVisible="false" click="textInput_clickHandler(event)" enabled="true"
      focusColor="#FFFFFF" paddingBottom="0" paddingTop="0" text="{text}"/>
 </s:BorderContainer>
</s:BorderContainer>

  • 大小: 564 Bytes
  • 大小: 7.7 KB
分享到:
评论

相关推荐

    Ext扩展dateField时间控件,可以选择年月日、年月、年、月

    `dateField`组件是`Ext`提供的一种用于输入日期的控件,它可以被高度定制以满足各种用户界面需求。 首先,让我们了解`dateField`的基本用法。在`Ext`中,`dateField`通常通过创建`Ext.form.field.Date`类的实例来...

    Ext DateField控件 - 只选择年月

    "Ext DateField控件 - 只选择年月"这个主题聚焦于一个特定的UI组件,用于帮助用户仅选择日期中的年份和月份部分,而忽略具体的日期。这在处理诸如生日、合同有效期等只需要年月信息的场景时非常有用。 Ext JS是一个...

    flex DateField 时分秒 选择

    在Flex开发中,DateField控件是用于显示和编辑日期的一种常见组件,它允许用户通过交互界面选择日期。然而,标准的Flex DateField通常只支持日期的选择,而不包括时间的选取。但在某些应用场景中,例如日程安排或...

    解决datefield组件 日期选择框在IE8下显示不完整的问题

    extjs中,经常会用到datefield组件控制用户对日期的操作,比如日志管理,需要开始时间、结束时间,但是IE8下日期选择框会显示不全,解决方法参加代码。 同时改代码解决了开始时间、结束时间的时间范围控制的问题,即...

    extjs中dateField日期精确到时分秒的扩展控件

    我们可以为这个组件设置监听事件,当用户选择完时间后,更新DateField的值。 5. **事件监听和处理**: 添加必要的事件监听器,例如监听日期和时间选择的改变,然后更新模型和存储。EXTJS提供了丰富的事件系统,如`...

    自定义DateField

    在Flex编程中,DateField是Adobe Flex SDK提供的一种用于显示和编辑日期的UI组件。然而,标准的DateField控件可能无法满足所有开发者对于日期选择和显示的特定需求。因此,自定义DateField控件的创建变得尤为重要。...

    Ext DateField控件 - 只选择年月插件

    在这个示例中,我们创建了一个应用,并在其视图容器中添加了一个DateField组件,启用了年月选择插件,并设置了格式为'Y-m'。`pluginConfig`对象用于传递给插件,`type: 'yearmonth'`指定了我们要使用的插件类型。 ...

    extjs中 google 不兼容 datefield 控件

    这些样式是用于解决Chrome浏览器中DateField组件的显示问题的。例如,`.x-date-picker`类设置了边框颜色、背景颜色等属性。 ```javascript var chromeDatePickerCSS = ".x-date-picker{border-color:#1b376c;...

    extjs4.2 日期控件 datefield 拓展加上选择时分秒功能

    extjs4.2 日期控件 datefield 拓展加上选择时分秒功能。 在ExtJs4.2表单控件里分别有个时间控件(datafield)和时间控件(timefield),但是官方提供的控件不能将日期和时分秒整合到一起,我从网上搜集整理了一个可用...

    Flex自定义DateField选择时分秒 修复版

    在Flex开发中,DateField是用于输入和显示日期的标准组件,但有时开发人员可能需要更高级的功能,...如果你正在寻找一个能同时选择日期和时间的控件,并且需要中文界面,这个修复版的DateField组件可能正是你需要的。

    Extjs6 日期时间控件

    在EXTJS6中,日期时间控件是一种强大的用户界面组件,它将传统的日期选择器与时间选择器结合在一起,提供了一种便捷的方式来输入和编辑日期和时间数据。这个控件在许多应用程序中都非常实用,特别是在那些需要精确...

    Flex自定义DateField选择时分秒

    6. **集成到项目**:将自定义的DateField组件引入到Flex项目中,替换原有的DateField,这样用户就可以看到一个支持时分秒选择的日期输入控件了。 7. **测试与优化**:进行充分的测试,确保在不同操作系统和浏览器上...

    Flex 带时间的DateField的

    当我们需要在用户界面中添加带有时间选择功能的日期输入控件时,`Flex 带时间的DateField`就显得尤为重要。这个特殊的DateField不仅能够显示日期,还能让用户选择具体的时间,提升了用户体验。 首先,我们要理解...

    Flex-时间控件,带年月日时分秒

    "Flex-时间控件,带年月日时分秒"是一种专门用于处理时间选择的组件,它允许用户方便地设定日期和时间,包括年、月、日、小时、分钟和秒。Flex是一种基于ActionScript 3.0的开源框架,由Adobe开发,主要用于构建富...

    ExtJs 带清空功能的日期组件

    在ExtJs框架中,日期组件(DateField)是用于用户输入日期的常见控件。然而,标准的ExtJs DateField并未内置清空日期的功能,这可能会在某些应用场景中造成不便。为了解决这个问题,我们需要自定义一个扩展,为日期...

    ext 时间控件带有时分秒的控件

    描述中提到,EXT JS的原生日期控件不包含时分秒的选择,这意味着在标准的EXT JS DateField或DatePicker组件中,用户只能选择日期,无法设定具体的时间。为了解决这个问题,开发者可以创建一个自定义的EXT JS组件,...

    Flex 自定义时间控件 功能很全

    因此,自定义时间控件通常会扩展`DateField`或`TextInput`组件,增加对时间选择的支持。在这个自定义组件中,用户可能可以通过下拉菜单选择小时和分钟,或者通过键盘输入,同时控件会进行验证以确保输入的时间格式...

    非常实用的日期时间控件

    本资源“非常实用的日期时间控件”显然是一个专注于日期和时间选择的组件,适用于FLEX平台。FLEX是一种基于Adobe Flex框架的开发工具,用于构建富互联网应用程序(RIA),它提供了丰富的UI组件库。 在FLEX中,日期...

Global site tag (gtag.js) - Google Analytics