Flex 多选 ComboBox
来源:互联网 发布:软件数据线 v6.6 编辑:程序博客网 时间:2024/05/02 00:04
说多了墨迹,直接帖代码
MyClassFactory 类 如下:
import flash.display.DisplayObject;import mx.core.ClassFactory;import mx.states.OverrideBase;public class MyClassFactory extends ClassFactory{public function MyClassFactory(generator:Class=null){super(generator);}private var eventArray:Array=new Array();private var _properties:Array=new Array();public function addInitEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0,useWeakReference:Boolean=false):void{eventArray.push({type:type,listener:listener,useCapture:useCapture,priority:priority,useWeakReference:useWeakReference});}public function addInitProperties(key:String,value:*):void{_properties.push({key:key,value:value});}override public function newInstance():*{trace("MyClassFactory.newInstance();");var obj:*=super.newInstance();var event:Object;if(eventArray!=null&&eventArray.length>0&&obj as DisplayObject){var i:int=0;for(i=0;i<_properties.length;i++){event=_properties[i];if(event.value is Function){obj[event.key]=event.value();}else{obj[event.key]=event.value;}}for(i=0;i<eventArray.length;i++){event=eventArray[i];DisplayObject(obj).addEventListener(event.type,event.listener,event.useCapture,event.priority,event.useWeakReference);}}return obj}}
MyComboBox 类 如下:
import flash.events.Event;import flash.events.MouseEvent;import mx.collections.ArrayCollection;import mx.controls.ComboBox;import mx.controls.List;import mx.controls.listClasses.ListBase;import mx.core.ClassFactory;import mx.events.FlexEvent;import mx.events.FlexMouseEvent;import mx.events.ListEvent;import mx.events.SandboxMouseEvent;public class MyComboBox extends ComboBox{public function MyComboBox(){super();this.dropdownFactory=new MyClassFactory(List);this.getDropdownFactory().addInitEventListener(ListEvent.CHANGE,dropdown_Change,false,1);this.getDropdownFactory().addInitEventListener(MouseEvent.MOUSE_DOWN, dropdown_mouseDownHandler);this.getDropdownFactory().addInitEventListener(FlexMouseEvent.MOUSE_DOWN_OUTSIDE, dropdown_mouseOutsideHandler);this.getDropdownFactory().addInitEventListener(FlexMouseEvent.MOUSE_WHEEL_OUTSIDE, dropdown_mouseOutsideHandler);this.getDropdownFactory().addInitEventListener(SandboxMouseEvent.MOUSE_DOWN_SOMEWHERE, dropdown_mouseOutsideHandler);this.getDropdownFactory().addInitEventListener(SandboxMouseEvent.MOUSE_WHEEL_SOMEWHERE, dropdown_mouseOutsideHandler);this.getDropdownFactory().addInitProperties("allowMultipleSelection",true);this.getDropdownFactory().addInitProperties("selectedItems",getSelectedItems);}private var _selectedItems:Array;private var _selectedIndices:Array;private var _separation:String=",";[Bindable("change")][Bindable("valueCommit")]public function get selectedItems():Array{return _selectedItems==null?[]:_selectedItems;}public function set selectedItems(array:Array):void{var t:String;this._selectedItems=array;this.text=selectedLabel;}[Bindable("change")][Bindable("valueCommit")]public function get selectedIndices():Array{return _selectedIndices!=null?_selectedIndices:[];}public function set selectedIndices(array:Array):void{this._selectedIndices=array;}/** * Label 分隔符 * */public function get separation():String{return this._separation;}public function set separation(value:String):void{this._separation=value;}public function getSelectedItems():Array{return this.selectedItems;}/** * 选中项时,Ctrl 是否按下 * */private var ctrlKey:Boolean=false;private function dropdown_Change(event:ListEvent):void{var listBase:ListBase=event.currentTarget as ListBase;this.selectedItems=listBase.selectedItems;this.selectedIndices=listBase.selectedIndices;trace("dropdown_Change-----"+"selectedItems:"+selectedItems.length+"\t"+"selectedIndices:"+selectedIndices.length);}private function dropdown_mouseDownHandler(event:MouseEvent):void{ctrlKey=event.ctrlKey;}private function dropdown_mouseDownOutSide(event:FlexMouseEvent):void{close();}override public function close(trigger:Event=null):void{if(!ctrlKey){super.close(trigger);//未按下 Ctrl 时 关闭}}override public function get selectedLabel():String{var array:Array=this.selectedItems;var result:String="";for(var i:int=0;i<array.length;i++){result+=itemToLabel(array[i]);if(i!=(array.length-1)){result+=separation;}}return result;}public function getDropdownFactory():MyClassFactory{return super.dropdownFactory as MyClassFactory;}/** * @private */private function dropdown_mouseOutsideHandler(event:Event):void{trace("selectedItems:"+selectedItems.length+"\t"+"selectedIndices:"+selectedIndices.length);if (event is MouseEvent){var mouseEvent:MouseEvent = MouseEvent(event);if (!hitTestPoint(mouseEvent.stageX, mouseEvent.stageY, true)){super.close(event);}}else if (event is SandboxMouseEvent) {super.close(event);}}}
调用代码 如下:
<my:MyComboBox width="180"><my:dataProvider><s:ArrayCollection><fx:String>选项一</fx:String><fx:String>选项二</fx:String><fx:String>选项三</fx:String><fx:String>选项四</fx:String><fx:String>选项五</fx:String></s:ArrayCollection></my:dataProvider></my:MyComboBox>
(按Ctrl 点击选择项 为多选)
- Flex 多选 ComboBox
- SandboxMouseEvent, FlexMouseEvent,Flex 多选 ComboBox
- Flex基础控件--ComboBox
- flex ComboBox控件 学习
- flex ComboBox用法
- flex表单验证---combobox
- Flex ComboBox使用例子
- Flex ComboBox控件
- Flex样式-ComboBox篇
- FLEX mx:combobox用法
- flex中扩展combobox功能
- flex中扩展combobox功能
- flex彩色文字的ComboBox
- Flex combobox 加载远程数据
- flex ComboBox 打开关闭验证
- FLEX COMBOBOX前端绑定数据
- flex基础篇之combobox
- Flex当中combobox的用法
- Solaris 10服务器上配置ssh服务
- Eclipse下如何看logcat 和引入jar包
- UCHOME2.0积分机制分析
- android上获取MSN邮件列表
- DLL的远程注入及卸载技术详解
- Flex 多选 ComboBox
- Poj1180 Batch Scheduling --- DP的斜率优化
- ActivityGroup + GridView 实现Tab分页标签
- 不再言必称重构优化
- 多核学习在图像分类中的应用
- Web Services 的理解及SOAP, WSDL, UDDI的关系
- hdu 1059 Dividing
- 排序算法之选择排序
- UTF-8与GBK之间的区别