自定义ComboBox时的注意事项
来源:互联网 发布:qq头像软件 编辑:程序博客网 时间:2024/05/17 06:35
今天自定义了ComboBox组件,现将自定义过程中需要注意的事项记录下来,以方便以后需要自定义的哥们少走弯路。
1.使用自己的ItemRender以后,很可能造成comboboxD容器dropdown的滚动条消失,combobox提供了dropdown的宽度的设置入口,却没有提供设置dropdown的入口,但他提供了获得dropdown的方法,于是你欣喜若狂,因为通常我们获得了某个组件,自然就可以设置更改这个组件的高度了,但是当你设定dropdown的高度后,你会发现结果并不是我们想象的那样,呵呵,我想这种结果正好向我们告知了flex的设计者只提供对dropdown的width的改变接口而不提供对heigth改变的接口的原因。咋办?终于找到解决的办法,你设定rowcount以后滚动条就自然出现了!
2.当你用自己的ItemRender后,而且你的渲染器中也出现了滚动条,此时一旦你用鼠标操作Render的滚动条部分,以查看Render的剩余未显示的内容,combobox就会close掉,但是这时候我们只是希望看到未显示的内容,并不希望combobox close掉,又得自己处理下了,监听ItemRender的Click事件,如果event.target是滚动条部分(Button or ScrollThumb)派发的就阻止事件继续进行.
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application name="ProgressBar_barColor_test"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="horizontal" horizontalGap="50"
verticalAlign="middle"
backgroundColor="white" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.events.ItemClickEvent;
import mx.events.ListEvent;
import flash.utils.setTimeout;
import mx.controls.Button;
import mx.controls.scrollClasses.ScrollThumb;
import mx.collections.ArrayCollection;
[Bindable]
internal var arr:ArrayCollection = new ArrayCollection();
private function init():void {
var m:MataterInfo = new MataterInfo();
m.label = "Apple";
m.url = "apple.com";
var mm:MataterInfo = new MataterInfo();
mm.label = "IBM";
mm.url = "ibm.com";
var mmm:MataterInfo = new MataterInfo();
mmm.label = "Lenovo";
mmm.url = "Lenovo.com";
var mmmm:MataterInfo = new MataterInfo();
mmmm.label = "Acer";
mmmm.url = "acer.com";
var o:MataterInfo = new MataterInfo();
o.label = "asdfk";
var oo:MataterInfo = new MataterInfo();
oo.label = "卡上地方";
var ooo:MataterInfo = new MataterInfo();
ooo.label = "000---asd";
var oooo:MataterInfo = new MataterInfo();
oooo.label = "222";
m.children = new ArrayCollection([o]);
mm.children = new ArrayCollection([oo]);
mmm.children = new ArrayCollection([ooo]);
mmmm.children = new ArrayCollection([oooo]);
arr.addItem(m);
arr.addItem(mm);
arr.addItem(mmm);
arr.addItem(mmmm);
}
internal function treeClickHandler(event:MouseEvent):void {
var obj:* = event.target;
if(obj is ScrollThumb || obj is Button){
event.stopPropagation();
}
}
internal function itemClickEHandler(event:ListEvent):void {
var target:Object = event.target;
var m:MataterInfo = target["selectedItem"] as MataterInfo;
if(m){
setTimeout(delayShowLabel,500,m);
}
}
private function delayShowLabel(m:MataterInfo):void {
//myCom.selectedItem = m;
}
private function comChangeHandler():void {
}
]]>
</mx:Script>
<mx:ComboBox id="myCom" prompt="分类选择" dataProvider="{arr}" rowCount="3" change="comChangeHandler()">
<mx:itemRenderer>
<mx:Component>
<mx:Tree width="50" height="60"
dataProvider="{data}"
labelField="label"
itemClick="outerDocument.itemClickEHandler(event)"
click="outerDocument.treeClickHandler(event)"/>
</mx:Component>
</mx:itemRenderer>
</mx:ComboBox>
</mx:Application>
- 自定义ComboBox时的注意事项
- Silverligh 自定义的combobox
- 【原创】ComboBox的用法及注意事项
- 简单的自定义Combobox控件
- 自定义多列的ComboBox
- Combobox下拉框绑定数据时,注意事项!
- Android自定义Seekbar时的注意事项
- 自定义泛型类的注意事项
- 自定义Seekbar的注意事项
- EasyUI combobox插件注意事项
- 自定义具有自动完成功能的ComboBox
- WPF 自定义带有数据源的combobox控件
- WPF的ComboBox 数据模板自定义
- 一个自定义的WPF ComboBox模板
- zteUI的combobox自定义年月显示
- ComboBox与DataGridView联合使用、ComboBox的SelectedIndexChanged和SelectionChangeCommitted事件的注意事项
- 自定义TexBox,自定义ComboBox
- 【AI插件】Flex4.6 DataGrid自定义ComboBox并获取自定义ComboBox的值
- vi 常用命令 总结
- 给你讲个故事吧
- 服务器安装CentOS 5.3及配置
- Section 1.4 Packing Rectangles
- 创建datatable伪数据
- 自定义ComboBox时的注意事项
- C++ 枚举类型的思考
- 英语词,希腊源
- 希腊神话与英语词汇
- C++中的拷贝构造函数
- 第八章 队列和优先级队列
- keep myself activity
- 路器由密布的恢复.(以2600为例)
- 内存对齐的规则以及作用(转)