- 浏览: 20148 次
- 性别:
- 来自: 成都
最近访客 更多访客>>
最新评论
-
danbaizhi:
这个代码有个小问题,ResourceManager.getIn ...
Flex打包swc的国际化应用 -
zhong_pro:
LZ,请问滚动不起来。开始后没反应。
模仿HTML跑马灯(Marquee) -
pizazz_ex:
包名可以在程序中找到
public class Wind ...
可以最小化停靠的弹出窗口 -
exingzhe:
你好pizazz-ex: 我尝试运行你的代码可是发现缺少W ...
可以最小化停靠的弹出窗口
组件是辅助选择的文本框,可以使用上下键选择,可以采用自定义数据,可以和后台进行交互,需要用到组件RemoteConn(已贴出)
组件代码:
组件执行:
视图:
组件代码:
package pizazz.flex4.component{ import flash.display.DisplayObjectContainer; import flash.events.Event; import flash.events.FocusEvent; import flash.events.KeyboardEvent; import flash.events.TimerEvent; import flash.geom.Point; import flash.utils.Timer; import mx.collections.ArrayCollection; import mx.collections.ArrayList; import mx.collections.IList; import mx.collections.XMLListCollection; import mx.events.FlexEvent; import mx.events.FlexMouseEvent; import mx.events.ListEvent; import mx.managers.PopUpManager; import mx.rpc.events.ResultEvent; import mx.rpc.remoting.RemoteObject; import pizazz.flex4.remote.RemoteConn; import spark.components.List; import spark.components.SkinnableContainer; import spark.components.TextInput; import spark.events.IndexChangeEvent; public class AutoTextInput extends TextInput{ protected var _param:Object = {}; protected var _rowCount:uint = 10; protected var _popUpList:List; protected var _labelField:String = ""; protected var _dataField:String = ""; protected var _isCustomData:Boolean = false; protected var _dataProvider:IList; protected var _wait:uint = 500; private var _changeFunction:Function; private var _parseFunction:Function; private var _isQuickSelect:Boolean = true; private var _value:String = ""; private var _destination:String; private var _method:String = "loadName"; private var _source:IList; private var _keyIndex:int = -1; private var _container:SkinnableContainer; private var _remote:RemoteObject; private var _showingPopUp:Boolean = false; private var _timer:Timer; /** * 设置快速匹配,当输入和自动选择相同时,自动匹配 */ public function set isQuickSelect(value:Boolean):void{ _isQuickSelect = value; } /** * 设置value值,备用取值参数 */ public function set value(value:String):void{ _value = value; } /** * 获取value值,备用取值参数 */ public function get value():String{ return _value; } /** * 设置选择时调用函数 */ public function set changeFunction(value:Function):void{ _changeFunction = value; } /** * 设置自定义解析函数(只对自定义数据源有效) */ public function set parseFunction(value:Function):void{ _parseFunction = value; } /** * 设置通道描述 */ public function set destination(value:String):void{ _destination = value; } /** * 设置查询方法 */ public function set method(value:String):void{ _method = value; } /** * 设置处理后显示最大数目 */ public function set rowCount(value:uint):void{ _rowCount = value; } /** * 设置显示字段 */ public function set labelField(value:String):void{ _labelField = value; } /** * 设置value字段 */ public function set dataField(value:String):void{ _dataField = value; } /** * 设置查询参数 */ public function set param(value:Object):void{ _param = value; } /** * 设置自定义数据源 */ public function set dataProvider(value:IList):void{ _source = value; _isCustomData = true; } /** * 获取数据源 */ public function get dataProvider():IList{ return _dataProvider; } /** * 是否采用自定义设置数据源 */ public function set isCustomData(value:Boolean):void{ _isCustomData = value; } public function AutoTextInput(){ super(); //percentWidth = 100; addEventListener(FlexEvent.CREATION_COMPLETE, initHandler); } /** * 重置连接 * @param destination 通道描述 * @param param 查询参数 * @param method 查询方法 */ public function resetRemote(destination:String, param:Object = null, method:String = ""):void{ if(destination && destination != ""){ _remote = RemoteConn.getRemote(destination, resultHandler, {"showBusyCursor": false}); text = ""; _value = ""; _param = param; if(method != ""){ _method = method; } } } /** * 清除数据 */ public function clear():void{ text = ""; _value = ""; } override protected function createChildren():void{ super.createChildren(); _popUpList = new List(); _popUpList.labelField = _labelField; _container = new SkinnableContainer(); _container.includeInLayout = false; _container.visible = false; _container.addElement(_popUpList); _timer = new Timer(_wait, 1); } override protected function focusOutHandler(event:FocusEvent):void{ if (_showingPopUp && _container && !event.relatedObject){ removeHandler(event); } super.focusOutHandler(event); } private function initHandler(event:Event):void{ if(_destination){ _remote = RemoteConn.getRemote(_destination, resultHandler, {"showBusyCursor": false}); } setEventListeners(); } private function setEventListeners():void{ addEventListener(Event.CHANGE, changeHandler); addEventListener(KeyboardEvent.KEY_DOWN, downHandler); _popUpList.addEventListener( IndexChangeEvent.CHANGE, listChangeHandler); _container.addEventListener( FlexMouseEvent.MOUSE_DOWN_OUTSIDE, removeHandler); _container.addEventListener( FlexMouseEvent.MOUSE_WHEEL_OUTSIDE, removeHandler); _timer.addEventListener(TimerEvent.TIMER, doChangeHandler); } private function resultHandler(event:ResultEvent):void{ var _result:Object = event.result; if(_result && _result.length > 0){ var _impl:IList; if(_result is String){ var _xmlList:XMLList = XML(_result).node; _impl = new XMLListCollection(_xmlList); }else if(_result is ArrayCollection){ _impl = _result as ArrayCollection; }else if(_result is IList){ _impl = _result as IList; } if(_impl){ _showingPopUp = true; createHandler(event); _popUpList.dataProvider = (_dataProvider = _impl); if(_isQuickSelect){ quickSelect(_impl); } return; } } removeHandler(event); } private function changeHandler(event:Event):void{ _value = ""; _keyIndex = -1; if(text != ""){ _timer.reset(); _timer.start(); }else{ removeHandler(event); } } private function doChangeHandler(event:TimerEvent):void{ _param = _param ? _param : {}; if(_destination != null){ _param["s"] = text; _param["u"] = _rowCount; _remote.getOperation(_method).send(_param); }else if(_isCustomData){ var _result:IList = _parseFunction != null ? _parseFunction(_param) : parseCustomData(); resultHandler(new ResultEvent(ResultEvent.RESULT, false, true, _result)); } } private function listChangeHandler(event:Event):void{ var _out:Object = listSelectHandler(); if(_changeFunction != null){ _changeFunction(_out); } removeHandler(event); } private function createHandler(event:Event):void{ _popUpList.width = width; _container.width = width; //以下参考PopUpButton.as var initY:Number; var point:Point = new Point(0, unscaledHeight + 0); point = localToGlobal(point); if (_container.parent == null){ PopUpManager.addPopUp(_container, this); _container.owner = this; }else{ PopUpManager.bringToFront(_container); } point = _container.parent.globalToLocal(point); if (point.y + _container.height > screen.height && point.y > (height + _container.height)){ point.y -= (unscaledHeight + _container.height); initY = -_container.height; }else{ initY = _container.height; } point.x = Math.min(point.x, screen.width - _container.getExplicitOrMeasuredWidth()); point.x = Math.max(point.x, 0); if (_container.x != point.x || _container.y != point.y){ _container.move(point.x, point.y); } if(!_container.visible){ _container.visible = true; } //end } private function removeHandler(event:Event):void{ if(_showingPopUp){ PopUpManager.removePopUp(_container); _showingPopUp = false; _keyIndex = -1; } } private function listSelectHandler():Object{ var _item:Object = _popUpList.selectedItem; text = _item[_labelField]; _value = _item[_dataField]; return _item; } protected function quickSelect(impl:IList):void{ var _item:Object = impl.getItemAt(0); if(_item[_labelField] == text){ _value = _item[_dataField]; } } protected function downHandler(event:KeyboardEvent):void{ if(_showingPopUp){ if(event.keyCode == 40){ _popUpList.selectedIndex = (_keyIndex = _keyIndex < _dataProvider.length - 1 ? _keyIndex + 1 : 0); listSelectHandler(); }else if(event.keyCode == 38){ _popUpList.selectedIndex = (_keyIndex = _keyIndex >= 1 ? _keyIndex - 1 : _dataProvider.length - 1); listSelectHandler(); }else if(event.keyCode == 13){ listChangeHandler(event); } event.stopPropagation(); } } protected function parseCustomData():IList{ var _result:IList = new ArrayList(); var _num:uint = 0; var _length:int = _source.length; for(var _i:int = 0; _i < _length; _i ++){ var _item:Object = _source.getItemAt(_i); if(_num >= _rowCount){ break; } if((_item[_labelField] + "").indexOf(text) != -1){ _result.addItem(_item); _num ++; } } return _result; } } }
组件执行:
<?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" xmlns:component="pizazz.flex4.component.*" minWidth="955" minHeight="600" > <s:layout> <s:VerticalLayout /> </s:layout> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.collections.XMLListCollection; import mx.controls.Alert; private const xml:XML = <root> <node id="a" name="ABC" /> <node id="b" name="BCD" /> <node id="c" name="DEF" /> <node id="d" name="EFG" /> <node id="e" name="GAB" /> <node id="f" name="ACE" /> <node id="f" name="CEG" /> <node id="f" name="EGB" /> <node id="f" name="GBD" /> <node id="f" name="BDF" /> </root>; private const _arr:ArrayCollection = new ArrayCollection([ {"id": "a", "name": "ABC"}, {"id": "b", "name": "BCD"}, {"id": "c", "name": "DEF"}, {"id": "d", "name": "EFG"}, {"id": "e", "name": "GAB"}, {"id": "f", "name": "ACE"}, {"id": "g", "name": "CEG"}, {"id": "h", "name": "EGB"}, {"id": "i", "name": "GBD"}, {"id": "j", "name": "BDF"} ]); private const _list:XMLListCollection = new XMLListCollection(XMLList(xml.node)); ]]> </fx:Script> <s:Label text="XMLListCollection格式" /> <component:AutoTextInput labelField="@name" dataField="@id" rowCount="10" dataProvider="{_list}" /> <s:Label text="ArrayCollection格式" /> <component:AutoTextInput id="input" labelField="name" dataField="id" rowCount="10" dataProvider="{_arr}" /> <mx:Button label="value参数" click="{Alert.show(input.value)}" /> </s:Application>
视图:
发表评论
-
模仿HTML跑马灯(Marquee)
2010-12-08 22:38 3026模仿HTML的Marquee组件,组件容器为Group,和fl ... -
分页组件
2010-11-11 23:16 685一个分页用的组件,参看了网上一些关于checkbox的代码,分 ... -
通用的表单验证组件
2010-11-08 23:11 798一个通用的表单验证组件,可以根据验证类型自行扩展,可以被动验证 ... -
可以最小化停靠的弹出窗口
2010-11-03 23:35 1561参看了一些网上的最小化窗口,发现大多都是添加在容器中的面板,所 ... -
配置文件加载组件
2010-11-02 22:41 647在开发过程中,按照一定的规则去写配置文件,就可以方便的进行引用 ... -
关于Flex内remote、http、url的再次封装
2010-11-01 22:50 1584对于3种连接的封装 组件代码: package pizaz ... -
可以简易管理的弹出组件
2010-10-30 23:18 938实现了一个简易的弹出管理器,可以设置是否弹出唯一面板,可以配合 ... -
可以动态设置不同图标的树形组件
2010-10-29 00:41 1098参考了IconUtility组件和网上的一些代码实现,综合了一 ...
相关推荐
自定义 wpf 文本下拉框控件,输入字符自动模糊查询,下拉显示出来,可配置,输入多长后去服务端拿数据显示,也可配置,输入文字后几毫秒去查询
域名批量查询辅助软件,域名抢注辅助软件,域名抢注软件 软件可以批量查询域名类型: 1。26个字母组合查询所有域名类型,如有未被注册的就添加到下面的文本框 2。2个字母组合查询所有域名类型,如有未被注册的就...
PPT文本框对齐小技巧。首先将形状对齐时显示智能向导勾选上,这样拖动对象时,就会出现参考线辅助对齐...在文本框上右键,选择设置形状格式,在文本框中设置内部边距,将各项设置为0,这样文本框与文本间就没有距离了。
利用键盘钩子监控键盘,当按下F11键,可以将剪贴板的内容发送到当前光标所在处,可以用来辅助输入QQ密码等受限制的文本框。
除了解决一般键盘遮挡文本框问题外,BSKeyboardControls还提供了辅助输入功能,如果你选错了输入框,不必解除键盘再进行选择,而是可以通过键盘左上角的“上一个”和“下一个”提示选择正确的输入框,所以这个项目更...
HTML5 带动画效果的限制文本框字数,这个功能的实现主要是引入了rectjs文件,当用户输入的时候,适时显示还可以输入多少个字符,并且辅助动画形式来显示,十分动感,下方的红线标识将可输入的字数与总字数计算,生成...
利用高度文本框确定属性文本字符的高度; 该对话框中各选项的含义分别如下所示: 在插入的同时还可以改变所插入块或图形的比例与旋转角度。 2.基点选项区 用于设置块插入的基点位置。 图 图层特性管理器对话框 ...
当光标定位在辅助查找的文本框后回车,页面会出现方法的返回的json串。 原因:When there is only one single-line text input field in a form, the user agent should accept Enter in that field as a request to...
强类型视图HTML的各种辅助方法使用,比如 form 表单,提交方式,显示文本框等等,这是前端和初学者都可以用到的.
RichTextBox丰富文本框支持库(1.2#3共享版)云外归鸟 Taolibv★诺亚鸿飞增强库★(1.1#0版)吴江涛 Tooltiplib提示工具支持库(1.1#0版)银戒指 WaveEffect水波特效支持库(1.0版)[OpenGL] WebBrowser2_WEB浏览器...
序列号输入辅助程序 绿色小软件. 复制序列号-点击要输入的序列号文本框-按F11-完成.
选择"插入"菜单中的"文本框"命令,然后在新建的文本框内输入图表 C.选择"插入"菜单中的"对象"命令,然后在"插入对象"对话框中选择有关选项 D.选择"插入"菜单中的"新幻灯片"命令,选择具有"图表"的自动版式 参考选择...
一个jQuery辅助的字符类型输入限制插件,这个插件是先限制再输入,也就是当用户输入的时候,输入了不允许的字符,则不自动过滤掉该字符,不会显示在文本框中。这款插件的名字叫做jQuery AlphaNumeric,by Paulo P. ...
用法链接:... FlatUI辅助类之各种炫酷的控件集合 按钮样式设置。 文本框样式设置。 进度条样式。 滑块条样式。 单选框样式。 滚动条样式。 可自由设置对象的高度宽度大小等。 自带默认参数值。
楼月文本自动输入器是一款辅助输入文本的软件,您只需要按下您设置好的热键,该热键对应的文字内容将自动输入到当前的输入框中,大大节省了您在键盘上的输入时间,降低了您的劳动强度并极大地提高了工作效率。...
您可以在线框中选择一些控件信息并在“注释和交互”面板的字段中编辑值,从而对其进行分析注释。面板模型顶部的标签数据字段向控件添加了我们一个网络标识符。 脚注 在向控件添加注释后,控件的右上角会显示一个名...
系统提供了$dp.$D和$dp.$DV这两个API来辅助你进行日期运算,此外你还可以通过在 #F{} 中填入你自定义的脚本,做任何你想做的日期限制 三、自定义事件和丰富的API库 如果你需要做一些附加的操作,你也不必担心,日期...
中、小学生免费辅助自动算出汉字笔画软件,2012查询汉字笔画3.0最新版在“汉字输入”框中输入汉字,汉字的笔画就显示在相应的文本框中; 当前汉字(光标处)的笔画显示在“当前汉字及笔画”处; 当选定汉字时,相应...
文件查询模块操作说明:在名称文本框中输入要查找的文件名称,在目录文本框中选择目录,如要选择更下一级目录,可在文件列表框选择,单击“查找”按钮,便可查找出所需要的文件;在查找结果的列表框中单击某一文件,...
Ofbiz的Lookup字段,讲解ofbiz辅助输入,包括文本,选择框,日期,时间,主从文本框。后面还介绍一下自定义修改的Lookup