flex3 自定义控件

用于验证两个日期的大小。
在Flex3 中自定义控件需要重写 override protected function doValidation(value:Object):Array 方法
/**
 * @author 		
 * @date 		2010-07-01
 * @description	日期比较验证
 */
package com.xxxx.szecp.components.validator
{
	import com.founder.szecp.common.FounderUtils;
	
	import mx.controls.DateField;
	import mx.validators.ValidationResult;
	import mx.validators.Validator;

	public class DateCompareValidate extends Validator
	{
		private var resultsError:Array;			//错误数组
		private const errorStr : String = "结束日期必需大于开始日期!";
		private var _target:Object; //目标
		private var _targetProperty:String; //目标值

		[Inspectable(category="General")]
		public function get target():Object
		{
			return _target;
		}

		public function set target(value:Object):void
		{
			if (_target == value)
				return;

			if (value is String)
			{
				var message:String=resourceManager.getString("validators", "SAttribute", [value]);
				throw new Error(message);
			}
			_target=value;
		}



		[Inspectable(category="General")]
		public function get targetProperty():String
		{
			return _targetProperty;
		}

		public function set targetProperty(value:String):void
		{
			_targetProperty=value;
		}

		public function DateCompareValidate()
		{
			super();
		}

		override protected function doValidation(value:Object):Array
		{
			resultsError = [];
			resultsError=super.doValidation(value);
			dateValidation();
			return resultsError;
		}

		private function dateValidation():void
		{
			var i : int = compare(convertToStringDate(getValueFromSource().toString()),convertToStringDate(getValueFromTarget().toString()));
			if (i<0)
			{
				resultsError.push(new ValidationResult(true,"text","DateError",errorStr));
			}
		}

		protected function getValueFromTarget():Object
		{
			var message:String;

			if (_target && _targetProperty)
			{
				return _target[_targetProperty];
			}

			else if (!_target && _targetProperty)
			{
				message=resourceManager.getString("validators", "SAttributeMissing");
				throw new Error(message);
			}

			else if (_target && !_targetProperty)
			{
				message=resourceManager.getString("validators", "PAttributeMissing");
				throw new Error(message);
			}

			return null;
		}
		
		/**
		 * 比较两个日期大小
		 */
		private function compare(date1:Date, date2:Date):int
		{
			if (Number(date1) < Number(date2))
			{
				return -1
			}
			if (Number(date1) == Number(date2))
			{
				return 0;
			}
			return 1;
		}
		
		private function convertToStringDate(str : String) : Date
		{
			return DateField.stringToDate(str,"YYYY-MM-DD");
		}
	}
}
原文地址:https://www.cnblogs.com/warrior/p/1769966.html