範例檔下載
在AS2中,為DataGrid的欄位文字變色是很方便的事,但在AS3就無法用相同的方法了。
被它搞了很久,原本用的方法因為效能太差而被打回票,最近有同事找到了新方法塞值,就來試看看囉。
被它搞了很久,原本用的方法因為效能太差而被打回票,最近有同事找到了新方法塞值,就來試看看囉。
先看執行結果:欄位值小於0的,字會顯示紅色。
1.先建立一支設定Style的as,檔名為CellRenderStyle1.as
2.fla的主程式:
package {
import fl.controls.listClasses.CellRenderer;
public class CellRenderStyle1 extends CellRenderer {
public function CellRenderStyle1() {
}
override protected function drawLayout():void {
if(parseInt(this.listData.label)<0){
//this.listData.label會取得目前這個欄位的值
textField.textColor=0xFF0000;
}
super.drawLayout();
}
}
}
2.fla的主程式:
import fl.controls.DataGrid;
import fl.data.DataProvider;
import fl.controls.dataGridClasses.DataGridColumn;
//建立DataGrid(可把它想成大Table)
var dg:DataGrid = new DataGrid();
dg.width=500;
dg.height=300;
dg.x=20;
dg.y=30;
this.addChild(dg);
//建立Column
//第一個Column
var colA:DataGridColumn = new DataGridColumn("col1");
colA.headerText="序號";
dg.addColumn(colA);
//第二個Column
var colB:DataGridColumn = new DataGridColumn("col2");
colB.headerText="亂數";
colB.cellRenderer = CellRenderStyle1;
//此格會變色,因此要設定cellRenderer
dg.addColumn(colB);
//建立DataProvider(Table的資料)
var dp:DataProvider = new DataProvider();
for (var i = 0; i < 20; i++) {
dp.addItem({col1:(i+1), col2:getRandomNumber()});
}
dg.dataProvider=dp;
function getRandomNumber(){
return Math.floor(Math.random()*50)-25;
}
0 意見:
張貼留言