- 浏览: 200604 次
- 性别:
- 来自: 上海
最新评论
-
zhuzhuaijq:
Flash OBJECT和EMBED标签详解 -
matt.u:
好像有点深奥。
一篇比较好演示AS的重构方法 -
luofeng113:
分析得不错,
flex编程感受 -
felixsky:
请问flexunit如何测试private和internal的 ...
FLEXUnit应用 -
wv1124:
你不能分个页啊,看得人都要死了
Apollo: 开发者问答录
DataGrid颜色专题
在Flex运用中经常提到的有关DataGrid问题是如何改变DataGrid单元格(cell),列(column)和行(row)的背景颜色(backgroundcolor)
很久之前就做过这样的总结,一直没有整理出来,现在在这里对这3种颜色做一个总结(后面有demo和源码下载)。
设置行(row)的背景色
主要是通过对DataGrid扩展,对protected函数drawRowBackground()进行重写,具体代码如下:
override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number,color:uint, dataIndex:int):void
{
if (dataIndex >= dataProvider.length) {
super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);
return;
}
if (dataProvider.getItemAt(dataIndex).col3 < 2000) {//set color accordint to datas
super.drawRowBackground(s,rowIndex,y,height,0xC0C0C0,dataIndex);
} else {
super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);
}
}
这段代码中根据DataGrid的数据源进行判断来设置背景色,但是它有个缺陷,就是这个具体的背景色我们无法自己灵活指定。因此派生出新的CustomRowColorDataGrid,具体代码如下:
package cwmlab.controls
{
import mx.controls.*;
import flash.display.Shape;
import mx.core.FlexShape;
import flash.display.Graphics;
import flash.display.Sprite;
import mx.rpc.events.AbstractEvent;
import mx.collections.ArrayCollection;
import flash.events.Event;
/**
* This is an extended version of the built-in Flex datagrid.
* This extended version has the correct override logic in it
* to draw the background color of the cells, based on the value of the
* data in the row.
**/
public class CustomRowColorDataGrid extends DataGrid
{
private var _rowColorFunction:Function;
public function CustomRowColorDataGrid()
{
super();
}
/**
* A user-defined function that will return the correct color of the
* row. Usually based on the row data.
*
* expected function signature:
* public function F(item:Object, defaultColor:uint):uint
**/
public function set rowColorFunction(f:Function):void
{
this._rowColorFunction = f;
}
public function get rowColorFunction():Function
{
return this._rowColorFunction;
}
/**
* Draws a row background
* at the position and height specified using the
* color specified. This implementation creates a Shape as a
* child of the input Sprite and fills it with the appropriate color.
* This method also uses the <code>backgroundAlpha</code> style property
* setting to determine the transparency of the background color.
*
* @param s A Sprite that will contain a display object
* that contains the graphics for that row.
*
* @param rowIndex The row's index in the set of displayed rows. The
* header does not count, the top most visible row has a row index of 0.
* This is used to keep track of the objects used for drawing
* backgrounds so a particular row can re-use the same display object
* even though the index of the item that row is rendering has changed.
*
* @param y The suggested y position for the background
* @param height The suggested height for the indicator
* @param color The suggested color for the indicator
*
* @param dataIndex The index of the item for that row in the
* data provider. This can be used to color the 10th item differently
* for example.
*/
override protected function drawRowBackground(s:Sprite,rowIndex:int,y:Number, height:Number, color:uint, dataIndex:int):void
{
if( this.rowColorFunction != null ){
if( dataIndex < this.dataProvider.length ){
var item:Object = this.dataProvider.getItemAt(dataIndex);
color = this.rowColorFunction.call(this, item, color);
}
}
super.drawRowBackground(s, rowIndex, y, height, color, dataIndex);
}
}
}
在具体使用过程中可以这样调用:
<cwmlab:CustomRowColorDataGrid dataProvider="{dp}" rowColorFunction="setCustomColor">
private function setCustomColor(item:Object, color:uint):uint
{
if( item['col3'] >= 2000 )
{
return 0xFF0033;
}
return color;
}
设置DataGrid列的背景色
这个很简单,只要设置DataGridColumn的属性backgroundColor="0x0000CC"即可。
设置DataGrid单元格(cell)的背景色
这个主要通过itemRenderer进行设置,itemRenderer可以是Label,也可以是其他如DataGridItemRenderer。
先看看用Label如何设置背景色
<mx:DataGridColumn headerText="Make" dataField="col1">
<mx:itemRenderer>
<mx:Component>
<mx:Label> <!--using label as itemRenderer-->
<mx:Script><![CDATA[
override public function set data(value:Object):void
{
super.data = value;
if(value.col1 == 'Toyota'){
this.opaqueBackground =0xCC0000;
}
}
]]></mx:Script>
</mx:Label>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
用DataGridItemRenderer进行背景色设置如下:
<mx:DataGridColumn headerText="Year" dataField="col3">
<mx:itemRenderer>
<mx:Component>
<mx:DataGridItemRenderer><!--using DataGridItemRenderer as itemRenderer-->
<mx:Script><![CDATA[
override public function set data(value:Object):void
{
super.data = value;
if(value.col3 >= 2000){
this.background = true;
this.backgroundColor =0x00cc00;
}
}
]]></mx:Script>
</mx:DataGridItemRenderer>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
转至:http://wmcai.blog.163.com/blog/static/4802420080842548600/
在Flex运用中经常提到的有关DataGrid问题是如何改变DataGrid单元格(cell),列(column)和行(row)的背景颜色(backgroundcolor)
很久之前就做过这样的总结,一直没有整理出来,现在在这里对这3种颜色做一个总结(后面有demo和源码下载)。
设置行(row)的背景色
主要是通过对DataGrid扩展,对protected函数drawRowBackground()进行重写,具体代码如下:
override protected function drawRowBackground(s:Sprite, rowIndex:int, y:Number, height:Number,color:uint, dataIndex:int):void
{
if (dataIndex >= dataProvider.length) {
super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);
return;
}
if (dataProvider.getItemAt(dataIndex).col3 < 2000) {//set color accordint to datas
super.drawRowBackground(s,rowIndex,y,height,0xC0C0C0,dataIndex);
} else {
super.drawRowBackground(s,rowIndex,y,height,color,dataIndex);
}
}
这段代码中根据DataGrid的数据源进行判断来设置背景色,但是它有个缺陷,就是这个具体的背景色我们无法自己灵活指定。因此派生出新的CustomRowColorDataGrid,具体代码如下:
package cwmlab.controls
{
import mx.controls.*;
import flash.display.Shape;
import mx.core.FlexShape;
import flash.display.Graphics;
import flash.display.Sprite;
import mx.rpc.events.AbstractEvent;
import mx.collections.ArrayCollection;
import flash.events.Event;
/**
* This is an extended version of the built-in Flex datagrid.
* This extended version has the correct override logic in it
* to draw the background color of the cells, based on the value of the
* data in the row.
**/
public class CustomRowColorDataGrid extends DataGrid
{
private var _rowColorFunction:Function;
public function CustomRowColorDataGrid()
{
super();
}
/**
* A user-defined function that will return the correct color of the
* row. Usually based on the row data.
*
* expected function signature:
* public function F(item:Object, defaultColor:uint):uint
**/
public function set rowColorFunction(f:Function):void
{
this._rowColorFunction = f;
}
public function get rowColorFunction():Function
{
return this._rowColorFunction;
}
/**
* Draws a row background
* at the position and height specified using the
* color specified. This implementation creates a Shape as a
* child of the input Sprite and fills it with the appropriate color.
* This method also uses the <code>backgroundAlpha</code> style property
* setting to determine the transparency of the background color.
*
* @param s A Sprite that will contain a display object
* that contains the graphics for that row.
*
* @param rowIndex The row's index in the set of displayed rows. The
* header does not count, the top most visible row has a row index of 0.
* This is used to keep track of the objects used for drawing
* backgrounds so a particular row can re-use the same display object
* even though the index of the item that row is rendering has changed.
*
* @param y The suggested y position for the background
* @param height The suggested height for the indicator
* @param color The suggested color for the indicator
*
* @param dataIndex The index of the item for that row in the
* data provider. This can be used to color the 10th item differently
* for example.
*/
override protected function drawRowBackground(s:Sprite,rowIndex:int,y:Number, height:Number, color:uint, dataIndex:int):void
{
if( this.rowColorFunction != null ){
if( dataIndex < this.dataProvider.length ){
var item:Object = this.dataProvider.getItemAt(dataIndex);
color = this.rowColorFunction.call(this, item, color);
}
}
super.drawRowBackground(s, rowIndex, y, height, color, dataIndex);
}
}
}
在具体使用过程中可以这样调用:
<cwmlab:CustomRowColorDataGrid dataProvider="{dp}" rowColorFunction="setCustomColor">
private function setCustomColor(item:Object, color:uint):uint
{
if( item['col3'] >= 2000 )
{
return 0xFF0033;
}
return color;
}
设置DataGrid列的背景色
这个很简单,只要设置DataGridColumn的属性backgroundColor="0x0000CC"即可。
设置DataGrid单元格(cell)的背景色
这个主要通过itemRenderer进行设置,itemRenderer可以是Label,也可以是其他如DataGridItemRenderer。
先看看用Label如何设置背景色
<mx:DataGridColumn headerText="Make" dataField="col1">
<mx:itemRenderer>
<mx:Component>
<mx:Label> <!--using label as itemRenderer-->
<mx:Script><![CDATA[
override public function set data(value:Object):void
{
super.data = value;
if(value.col1 == 'Toyota'){
this.opaqueBackground =0xCC0000;
}
}
]]></mx:Script>
</mx:Label>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
用DataGridItemRenderer进行背景色设置如下:
<mx:DataGridColumn headerText="Year" dataField="col3">
<mx:itemRenderer>
<mx:Component>
<mx:DataGridItemRenderer><!--using DataGridItemRenderer as itemRenderer-->
<mx:Script><![CDATA[
override public function set data(value:Object):void
{
super.data = value;
if(value.col3 >= 2000){
this.background = true;
this.backgroundColor =0x00cc00;
}
}
]]></mx:Script>
</mx:DataGridItemRenderer>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
转至:http://wmcai.blog.163.com/blog/static/4802420080842548600/
发表评论
-
pv3d学习资料
2009-08-13 14:54 1870官方网站 http://www.papervision3d.c ... -
Flash客户端间的交互
2009-08-13 14:35 3066Flash有着天生非凡的动画和交互能力, 在RIA (富互联网 ... -
ItemRenderer的用法
2009-01-14 13:59 1812项目渲染器(ItemRenderer ... -
Flex3组件拖放教程
2008-08-27 16:27 2494关于组件拖放 可视化的开发环境就是要允许用户能够在屏幕中通过鼠 ... -
基于MVC的Flex framework比较
2008-08-13 10:13 1592关键字: mvc framework 原文出处:[url]h ... -
色彩模式(RGB、CMYK、HSB、Lab、Duotone等)
2008-08-05 13:10 3789色彩是一门很深的学问,每种色彩都有自己的特点和原理。设计师要在 ... -
colormatrixFilter
2008-07-31 12:38 1137http://hi.baidu.com/fmz1206/blo ... -
使用BlazeDS实现Java和Flex通信
2008-06-16 09:21 1055http://blog.chinaunix.net/u/216 ... -
amf是什么东东
2008-06-12 16:59 1353今天我们开发的 J2EE 网 ... -
Flash特效制作常用的源代码大放送
2008-06-06 16:02 1094对象数组 比如要构建一个有很多属性的数组,简单的可以这样 ... -
编写时间轴代码代码规范
2008-06-06 15:34 1165For any major project, you co ... -
关于ApplicationDomain的一些理解
2008-06-05 17:07 2866应用程序域: 允许跨域加载swf后,还可能出现加载的swf中的 ... -
Flash OBJECT和EMBED标签详解
2008-06-05 17:03 31119Flash OBJECT和EMBED标签 一 ... -
flex的一些项目
2008-06-03 14:48 1324一些Flex开源项目的整理 Adobe APIs 主要包 ... -
flex模式(转载)
2008-06-03 14:28 1532[url] http://www.awflasher.com/ ... -
programming Flex2 学习笔记-第5章-框架基础.txt (转载的,来自)
2008-05-29 10:40 1268来自http://blog.chinaunix.net ... -
通过ApplicationDomain类获得被加载应用程序域
2008-05-27 13:32 1641首先先回顾一下FLASH的OO ... -
一些Flex / Flash开源项目
2008-05-09 14:26 1547Adobe APIs 主要包含corelib, ... -
这几个网站是我经常去的,做开发时可以参考
2008-05-09 14:14 1403http://www.flashas.net/ http:// ... -
108种Flash常见问题解答(收藏别的:站名:http://www.flashas.net/)
2008-05-09 14:09 24271. 论坛上常说的MC、FS、 ...
相关推荐
9. **美化样式**:为了让汇总行更加醒目,你可以在样式中调整字体颜色、背景色,甚至添加边框。 通过以上步骤,你就能在WPF的DataGrid中实现类似MT4的汇总行功能。这种自定义不仅可以应用于金融领域,还可以广泛...
在事件处理程序中,检查每行的数据以确定是否为汇总行,然后使用不同的模板或样式来呈现它们,比如改变字体颜色、背景色或者添加总计标识。 以下是一个基本的步骤概述: 1. **数据准备**:修改SQL查询以包含汇总行...
2. **样式和模板**:要创建一个合计行,可能需要定义一个特殊的`DataGridRow`模板,设置不同的背景色、字体样式等,以区分普通数据行。 3. **自定义列**:如果需要更复杂的合计(如平均值、百分比等),可能需要...
:Datagrid允许用户设置单元格的编辑后变色,可以使用css样式来设置单元格的背景色、字体颜色等。 四、RESTClient 10. RESTClient的post请求?:RESTClient是MX框架中的一种控件,用于发送REST请求。post请求是...
0014 改变窗体Hint背景色 11 0015 以原始风格显示控件的滚动条 11 0016 使用快捷键打开对象观察器中的“...”按钮 11 1.5 其他相关应用技巧 11 0017 安装合适的Delphi版本 11 0018 熟练掌握Delphi中的...
0014 改变窗体Hint背景色 11 0015 以原始风格显示控件的滚动条 11 0016 使用快捷键打开对象观察器中的“...”按钮 11 1.5 其他相关应用技巧 11 0017 安装合适的Delphi版本 11 0018 熟练掌握Delphi中的...
- **条件设置行背景颜色**:可以根据数据的不同值来设置行的背景色。 - **创建属性网格**:专门用来展示对象属性的网格。 - **扩展行显示细节**:可以为某一行数据提供额外的详情展示。 - **创建子网格**:在某...
实例022 背景为渐变色的程序界面 实例023 椭圆形的程序界面 实例024 自绘窗体界面 实例025 类似Windows XP的程序界面 实例026 窗体融合技术 实例027 限制对话框最大时的窗口大小 1.7 多媒体宣传光盘应用实例 ...
实例022 背景为渐变色的程序界面 实例023 椭圆形的程序界面 实例024 自绘窗体界面 实例025 类似Windows XP的程序界面 实例026 窗体融合技术 实例027 限制对话框最大时的窗口大小 1.7 多媒体宣传光盘应用实例 ...
cc实例022 背景为渐变色的程序界面 cc实例023 椭圆形的程序界面 cc实例024 自绘窗体界面 cc实例025 类似WindowscXP的程序界面 cc实例026 窗体融合技术 cc实例027 限制对话框最大时的...
cc实例022 背景为渐变色的程序界面 cc实例023 椭圆形的程序界面 cc实例024 自绘窗体界面 cc实例025 类似WindowscXP的程序界面 cc实例026 窗体融合技术 cc实例027 限制对话框最大时的...
1.5 导航界面应用实例 cc实例018 Outlook导航界面 cc实例019 树状导航界面 cc实例020 按钮导航界面 cc实例021 类QQ导航菜单 1.6 界面窗体应用实例 cc实例022 背景为渐变色的程序界面 cc实例023 椭圆...