7.13.1. 问题你需要创建一个被选中时是可以改变大小的renderer。7.13.2. 解决办法创建一个drop-in itemRenderer,实现IDropInListItemRenderer 接口,并且通过listData 监听List 的Scroll 和Change 事件,当这两个事件中的任意一个事件发生时,比较itemRenderer 中的data 与List 中selectedItem 中的data,如果相等,就设置currentState 为selec..
7.12.1.问题你要创建一个树。它的结点一个有三个状态的CheckBox。7.12.2.解决办法我们从三个方面去解决这个问题:1 创建TreeItemRenderer。这个renderer 要包含CheckBox;2 当CheckBox 是第三种状态时,将有一个黑色的小图片覆盖在CheckBox 上方,也就是说,这时我们看到CheckBox 的,不是空心的,也不是里边含有“勾”,而是里边含有一个实心的..
7.11.1. 问题你需要在用户开始编辑与结束编辑时给itemEditor 加一些effects。7.11.2. 解决办法在itemEditor 中创建一个state,当用户开始编辑它的时候,利用Transition 运行一个effect。7.11.3. 讨论在用户完成修改后运行一个effect 是很好实现的。使用DefaultListEffect。DefaultListEffect 定义了一个effect 在用户提交自己的修改之后运行:+展..
7.10.1.问题你需要在运行时修改itemRenderer 或itemEditor 的一些属性。7.10.2.解决办法ListBase 和DataGrid(原文是DataGridColumn,可能是作者搞错了。)都有makeRowsAndColumns 方法,继承并重写它。7.10.3.讨论我们可以在makeRowsAndColumns 方法中,通过一个循环完成对itemRenderer 样式的设置。+展开-XMLmx:Listxmlns:mx="http://www.adobe...
7.9.1.问题你需要在通过data 把图片传入itemRenderer 里并显示图片。7.9.2.解决办法创建一个新的renderer 类,并且利用commitProperties 方法和owner 属性可以完成这些工作。我们可以在renderer 拥有者所在的文件里定义一个方法,用于返回我们要图示的图片。7.9.3.讨论List 和ListBase 的设计者Alex Harui,在自己的blog 里写到:“你可以把Imag..
7.8.1.问题你要为DataGrid 创建一个含有CheckBox 的itemRenderer,无论DataGridColumn 的宽度如何,都要始终保持CheckBox 在renderer 的中央。7.8.2. 解决办法继承CheckBox 的类,并且重写updateDisplayList 方法,从而设置CheckBox 的位置,在clickHandler 中增加部分功能:根据CheckBox 的选中状态设置DataGrid 里的变量值。7.8.3. 讨论下边是一..
7.7.1. 问题我们需要创一个拥有一列CheckBox 的DataGrid,并且这个DataGrid 的表头也有一个CheckBox,当用户点击表头的CheckBox 时,这一列CheckBox 自动被选中或取消选中,我们这里所说的表头就是column 的headerRenderer。7.7.2. 解决办法创建一个类做为headerRenderer,并且在这个类里创建一个可以向它所在的DataGrid派发事件的方法,并且可以..
7.6.1.问题用一个图片或SWF 做菜单。7.6.2.解决办法用itemRenderer 对象加载SWF 文件,并自定义菜单。7.6.3.讨论自定义菜单的第一步是把你想要用到的字体和图形存在一些SWF 文件里,并且把这些SWF 文件放在一文件夹下。在我们的例子中,这个文件夹命名为“swf”,你可以用任工具生成这些SWF 文件。接下来,创建一个renderer 组件。在本例中我们使..
7.5.1.问题如果item editor 收到的data 是一个用户自定义对象,我们需要创建一个可以修改这个含有复杂类型对象的item editor。7.5.2.解决办法创建一个item editor,它可以返回data 中所有己经被修改过的属性。在List 上创建一个监听器,用于对itemEditEnd 事件的监听,在收到这个事件后要停止这个事件继续上父级派发(flex 冒泡的事件机制),并..
7.4.1. 问题你需要建立一个即可以用于item editor 又可以用于item renderer 的组件,并且item editor 会收到一个数组,我们希望这个数组能以combo box 的形式显示出来。7.4.2. 解决办法建立一个己经实现了IDropInListItemRenderer 的组件,并在它里边定义两个states即状态,一个状态用于显示editor 另一个用于显示renderer。当data 发生变化时,即..
7.3.1. 问题item renderer 需要访问它的父组件的一些数据。7.3.2. 解决办法实现IDropInListItemRenderer,通过drop-in renderer 访问它的父组件.7.3.3. 讨论实现了IDropInListItemRenderer 的renderer 不但能访问data 等一些传入的数据,还能通过BaseListData类型的一个属性访问renderer 的父组件(如List 或DataGridColumn)。mx.controls.list..
7.2.1.问题你想要在运行时改变List 或DataGridColumn 的渲染器,或改变渲染器的属性。7.2.2.解决办法使用一个ClassFactory 对象做为ItmeRdnerer。ClassFacotry 实现了IFactory 接口,你只要传一个类对象(即Class 类型的对象)给它,它就可以生成这个类的对象。7.2.3.讨论这种解决办法,使用了工厂设计模式,并且使用了flex 的一些内部机制。在使..
7.1.1.问题你想要为List 或DataGrid 建item renderers 。7.1.2.解决办法你可以定义一个item renderer 在MXML 的List 组件内部。或定义在另一个类文件中,再把这个类名指定在List 的itemRenderer 属性里。7.1.3.讨论有很多办法可以创建item renderers 最简单的办法是:作为itemRenderer 属性定义在父组件的内部:+展开-XMLmx:ListdataProvider="{..
renderer (渲染器),或item renderer,是flex 框架一个功能强大的特性,它的使用频率很高,通过它您可以用自定义的组件显示数组或集合的数据。渲染器可用于DataGrid, List, Tile,和ComboBox 这些数据容器。渲染器可以为这些容器的数据源中的每一个元素的数据设置渲染样式(即显示形式),从而控制这些数据的显示与更新。在Flex 的应用当中会经常用..
6.12.1. 问题我想异步刷新大数据量的GroupingCollection 表格,只在调用时重绘。6.12.2. 解决办法使用GroupingCollection.refresh(async:Boolean),设置异步标志为true。6.12.3. 讨论GroupingCollection.refresh 方法接受一个标志指示分组是否需要异步或同步执行。当数据行数量非常巨大时,设置标志为true 可在显示之前刷新分组结果。这通常用来..
6.11.1. 问题我想为表格数据生成汇总值6.11.2. 解决办法使用GroupingCollection 生成汇总值,配置AdvancedDataGrid 以便它看起来具有数据汇总功能。6.11.3. 讨论你可以使用GroupingCollection 生成数据汇总,配置AdvancedDataGrid 显示汇总数据。当生成数据汇总时,你不想排序和分组现有的dataField,因为你只是简单的显示数据而已,下面的示例代..
6.10.1. 问题我想搜索DataGrid 中的数据项并滚屏到匹配项6.10.2. 解决办法在ArrayCollection 中使用IViewCursor 的findFirst 方法。使用DataGrid 的scrollToIndex 进行滚屏。6.10.3. 讨论这项技术的关键之处在于DataGrid 和一个简单的表达,提供用户在文本框中输入city 名称,然后点击按钮开始搜索。当用户点击按钮(search_btn)后,DataGrid 的d..
6.9.1. 问题我想让DataGrid 的某些单元格可被编辑6.9.2. 解决办法设置AdvancedDataGrid 或DataGrid 的editable 属性为true6.9.3. 讨论这个例子中,AdvancedDataGrid 和DataGrid 控件绑定到同一个dataProvider。两个控件的editable 属性都设置为true。这样就可以编辑每个单元格了。由于两个控件都绑定同一个数据源,当编辑一个表格的单元格时将会..
6.8.1. 问题我想启动DataGrid 数据项拖动功能,以便用户能拖动它们到其他表格上。6.8.2. 解决办法设置源DataGrid 的dragEnabled 为true,和目标DataGrid 的dropEnabled 属性为true。6.8.3. 讨论要启动基于列表的控件比如DataGrid 的拖拽功能,最简单的方法就是设置相应的属性为true,因为Flex 框架将负责所有相关的底层工作。例如,下面的例子设..
6.7.1. 问题我想编程实现选择AdvancedDataGrid 多个单元格6.7.2. 问题设置AdvancedDataGrid 的selectionMode 属性为multipleCells 和selectedCells 属性为object数组,该数组包含被选择单元格的rowIndex 和columnIndex。6.7.3. 讨论AdvancedDataGrid 控件对于选择单元格提供了多种选项设置。selectionMode 属性值有以下几种选择:Multiple cells..
5.13.1.问题为List 组件中的选中项贴上一个图片5.13.2.解决方法覆盖ListBase 类的drawSelectionIndicator 方法并修改由该方法使用的指示器Sprite 对象。5.13.3.讨论List 控件通过drawSelectionIndicator 方法为在列表中选中的itemRenderer 创建外观。该方法的信息如下:+展开-ActionScriptoverrideprotectedfunctiondrawSelectionIndicator(indi..
5.12.1.问题当用户在特定的条目上右键单击或按住Control 键并单击(在Macintosh 中译者注)时创建一个定制上下文菜单项来显示5.12.2.解决方法创建ContextMenu 和ContextMenuItem 对象并分派它们到渲染器,它们将像itemRenderer一样被分派到列表.5.12.3.讨论上下文菜单项是用户在flex 应用程序上右键单击或按住Control 键并单击以后出现的,默认情..
5.11.1.问题显示稀疏填充数组中的空条目5.11.2.解决方法为List 控件设置nullItemRenderer.5.11.3.讨论只要在继承自ListBase 的任何类中的dataProvider 遇到空对象,则使用nullItemRenderer属性:+展开-XMLmx:TileListnullItemRenderer="oreilly.cookbook.NullItemRenderer"/NullItemRenderer.mxml 为典型的nullItemRenderer 列出了完整的清单:+展..
5.10.1.问题为TileList 的渲染器设置一个切换,并跟踪TileList 中所有被选中的子节点5.10.2.解决方法扩展TileList 组件并创建一个类似itemRenderer 用法的定制渲染器,对于渲染器中的切换事件,在事件中发布唯一的标识符uid 到TileList 并保存所有IDs 到一个数组。5.10.3.讨论对于所有itemRenderers,当它们的listData 属性被设置了,可以访问它..
5.9.1.问题在提交输入值到列表之前验证用户在一个条目编辑器中输入的所有数据.5.9.2.解决方法在itemEditEnd 事件上,使用ListBase 类的itemEditorInstance 属性从条目编辑器中重新获得文本内容并解析其结果。5.9.3讨论当用户开始和结束编辑一个列表中的条目时,为了验证和格式化所有输入数据,必须侦听由List 发出的条目编辑事件。当条目编辑编辑..
5.8.1问题解析列表的dataProvider 以确保某些条目不能被用户选择5.8.2解决方法创建一个可以被设置在List 组件的一个子类的filterFunction 属性, 使用mouseEventToItemRenderer 和finishKeySelection 通过filter 函数来检查用户的选择并接受或不接受用户的选择.5.8.3讨论为了控制用户选择列表中的某些条目,你需要控制这些条目,使用户可使用鼠标..
5.7.1问题为Tree 控件传递复杂数据,并使用Tree 适当地解析它们5.7.2解决方法在一个类中实现ITreeDataDescriptor 接口,并该类的新数据描述符中设置一个示例对象给Tree 中dataDescriptor 属性,5.7.3讨论使用一个对象和Tree 一起,将对象传递给Tree 来实现ITreeDataDescriptor 以解析数据并返回与数据中的对像关系相关的正确信息,XML 数据很容易..
5.6.1.问题为Tree 组件更改功能5.6.2.解决方法创建一个itemRenderer 继承自TreeItemRenderer 类5.6.3讨论更改一个Tree 组件功能使之比其它基于list 的组件更灵活,与DataGrid, TileList, 或List组件不同的是,你不能为Tree 组件使用dropInItemRenderer,只能继承TreeItemRenderer类来创建一个itemRenderer, TreeItemRenderer 为Tree 组件定义了默认..
5.5.1问题用一个Tree 组件来表现由外部载入的XML 数据5.5.2解决方法以e4x 标准为HTTPService 对象设置类型并且加载指定XML 文件,设置请求结果为Tree的数据提供者,使用像labelField 这样的Tree 叶子结点,通过XML 语法来传递结点属性,确保Tree 将会显示正确的标签5.5.3讨论只要Tree 组件的labelField 属性显示正确的属性值,Tree 组件处理XML 数..
5.4.1问题为TileList 类设置一个定制的itemRenderer,当数据从TileList 传递给渲染器时它将附一个特定的依赖于代码的图象5.4.2 解决方法当数是为渲染器设置时创建一个VBox 对象并且覆盖set data 方法来从杂乱数据中读取相匹配的图象来编码传递5.4.3 讨论一个List 的条目渲染器传递一个描述当前表中每一个条目的数据对象,它用来创建渲染器中详细..