在我的CSDN资源中有项目工程文件。下载导入工程即可看到效果,下面是地址。

http://download.csdn.net/detail/cym_lmy/6326053

MyCombBoxTree1.as

package com.cym
{
 import flash.events.MouseEvent;
 
 import flashx.textLayout.events.ScrollEvent;
 
 import mx.collections.IList;
 import mx.controls.Alert;
 import mx.controls.Tree;
 import mx.events.ListEvent;
 import mx.managers.PopUpManager;
 
 import spark.components.ComboBox;
 import spark.events.DropDownEvent;
 
 public class MyCombBoxTree1 extends ComboBox
 {
  private var _tree:Tree;
  private var __dataProvider:IList;
  private var _dropDownWidth:int;
  public var _dropDownHeight:int;
  public var xzqhbm:String;
  public var xzqhbmField:String;
  override protected function createChildren():void {
   addEventListener(DropDownEvent.OPEN, dropDownControllerOpenHandler);
   addEventListener(DropDownEvent.CLOSE, dropDownControllerCloseHandler);
   super.createChildren();
  }
  override public function set dataProvider(value:IList):void {
   __dataProvider = value;
  }
  private function dropDownControllerOpenHandler(event:DropDownEvent):void {
   if (!_tree) {
    _tree = new Tree();
   }
   _tree.dataProvider = __dataProvider;
   _tree.labelField = this.labelField;
   _tree.width = _dropDownWidth ? _dropDownWidth : this.width;
   _tree.height = _dropDownHeight ? _dropDownHeight : 150;
   popUpTree();
   StopLisentEventHandle();
  }
  
 public function dropDownControllerCloseHandler(event:DropDownEvent):void {
  if (this._tree) {
   PopUpManager.removePopUp(this._tree);
   this.textInput.text = this._tree.selectedItem ? this._tree.selectedItem[this._tree.labelField] : '';
   xzqhbm = this._tree.selectedItem ? this._tree.selectedItem[xzqhbmField] : '';
   var treeboxevent:TreecomboboxEvent = new TreecomboboxEvent(xzqhbm);
   this.dispatchEvent(treeboxevent);
   
  }
 }
 
 override protected function dropDownController_closeHandler(event:DropDownEvent):void
 {
  if(_tree.selectedItem){
   StartLisentEventHandle();
   super.dropDownController_closeHandler(event);
  }
 }
 
 /**
  * 定位弹出窗口
  *
  */
 private function popUpTree():void {
  this._tree.x = this.dropDownController.dropDown.x;
  this._tree.y = this.dropDownController.dropDown.y;
  PopUpManager.addPopUp(this._tree, this);
 }
 /**
  * 停止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。
  * */
 private function  StopLisentEventHandle():void {
  this.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  this.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  this.addEventListener(MouseEvent.MOUSE_WHEEL, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  _tree.addEventListener(MouseEvent.MOUSE_WHEEL, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
 }
 /**
  * 恢复对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。
  * */
 private function  StartLisentEventHandle():void {
  this.removeEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  this.removeEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  this.removeEventListener(MouseEvent.MOUSE_WHEEL, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
  _tree.removeEventListener(MouseEvent.MOUSE_WHEEL, function(e:MouseEvent):void {
   e.stopImmediatePropagation();
  });
 }
 private function set dropDownHeight(value:int):void {
  this._dropDownHeight = value;
 }

public function MyCombBoxTree1()
  {
   super();
  }
 }
}

TreecomboboxEvent.as

package com.cym
{
 import flash.events.Event;
 
 public class TreecomboboxEvent extends Event
 {
  public static const NAME:String="treecomboboxevent";
  private var _data:Object;
  public function TreecomboboxEvent(data:Object=null)
  {
   super(NAME, false, false);
   this._data=data;
  }
  public function get data():Object
  {
   return _data;
  }
  
  public function set data(value:Object):void
  {
   _data = value;
  }
 }
}

测试

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx"
      minWidth="955" minHeight="600"
      xmlns:cym="com.cym.*"
      creationComplete="loadXML()">
 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
 </fx:Declarations>
 <fx:Script>
  <![CDATA[
   import com.cym.TreecomboboxEvent;
   
   import mx.collections.ArrayCollection;
   import mx.collections.XMLListCollection;
   import mx.rpc.events.ResultEvent;
   import mx.rpc.http.HTTPService;
   public var xmlService:HTTPService = new HTTPService();
   [Bindable]
   public var xmlResult:XML;
   [Bindable]
   public var xmlList:XMLList;
   [Bindable]
   public var xmlTeams:XMLListCollection;
   public function loadXML():void
   {
    xmlService.url = "mlb.xml"                
    xmlService.resultFormat = "e4x";
    xmlService.addEventListener(ResultEvent.RESULT, resultHandler);
    xmlService.send();
   }
   
   public function resultHandler(event:ResultEvent):void
   {
    xmlResult = XML(event.result);
    xmlList = xmlResult.children();
    xmlTeams = new XMLListCollection(xmlList);
    cg.addEventListener(TreecomboboxEvent.NAME,ceshi);
   }
   public function ceshi(event:TreecomboboxEvent):void{
    haha.text=event.data.toString();
   }
  ]]>
 </fx:Script>
 <fx:Style>
  @namespace s "library://ns.adobe.com/flex/spark";
  @namespace mx "library://ns.adobe.com/flex/mx";
  @namespace cym "com.cym.*";
  mx|Tree{
   defaultLeafIcon:ClassReference(null);
   folderOpenIcon:ClassReference(null);
   folderClosedIcon:ClassReference(null);
  }
 </fx:Style>
 <mx:HBox>
  <cym:MyCombBoxTree1 id="cg" dataProvider="{xmlTeams}" labelField="@label" _dropDownHeight="200" xzqhbmField="@id"/>
  <s:TextInput id="haha"/>
 </mx:HBox>
</s:Application>

FlexComboBoxTree的更多相关文章

随机推荐

  1. amcharts报表制作

    fusioncharts官网:http://www.fusioncharts.com/demos/gallery/#column-and-bar 最近使用amcharts fb4,flashBuild ...

  2. [iOS] 创建第一个应用程序项目

    开发环境:MacBook Pro XCode 5.0.1 1. 创建新的空的工程 2. 手动添加Controller 3. 将Controller添加到AppDelegate 4. 编辑.xib 5. ...

  3. LeetCode 58 Spiral Matrix II

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  4. 【转】Difference between Point-To-Point and Publish/Subscribe JMS Messaging Models

    Difference between Point-To-Point and Publish/Subscribe JMS Messaging Models   Point-to-Point (PTP) ...

  5. DevExpress ASPxHtmlEditor控件格式化并导出Word (修复中文字体导出丢失)

    在前台页面中先插入一个ASPxHtmlEditor控件,名为ASPxHtmlEditor1. 我用的Dev版本为14.1 格式化文本 在后台插入如下代码  1     const string css ...

  6. WebApi2官网学习记录---BSON

    BSON 是轻量级的,能够进行快速查询和高效的解码/编码.BSON方便查询是由于elements的前面都有一个表示长度的字段,所以解释器可以快速跳过这个elements:高效的解码/编码是因为nume ...

  7. C#图像处理(2):给图片加白边

    C#图片处理给图片添加白边: /// <summary> /// 在图片上方加入白边 /// </summary> /// <param name="Img&q ...

  8. 全世界最详细的图形化VMware中linux环境下oracle安装(一)【weber出品必属精品】

    安装流程:前期准备工作--->安装ORACLE软件--->安装升级补丁--->安装odbc创建数据库--->安装监听器--->安装EM <前期准备工作> 安装 ...

  9. wcf wpf

    转 http://blog.csdn.net/thunder09/article/details/5792157 WPF就是所谓下一代Windows界面层技术,我觉得还有满有前途的.不过Vista发布 ...

  10. pygame实现的黑白块游戏

    运行时需要pygame库. 下载地址:http://files.cnblogs.com/files/zzrom/white.zip 程序截图: