是否有一个好的Flex(3)日期/时间选择器组件?

时间:2009-09-16 19:08:22

标签: flex flex3 components

我需要灵活应用程序的时间选择器,据我所知,没有UI组件以比每天更精细的分辨率(Date组件)操纵DateChooser个对象

Flex的最佳选择时间是什么?我非常喜欢像Libre中的Free和/或Free中的Free。

6 个答案:

答案 0 :(得分:5)

也许这会有所帮助: http://blog.georg-graf.com/archives/301

答案 1 :(得分:4)

这应该适合您:http://joelhooks.com/2008/10/11/flex-date-and-time-datetime-picker-control/

上面有一个演示和指向源代码的链接。

答案 2 :(得分:2)

如果您只想编辑时间,请在此处找到解决方案:

http://weflex.wordpress.com/2011/02/17/flex-timeinput-component/

答案 3 :(得分:1)

在Adobe网站上找到此信息(Google搜索的第一个结果) http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1400019

您可以扩展DateChooser组件以添加上述功能。

答案 4 :(得分:1)

雅虎! Astra TimeInput和TimeStepper非常有用。

http://developer.yahoo.com/flash/astra-flex/timeinput/

http://developer.yahoo.com/flash/astra-flex/timestepper/

然而,在使用Flex 4 SDK时显然存在问题,而且似乎是Yahoo!目前还没有计划更新他们的Astra组件。

您可能需要查看此链接以了解适用于Flex 4的版本。 https://github.com/joshtynjala/astra-flex

我认为时间输入将是原生Flex SDK组件的良好候选者。

答案 5 :(得分:0)

尝试以下代码:这对于输入没有AM / PM

的HH:MM 12hr格式非常有用

MXML代码:

<Timepicker maxChars="5" restrict="0-9" />

ActionScript代码:

package
{
import flash.events.KeyboardEvent;

import mx.controls.TextInput;

public class Timepicker extends TextInput
{
    public function Timepicker()
    {
    }

    override protected function keyUpHandler(event:KeyboardEvent):void
    {
        super.keyUpHandler(event);

        if (text.length == 0)
        {
            return;
        }
        var keyDel:Boolean=false;
        if (event.charCode == 8 || event.charCode == 46)
            keyDel=true;
        var numberString:String=text;
        if (keyDel)
            text=numberString;

        if (numberString.length > 0 && !keyDel)
        {
            if (numberString.length == 2 && numberString.indexOf(":") == -1)
            {
                text=numberString;
                textField.appendText(":");
            }
            else if (numberString.length >= 4 && Number(numberString.charAt(3)) > 5)
            {
                text=numberString.substr(0, 3)
            }
            else if (numberString.length == 3 && numberString.charAt(2) != ":")
            {
                if (Number(numberString.charAt(2)) <= 5)
                {
                    var fourthDigit:String=numberString.charAt(2);
                    super.textField.text="";
                    super.textField.appendText(numberString.substring(0, 2) + ":" + fourthDigit);
                }
                else
                {
                    super.textField.text="";
                    super.textField.appendText(numberString.substring(0, 2) + ":");
                }
            }
            textField.setSelection(textField.length, textField.length);

        }
    }

    override protected function keyDownHandler(event:KeyboardEvent):void
    {
        super.keyDownHandler(event);
        var keyDel:Boolean=false;
        if (event.charCode == 8 || event.charCode == 46)
            keyDel=true;

        super.text=text;
        if (super.text.length == 0)
        {
            var inputVal:String=String.fromCharCode(event.charCode);
            if (Number(inputVal) > 1)
            {
                super.textField.appendText("0" + inputVal + ":");
            }
        }
        super.textField.setSelection(super.textField.length, super.textField.length);
    }

}

}