Flex NumericStepper с ведущим 0 на числах ниже 10? - PullRequest
4 голосов
/ 15 июня 2011
  • Есть ли способ сделать так, чтобы NumericStepper показывал от 0 до цифр, которые меньше 10?

(например, 01, 02, 03 ... 09, 10, 11)

Ответы [ 4 ]

7 голосов
/ 15 июня 2011

Если вы используете Spark NumericStepper, вам просто нужно добавить функцию для свойства valueFormatFunction .

4 голосов
/ 09 января 2014

Если вы находитесь во Flex 3, вы не можете получить прямой доступ к inputField, но вы легко можете решить его, используя mx_internal

<mx:NumericStepper id="stpprHours" minimum="1" maximum="24" stepSize="1" creationComplete="formatStepper(stpprHours)" change="stpprHours_changeHandler(event)" value="1"/>

<mx:NumericStepper id="stpprMinutes" minimum="0" maximum="59" stepSize="1" creationComplete="formatStepper(stpprMinutes)" change="stpprMinutes_changeHandler(event)" value="0"/>

и

<mx:Script>
 <CDATA[[
        protected function stpprHours_changeHandler(event:NumericStepperEvent):void {
            formatStepper(stpprHours);              
        }

        protected function stpprMinutes_changeHandler(event:NumericStepperEvent):void {
            formatStepper(stpprMinute);                             
        }

        protected function formatStepper(stepper : NumericStepper) : void {
            if(stepper.value<10) stepper.mx_internal::inputField.text = "0" + stepper.value;

    }
 ]]>
</mx:Script>
4 голосов
/ 16 февраля 2012

В случае, если кто-то ищет версию только для Halo:

package
{
    import flash.events.Event;

    import mx.controls.NumericStepper;
    import mx.core.mx_internal;
    import mx.events.FlexEvent;

    use namespace mx_internal;
    /**
     * Added support to format time values.
     */ 
    public class TimePickerNumericStepper extends NumericStepper
    {
        public function TimePickerNumericStepper()
        {
        }

        /**
         *  @private
         */
        override protected function createChildren():void
        {
            super.createChildren();
            onValueCommit(null)
            inputField.addEventListener(FlexEvent.VALUE_COMMIT,onValueCommit);
        }

        protected function onValueCommit(event:Event):void
        {
            if(value<10 && inputField.text.length==1){
                inputField.text = "0" + inputField.text;
            }   
        }


    }
}
3 голосов
/ 21 июля 2015

Юрий Эучеда работает отлично. Я хотел бы выполнить следующие действия, чтобы отделить элемент управления от обработчика событий.

private function init( event:FlexEvent ):void{
        scheduleHour.addEventListener(Event.CHANGE,onStepperChange);
        scheduleMinute.addEventListener(Event.CHANGE,onStepperChange);
        scheduleHour.dispatchEvent(new Event(Event.CHANGE));
        scheduleMinute.dispatchEvent(new Event(Event.CHANGE));
}

и

        public function onStepperChange (ev:Event) : void {
            var stepper:NumericStepper  = ev.currentTarget as NumericStepper;
            var num:String = stepper.value > 10 ? "" + stepper.value : "0" + stepper.value;
            stepper.mx_internal::inputField.text = num;
        }
...