- 浏览: 594107 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
liugang_ok:
zhao_rock 写道看到这篇文章时已经是2015年11月2 ...
毕业三年之际写给可能迷茫的你我 -
ning2-eye:
...
2015年总结和2016年计划 -
sxdtzhaoxinguo:
我竟然看完了,很受启发!
2015年总结和2016年计划 -
hottymg:
...
2015年总结和2016年计划 -
hangzhoujava:
伪命题很多,比如有许多的上市公司还不如未上市公司,大家心里还是 ...
2015年总结和2016年计划
只要调用下面AutoComplete后即可实现录入关键字动态提示
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;
}
}
}
注意:在引用该ComboBox后,如果下拉列表中的数据是从库中查出来的,那么在显示时会闪出一个下拉列表框,很不顺眼。解决办法:首先在往库中查询全部数据后,应当清空ComboBox,接着再给ComboBox中的data和label赋值,就可以避免闪出方框。
combobox中数据是在初次加载时从库中获取到的,然后将值赋给dataprovider属性,当在输入文字时会自动匹配。dataprovider的值是一次加载,如果库中的数据源变更了,需要单独触发查询事件,把数据查出来赋给dataprovider,在输入改变时应该是不调整dataprovider值
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;
}
}
}
注意:在引用该ComboBox后,如果下拉列表中的数据是从库中查出来的,那么在显示时会闪出一个下拉列表框,很不顺眼。解决办法:首先在往库中查询全部数据后,应当清空ComboBox,接着再给ComboBox中的data和label赋值,就可以避免闪出方框。
评论
4 楼
liugang_ok
2012-10-12
zjlzlr 写道
你好,请问输入的时候如何能与后台交互呀?就是在输入改变的时候怎样动态改变dataProvider值?
combobox中数据是在初次加载时从库中获取到的,然后将值赋给dataprovider属性,当在输入文字时会自动匹配。dataprovider的值是一次加载,如果库中的数据源变更了,需要单独触发查询事件,把数据查出来赋给dataprovider,在输入改变时应该是不调整dataprovider值
3 楼
zjlzlr
2012-10-11
你好,请问输入的时候如何能与后台交互呀?就是在输入改变的时候怎样动态改变dataProvider值?
2 楼
xcloading
2012-05-23
可以给我一个案列吗/
1 楼
xcloading
2012-05-23
在引用该ComboBox后,如果下拉列表中的数据是从库中查出来的,那么在显示时会闪出一个下拉列表框,很不顺眼。解决办法:首先在往库中查询全部数据后,应当清空ComboBox,接着再给ComboBox中的data和label赋值,就可以避免闪出方框。可以告诉我具体的嘛?现在就遇到这问题了
发表评论
-
Flex中调用js完成退出和全屏等功能
2013-11-06 11:39 12861、退出 在Flex中调用js的代码为 ExternalIn ... -
Flex浏览器标题中文乱码&AS调JS传参中文乱码
2013-09-18 18:27 33331、Flex中设置标题栏有两种方式,一种是在Applicati ... -
Flex Builder4.5 自动import包
2013-05-03 11:11 1668打开“首选参数” >> Flash Builder ... -
只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源
2013-01-11 11:48 4756在没有网络环境下的本地文件 目前在用Flex Build ... -
Flash AS3[转载]Error #2037: 函数调用序列不正确,或前面的调用不成功。
2012-11-05 16:58 1924Error #2037: 函数调用序列不正确,或前面的调用不成 ... -
DataGrid的一些关键属性
2012-10-16 15:36 1602DataGrid控件提供以下功能: 列可以具有不同宽度或同一 ... -
RIA/FLASH/FLEX
2012-06-01 14:29 1163RIA是macromedia在2004年提 ... -
The entity name must immediately follow the '&' in the entity reference.
2012-05-23 17:20 8361在flex中出现上述错误,是因为不识别&标识符,需要将 ... -
Flash Builder Default Browser(默认浏览器)
2012-04-18 11:09 1353菜单栏:Window->Preferences-> ... -
自定义事件实例
2012-03-27 16:28 1094重新回顾下自定义事件: 1 在派生组件中声明metadata元 ... -
Flex+Java+BlazeDS多文件上传
2012-03-12 23:13 2733Flex文件上传功能,后台服务器管理用Java,通信工具Bla ... -
利用java 后台导出Flex DataGrid为Excel
2011-12-05 17:35 3444利用java服务器端导出datagrid数据。附件两个项目分别 ... -
提高flex应用性能方法(二)
2011-11-21 11:48 29741. 不要使用new操作符创建数组,应使用 var a = ... -
提高flex应用性能方法(一)
2011-11-21 11:46 2843在RIA应用开发过程中,性能一直是我们关注的一个重点;生成sw ... -
Flex遍历ValueObject对象
2011-10-20 18:46 1959//_menu 为遍历对象 ... -
在as中给itemRenderer属性赋值
2011-09-23 11:48 1411首先申明一个ClassFactory类型的对象,将自定义组件置 ... -
flex记住密码等操作
2011-09-16 16:14 25731 在密码正确的情况下,如果“记住密码”是选中的,那么将用户名 ... -
日期的int变量小于10时补0
2011-09-15 17:41 1984很简单,就是用DateFormatter类实现 <Dat ... -
Flex Tree展开所有或某个节点
2011-09-14 14:23 6989flex Tree展开方法 1 tree.expandChil ... -
flex PopUpManager弹出窗口
2011-09-12 20:35 16119flex PopUpManager类 PopUpMana ...
相关推荐
Flex Combobox联动效果是Adobe Flex开发中的一个常见功能,它涉及到UI组件的交互与数据绑定。在Flex中,Combobox是一种下拉选择框,它允许用户从预定义的选项列表中选择一个值,同时也可以手动输入。联动效果则是指...
在Flex编程中,ComboBox是一个常用的组件,用于提供下拉列表让用户选择。这个“flex ComboBox checkbox”的主题涉及到在ComboBox中集成复选框(checkbox)的功能,这使得用户可以选择多个选项,而不仅仅是单选。下面...
Flex Combobox是一款在Adobe Flex框架下使用的组件,它结合了下拉列表和文本输入框的功能,用户可以在输入框中输入文字,同时从下拉列表中选择一个匹配项。在本实例中,我们将深入探讨如何利用Flex 4实现Combobox的...
Flex ComboBox 是一种强大的用户界面组件,它结合了下拉列表(ComboBox)和树形结构(Tree)的功能,为用户提供了一种交互式的数据选择方式。在Flex应用中,这种控件通常用于显示层次化的数据,允许用户从多个层级的...
在Flex编程领域,ComboBox是一个常用的组件,它提供了一个下拉列表供用户选择,通常用于实现单选功能。然而,有时我们需要在ComboBox中嵌入多选功能,这时可以通过添加Checkbox来实现。本文将深入探讨如何在Flex中的...
flex4中不能使用combobox,该类是用LIST 自写的一个代替类
1.采用ActionScript3.0编写。 2.仿Google联想输入框。 3.可识别汉语拼音,字符及汉字。 4.精简算法,能够秒出内容。 5.带有注释。...在Flex 可视化编辑界面直接拖出就行。 有问题或者BUG 可联系QQ:408955289
- `missingMessage`定义未选择值时的提示信息。 - `valueField`和`textField`分别指定值和文本字段。 - `method`和`url`用于远程加载数据,这里我们使用的是本地数据,所以`mode`设为"local"。 - `onHidePanel`...
C# ComboBox输入智能提示补全,自动提示,很不错的案例!
在Flex编程中,ComboBox是一个非常常用的组件,它结合了输入框和下拉列表的功能,让用户可以从预设的选项中选择一个值。然而,标准的ComboBox通常仅支持简单的列表项显示,而不能展示层级结构的数据。当需要处理具有...
在IT行业中,动态加载是提高用户体验和网页性能的重要技术之一,尤其在处理大量数据或选项时,如ComboBox(下拉列表框)控件。本文将深入探讨如何在ASP(Active Server Pages)环境中实现ComboBox的动态加载,并结合...
在Flex开发中,ComboBox组件是一种常用的用户界面元素,它结合了文本输入框和下拉列表的功能,用户可以从中选择一个项目。在某些情况下,我们可能希望禁用ComboBox的编辑功能,使其变为只读模式,同时还要保持良好的...
在Flex编程中,数据网格(DataGrid)是用于展示大量结构化数据的组件,而ComboBox是一种下拉选择框,常用于提供用户可选择的选项。当我们需要在DataGrid的不同列中实现ComboBox的联动效果时,即在一个ComboBox的选择...
在Flex编程中,ComboBox是一个非常常用的组件,它允许用户从一组下拉选项中选择一个值。然而,有时候我们可能需要更复杂的功能,比如在ComboBox中嵌套Checkbox,让用户可以选择一个或多个选项。这个主题——“flex中...
在Flex编程中,ComboBox是一个常用的组件,用于展示可选择的下拉列表。它结合了输入框和下拉列表的功能,用户可以直接输入或者从列表中选择一个选项。在某些场景下,我们可能希望实现ComboBox的自动过滤功能,即当...
在Flex开发中,DataGrid是一种常用的组件,用于展示表格数据,而Combobox列则可以提供下拉选择功能,增强用户交互。然而,在实际应用中,我们可能会遇到一些问题,比如在DataGrid中嵌入Combobox列,并且允许用户拖动...
在某些情况下,我们可能希望实现ComboBox的动态模糊查询功能,即用户在输入框中输入文本时,ComboBox会实时过滤并显示匹配的选项。这在大数据量的下拉列表中尤其有用,可以提高用户体验。下面我们将详细讨论如何实现...
资源名:VB基于ComboBox控件的自动匹配查询内容实例源码 资源类型:程序源代码 源码说明:VB基于ComboBox控件的自动匹配查询内容实例 autocomplete 自动完成 适合人群:新手及有一定经验的开发人员
有时候由于项目需求的需要,需要实现像百度那样输入关键字后有下拉框提示,在网上搜了下,一种是利用ComboBox和TextBox的AutoCompleteMode属性,个人感觉不太灵活,关键字只能从第一个字符开始匹配,不能实现任意...
QtQuick.Controls提供了ComboBox组件,该组件能够满足日常的下拉选择框的需求,但当需要用户在ComboBox中通过输入关键字进行自动匹配时,原生的组件虽然提供了editable属性用于输入关键字,但是匹配内容不弹出下拉框...