package cn.newtouch.flexDemo.business.validator
{
import mx.binding.utils.BindingUtils;
import mx.containers.FormItem;
import mx.controls.Alert;
import mx.controls.ComboBox;
import mx.controls.DateField;
import mx.controls.TextArea;
import mx.controls.TextInput;
import mx.core.Container;
import mx.core.UIComponent;
import mx.validators.StringValidator;
import mx.validators.Validator;
public class ValidatorUtil
{
public static function setValidate(container:Container,params:Array):void{
for each(var param:ValidateParam in params){
if(param.option == ValidateParam.REQUIRED){
Alert.show("come in");
trace("wo dao le zhe li");
setRequired(container,param.objectArray);
Alert.show(param.objectArray.length.toString());
}else if(param.option == ValidateParam.READONLY){
//setTextLength(container,param.objectArray);
}
}
}
public static function setRequired(container:Container,objectsArray:Array):void{
for each(var object:Object in objectsArray){
if(object is UIComponent){
if((object as UIComponent).parent is FormItem){
((object as UIComponent).parent as FormItem).required = true;
var validator:Validator = new Validator();
validator.required = true;
validator.property = "text";
validator.source = object;
validator.requiredFieldError = "请输入"+((object as UIComponent).parent as FormItem).label;
}
}
}
}
private static function setReadOnly(container:Container,objectsArray:Array):void{
for each(var object:Object in objectsArray){
if(object is TextInput){
(object as TextInput).editable = false;
}else if(object is TextArea){
(object as TextArea).editable = false;
}else if(object is ComboBox){
(object as ComboBox).enabled = false;
}else if(object is DateField){
(object as DateField).editable = false;
}
}
}
public static function setTextLength(container:Container,objectsArray:Array,maxLength:int,minLength:int):void{
for each(var object:Object in objectsArray){
if(object is TextInput){
(object as TextInput).visible = false;
var stringvalidator:StringValidator = new StringValidator();
stringvalidator.maxLength = maxLength;
stringvalidator.minLength = minLength;
stringvalidator.property = "text"
stringvalidator.source = object;
stringvalidator.tooLongError = "输入信息过长";
stringvalidator.tooShortError = "输入信息过短";
}
}
}
public static function setHidden(container:Container,objectsArray:Array):void{
for each(var object:Object in objectsArray){
if(object is UIComponent){
(object as UIComponent).visible = false;
Alert.show((object as UIComponent).parent+"");
((object as UIComponent).parent as FormItem).visible = false;
((object as UIComponent).parent as UIComponent).includeInLayout = false;
}
}
}
}
}
在设置UI的Visible的时候,改组件的位置一直被占着,比较恶心,今天在这里发现了一个方法,操作方法如下
设置:includeInLayout为false即可