- 浏览: 584270 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
liugang_ok:
zhao_rock 写道看到这篇文章时已经是2015年11月2 ...
毕业三年之际写给可能迷茫的你我 -
ning2-eye:
...
2015年总结和2016年计划 -
sxdtzhaoxinguo:
我竟然看完了,很受启发!
2015年总结和2016年计划 -
hottymg:
...
2015年总结和2016年计划 -
hangzhoujava:
伪命题很多,比如有许多的上市公司还不如未上市公司,大家心里还是 ...
2015年总结和2016年计划
下面自定义class继承ComboBox类,实现的功能是将下拉列表框中的数据通过手工录入检索,而不是通过下拉列表选择,对于下拉列表中数据较多非常方便。需要注意的是,如果ComboBox中有chang事件,需要进行判断ComboBoxId.selectIndex != -1;否则或报空对象异常。
package components.common
{
import flash.events.Event;
import flash.events.FocusEvent;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import mx.collections.ICollectionView;
import mx.controls.Alert;
import mx.controls.ComboBox;
import mx.core.UIComponent;
import view.customer.viewCustomer;
public class AutoComplete extends ComboBox
{
public function AutoComplete()
{
super();
init();
}
private function init():void{
editable=true;
rowCount=5;
selectedIndex=-1;
isTextBoxStringChange=false;
isfocusInDropDown=false;
isAutoComplete=false;
//伪装成TextBox
setStyle("cornerRadius",0);
setStyle("arrowButtonWidth",0);
setStyle("fontWeight","normal");
setStyle("paddingLeft",0);
}
//获得焦点时,是否自动弹出下拉框,get set
private var isfocusInDropDown:Boolean=false;
//是否自动完成,get set
private var isAutoComplete:Boolean=false;
//类默认过滤函数,get set
private var _filterFunction:Function = myFilterFunction;
//文本是否发生了变化
private var isTextBoxStringChange:Boolean=false;
//按下的键是否是退格键
private var isBackSpaceKeyDown:Boolean=false;
/**
* 处理退格键按下的情况
*/
override protected function keyDownHandler(event:KeyboardEvent):void
{
if(!event.ctrlKey&&!event.shiftKey)
{
if(event.keyCode == Keyboard.BACKSPACE)
{
close();
isBackSpaceKeyDown=true;
}
else
{
isBackSpaceKeyDown=false;
}
//当按UP键向上选择时,到达最顶时,显示用户原来所需文字
if(event.keyCode == Keyboard.UP && selectedIndex==0)
{
selectedIndex=-1;
}
}
super.keyDownHandler(event);
}
/**
* 数据源发生变化,数据不为0弹出下拉列表
*/
override protected function collectionChangeHandler(event:Event):void
{
super.collectionChangeHandler(event);
if(dataProvider.length>0&&text!="")
{
// Alert.show(textInput.text+","+textInput.text.length);
open();
}
}
/**
* Displays the drop-down list.
*/
override public function open():void{
if(text!=""){
// Alert.show(textInput.text+","+text+"open()!!!"+isTextBoxStringChange);
super.open();
}
}
/**
* 获得焦点
*/
override protected function focusInHandler(event:FocusEvent):void{
if(isfocusInDropDown) open();
//
super.focusInHandler(event);
}
/**
* 文本发生变化时
*/
override protected function textInput_changeHandler(event:Event):void
{
// Alert.show(textInput.text+" text change!");
if(textInput.text == ""){
// Alert.show(textInput.text+",null");
isTextBoxStringChange=false;
}
else{
// Alert.show(textInput.text+","+event.toString());
isTextBoxStringChange=true;
super.textInput_changeHandler(event);
invalidateProperties();//调用该方法,随后会触发调用commitProperties()
}
}
override protected function commitProperties():void{
if(isTextBoxStringChange&&textInput.text!=""){
prompt=text;
filter(); //进行匹配项的查找
if(isAutoComplete&&!isBackSpaceKeyDown){
var autoCompleteString:String="";
if(dataProvider.length>0)
{
autoCompleteString=itemToLabel(dataProvider[0]);
textInput.setSelection(prompt.length,autoCompleteString.length);
prompt=autoCompleteString;
}
else{
textInput.setSelection(textInput.selectionEndIndex,textInput.selectionEndIndex);
}
}
else{
textInput.setSelection(textInput.selectionEndIndex,textInput.selectionEndIndex);
}
}
super.commitProperties();
}
/**
* 与TextBox同样的宽度
*/
override protected function measure():void
{
super.measure();
measuredWidth=UIComponent.DEFAULT_MEASURED_WIDTH;
}
/**
* 过滤操作
*/
private function filter():void{
var tmpCollection:ICollectionView = dataProvider as ICollectionView;
tmpCollection.filterFunction = _filterFunction;
tmpCollection.refresh();
}
/**
* 过滤函数
*/
private function myFilterFunction(item:Object):Boolean
{
var myLabel:String = itemToLabel(item);
if(myLabel.substr(0,text.length).toLowerCase() == prompt.toLowerCase())
{
return true;
}
return false;
}
/************************Get Set 属性**********************************/
public function get FilterFunction():Function{
return _filterFunction;
}
public function set FilterFunction(filterFunction:Function):void{
_filterFunction=filterFunction;
}
public function get IsfocusInDropDown():Boolean{
return isfocusInDropDown;
}
public function set IsfocusInDropDown(value:Boolean):void{
isfocusInDropDown=value;
}
public function get IsAutoComplete():Boolean{
return isAutoComplete;
}
public function set IsAutoComplete(value:Boolean):void{
isAutoComplete=value;
}
}
}
发表评论
-
Flex中调用js完成退出和全屏等功能
2013-11-06 11:39 12511、退出 在Flex中调用js的代码为 ExternalIn ... -
Flex浏览器标题中文乱码&AS调JS传参中文乱码
2013-09-18 18:27 32491、Flex中设置标题栏有两种方式,一种是在Applicati ... -
Flex Builder4.5 自动import包
2013-05-03 11:11 1628打开“首选参数” >> Flash Builder ... -
只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源
2013-01-11 11:48 4657在没有网络环境下的本地文件 目前在用Flex Build ... -
Flash AS3[转载]Error #2037: 函数调用序列不正确,或前面的调用不成功。
2012-11-05 16:58 1876Error #2037: 函数调用序列不正确,或前面的调用不成 ... -
DataGrid的一些关键属性
2012-10-16 15:36 1524DataGrid控件提供以下功能: 列可以具有不同宽度或同一 ... -
RIA/FLASH/FLEX
2012-06-01 14:29 1106RIA是macromedia在2004年提 ... -
The entity name must immediately follow the '&' in the entity reference.
2012-05-23 17:20 8288在flex中出现上述错误,是因为不识别&标识符,需要将 ... -
Flash Builder Default Browser(默认浏览器)
2012-04-18 11:09 1300菜单栏:Window->Preferences-> ... -
自定义事件实例
2012-03-27 16:28 1059重新回顾下自定义事件: 1 在派生组件中声明metadata元 ... -
Flex+Java+BlazeDS多文件上传
2012-03-12 23:13 2650Flex文件上传功能,后台服务器管理用Java,通信工具Bla ... -
利用java 后台导出Flex DataGrid为Excel
2011-12-05 17:35 3386利用java服务器端导出datagrid数据。附件两个项目分别 ... -
提高flex应用性能方法(二)
2011-11-21 11:48 28871. 不要使用new操作符创建数组,应使用 var a = ... -
提高flex应用性能方法(一)
2011-11-21 11:46 2773在RIA应用开发过程中,性能一直是我们关注的一个重点;生成sw ... -
Flex遍历ValueObject对象
2011-10-20 18:46 1919//_menu 为遍历对象 ... -
在as中给itemRenderer属性赋值
2011-09-23 11:48 1354首先申明一个ClassFactory类型的对象,将自定义组件置 ... -
flex记住密码等操作
2011-09-16 16:14 25271 在密码正确的情况下,如果“记住密码”是选中的,那么将用户名 ... -
日期的int变量小于10时补0
2011-09-15 17:41 1923很简单,就是用DateFormatter类实现 <Dat ... -
Flex Tree展开所有或某个节点
2011-09-14 14:23 6940flex Tree展开方法 1 tree.expandChil ... -
flex PopUpManager弹出窗口
2011-09-12 20:35 16055flex PopUpManager类 PopUpMana ...
相关推荐
DataGridView控件中加入ComboBox下拉列表框
vs2008演示演示ComboBox下拉列表控件的使用实例
在DataGridView控件中加入ComboBox下拉列表框的实现
一款非常实用的C# 的combobox的第三方控件,可以实现下拉后在下拉框中添加图片的功能,忘对有此功能需求的朋友所有帮助。
在DataGridView控件中加入ComboBox下拉列表框的实现案例
在COMBOBOX下拉框中显示图片。
combobox下拉时间选择控件,附源码
改变ComboBox下拉高度/强行展开下拉表/自动查询列表/多列下拉框/XP风格Combobox/带图标的ComboBox 多个与ComboBox相关的源码工程下载
VC.NET2005_ComboBox下拉列表框。包括2个实例,一个work文档资料。
ComboBox下拉框内字体加颜色 在COMBOBOX内重画得到的字体加颜色
对WPF的ComboBox进行了扩展,现在可以在下拉列表中嵌入DataGrid/ListView/ListBox等数据控件,实现了展开后列表的自动选择,自动滚屏,并完全支持数据的绑定操作
在datagridview中使用combobox下拉列表框,datetimepicker 日期选择框
delphi7实现 combobox下拉hint
本程序示例了VC中的下拉列表控件ComboBox控件的基本使用,有添加项目,根据用户选择某项做相应的功能
3、在下拉列表中可显示自定义的多列数据。 4、可在下拉列表中通过输入关键字,自动搜索符合条件的数据行。 5、可指定不同的值列和显示列。 6、可设置是否显示行头和列头。 7、程序根据显示列的多少和宽度,自动调整...
VB.Net开发一个小程序时候,用到一个显示多列的ComboBox,而且从数据库中取出来的数据表要绑定到一个ComboBox中。找来找去,找不到。上Baidu Google很多人说:在VB.Net中的ComboBox只能绑定一列数据。以前的VBA和VB的...
使用Blend 对ComboBox控件进行模板样式重写
开发工具:VS2010 语言:C# 功能:ComboBox下拉颜色条
一款非常实用的combobox的第三方控件,可以实现让其combobox下拉出TreeView,且可以对TreeView进行相关的选择,且只能选择树形数据中的最底层数据,选择后的数据的所有父节点也都相应的递归显示出来。非常实用,忘对...
本文实例为大家分享了EasyUI Combobox下拉列表的具体代码,供大家参考,具体内容如下 1. html代码 性别: <input class="easyui-combobox" style="width: 100px;" type="text" id="gender" /> 2.显示 3.js...