您可以在編寫期間和執行階段,沿水平和垂直方向變形 DataGrid 組件。在編寫期間,請在「舞台」上選取組件,並且使用「自由變形」工具或任何「修改 > 變形」命令。在執行階段,請使用
setSize()
方法或適用的屬性 (如
width
、
height
、
scaleX
和
scaleY
)。如果沒有水平捲軸,欄寬會依比例調整。如果欄 (連帶儲存格) 的大小經過調整,則儲存格中的文字可能會被裁掉。
搭配 DataGrid 組件使用樣式
您可以設定樣式屬性來變更 DataGrid 組件的外觀。DataGrid 組件會繼承 List 組件的樣式 (請參閱
使用具有 List 組件的樣式
)。
為個別欄設定樣式
DataGrid 物件可以擁有多個欄,您也可以為每一欄指定不同的儲存格輸出器。DataGrid 的每一欄都是由 DataGridColumn 物件表示,DataGridColumn 類別也具有
cellRenderer
屬性,您可以定義每一欄的 CellRenderer。
-
建立新的 Flash 文件 (ActionScript 3.0)。
-
將 DataGrid 組件拖曳到「元件庫」面板。
-
在時間軸的「影格 1」的「動作」面板中,加入下列程式碼。此程式碼會建立 DataGrid,並且在其第三欄中含有一長串的文字字串。最後,它會將該欄的
cellRenderer
屬性設定為可呈現多行儲存格的儲存格輸出器名稱。
/* This is a simple cell renderer example.It invokes
the MultiLineCell cell renderer to display a multiple
line text field in one of a DataGrid's columns. */
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.data.DataProvider;
import fl.controls.ScrollPolicy;
// Create a new DataGrid component instance.
var aDg:DataGrid = new DataGrid();
var aLongString:String = "An example of a cell renderer class that displays a multiple line TextField"
var myDP:Array = new Array();
myDP = [{firstName:"Winston", lastName:"Elstad", note:aLongString, item:100},
{firstName:"Ric", lastName:"Dietrich", note:aLongString, item:101},
{firstName:"Ewing", lastName:"Canepa", note:aLongString, item:102},
{firstName:"Kevin", lastName:"Wade", note:aLongString, item:103},
{firstName:"Kimberly", lastName:"Dietrich", note:aLongString, item:104},
{firstName:"AJ", lastName:"Bilow", note:aLongString, item:105},
{firstName:"Chuck", lastName:"Yushan", note:aLongString, item:106},
{firstName:"John", lastName:"Roo", note:aLongString, item:107},
];
// Assign the data provider to the DataGrid to populate it.
// Note: This has to be done before applying the cellRenderers.
aDg.dataProvider = new DataProvider(myDP);
/* Set some basic grid properties.
Note: The data grid's row height should reflect
the number of lines you expect to show in the multiline cell.
The cell renderer wil size to the row height.
About 40 for 2 lines or 60 for 3 lines.*/
aDg.columns = ["firstName", "lastName", "note", "item"];
aDg.setSize(430,190);
aDg.move(40,40);
aDg.rowHeight = 40;// Allows for 2 lines of text at default text size.
aDg.columns[0].width = 70;
aDg.columns[1].width = 70;
aDg.columns[2].width = 230;
aDg.columns[3].width = 60;
aDg.resizableColumns = true;
aDg.verticalScrollPolicy = ScrollPolicy.AUTO;
addChild(aDg);
// Assign cellRenderers.
var col3:DataGridColumn = new DataGridColumn();
col3 = aDg.getColumnAt(2);
col3.cellRenderer = MultiLineCell;
-
將 FLA 檔另存成 MultiLineGrid.fla。
-
建立新的 ActionScript 檔案。
-
將下列 ActionScript 程式碼複製到「Script」視窗中:
package {
import fl.controls.listClasses.CellRenderer;
public class MultiLineCell extends CellRenderer
{
public function MultiLineCell()
{
textField.wordWrap = true;
textField.autoSize = "left";
}
override protected function drawLayout():void {
textField.width = this.width;
super.drawLayout();
}
}
}
-
將 ActionScript 檔命名為 MultiLineCell.as,然後儲存到與 MultiLineGrid.fla 檔相同的資料夾中。
-
回到 MultiLineGrid.fla 應用程式,然後選取「控制 > 測試影片」。
該 DataGrid 看起來如下:
MultiLineGrid.fla 應用程式的 DataGrid
設定標題樣式
您可以使用
headerTextFormat
樣式,設定標題列的文字樣式。下列範例會使用 TextFormat 物件設定
headerTextFormat
樣式,以便使用大小為 14、斜體及紅色的 Arial 字體。
-
建立新的 Flash 檔案 (ActionScript 3.0) 文件。
-
將 DataGrid 組件拖曳到「舞台」,並為它指定實體名稱
aDg
。
-
開啟「動作」面板,選取主要「時間軸」中的「影格 1」,然後輸入下列程式碼:
import fl.data.DataProvider;
import fl.controls.dataGridClasses.DataGridColumn;
var myDP:Array = new Array();
myDP = [{FirstName:"Winston", LastName:"Elstad"},
{FirstName:"Ric", LastName:"Dietrich"},
{FirstName:"Ewing", LastName:"Canepa"},
{FirstName:"Kevin", LastName:"Wade"},
{FirstName:"Kimberly", LastName:"Dietrich"},
{FirstName:"AJ", LastName:"Bilow"},
{FirstName:"Chuck", LastName:"Yushan"},
{FirstName:"John", LastName:"Roo"},
];
// Assign the data provider to the DataGrid to populate it.
// Note: This has to be done before applying the cellRenderers.
aDg.dataProvider = new DataProvider(myDP);
aDg.setSize(160,190);
aDg.move(40,40);
aDg.columns[0].width = 80;
aDg.columns[1].width = 80;
var tf:TextFormat = new TextFormat();
tf.size = 14;
tf.color = 0xff0000;
tf.italic = true;
tf.font = "Arial"
aDg.setStyle("headerTextFormat", tf);
-
選取「控制 > 測試影片」,執行應用程式。
搭配 DataGrid 組件使用外觀元素
DataGrid 組件會使用下列外觀元素來代表其視覺狀態:
DataGrid 外觀元素
CellRenderer 外觀元素是用於 DataGrid 之主體儲存格的外觀元素,而 HeaderRenderer 外觀元素則是用於標題列的外觀元素。下列程序會變更標題列的背景顏色,但是您可以使用相同的程序來變更 DataGrid 的主體儲存格,只要編輯 CellRenderer 外觀元素即可。
-
建立新的 Flash 文件 (ActionScript 3.0)。
-
將 DataGrid 組件拖曳到「舞台」,並為它指定實體名稱
aDg
。
-
按兩下該組件,開啟其外觀元素的面板。
-
將縮放控制項設定為 400%,放大圖示以進行編輯。
-
按兩下 HeaderRenderer 外觀元素,開啟 HeaderRenderer 外觀元素的面板。
-
按兩下 Up_Skin,以元件編輯模式加以開啟,然後按一下其背景,直到選取背景,而且「填色」顏色挑選器出現在「屬性」檢測器中為止。
-
使用「填色」顏色挑選器選取 #00CC00,將該顏色套用到 Up_Skin HeaderRenderer 外觀元素的背景。
-
按一下「舞台」上方編輯列左側的「後退」按鈕,回到文件編輯模式。
-
在「時間軸」之「影格 1」的「動作」面板中加入下列程式碼,將資料加入 DataGrid:
import fl.data.DataProvider;
bldRosterGrid(aDg);
var aRoster:Array = new Array();
aRoster = [
{Name:"Wilma Carter",Home: "Redlands, CA"},
{Name:"Sue Pennypacker",Home: "Athens, GA"},
{Name:"Jill Smithfield",Home: "Spokane, WA"},
{Name:"Shirley Goth", Home: "Carson, NV"},
{Name:"Jennifer Dunbar",Home: "Seaside, CA"}
];
aDg.dataProvider = new DataProvider(aRoster);
function bldRosterGrid(dg:DataGrid){
dg.setSize(400, 130);
dg.columns = ["Name", "Home"];
dg.move(50,50);
dg.columns[0].width = 120;
dg.columns[1].width = 120;
};
-
選取「控制 > 測試影片」,測試應用程式。
如下圖所示,DataGrid 顯示時,其標題列的背景顏色應該為綠色。
具有自訂標題列背景的 DataGrid
|
|
|