|
Składnik DataGrid można przekształcać w poziomie i w pionie podczas tworzenia i w czasie wykonywania. W tym celu podczas tworzenia należy wybrać na stole montażowym składnik i użyć narzędzia Przekształcenie swobodne lub dowolnego z poleceń Modyfikuj > Przekształć. W czasie wykonywania należy użyć metody
setSize()
lub odpowiednich właściwości, takich jak
width
,
height
,
scaleX
czy
scaleY
. Jeśli brakuje poziomego paska przewijania, szerokości kolumn zostaną ustawione proporcjonalnie. Jeśli nastąpi korekcja rozmiaru kolumny (a zatem i komórki), tekst w komórkach może zostać przycięty.
Używanie stylów ze składnikiem DataGrid
Ustawianie stylów dla pojedynczej kolumny
Obiekt DataGrid może zawierać wiele kolumn i możliwe jest określenie różnych mechanizmów renderujących komórki dla poszczególnych kolumn. Każda kolumna obiektu DataGrid ma odzwierciedlenie w postaci obiektu DataGridColumn, a klasa DataGridColumn zawiera właściwość
cellRenderer
umożliwiającą zdefiniowanie mechanizmu renderującego komórki danej kolumny.
-
Utwórz nowy dokument Flash (ActionScript 3.0).
-
Przeciągnij składnik DataGrid do panelu Biblioteka.
-
Dodaj poniższy kod do panelu Operacje w klatce 1 na osi czasu. Kod ten tworzy składnik DataGrid z długim ciągiem znaków w trzeciej kolumnie. Na końcu we właściwości
cellRenderer
kolumny ustawiana jest nazwa mechanizmu renderującego komórki, który renderuje komórkę wielowierszową.
/* 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;
-
Zapisz plik FLA jako MultiLineGrid.fla.
-
Utwórz nowy plik ActionScript.
-
Skopiuj następujący kod ActionScript do okna Skrypt:
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();
}
}
}
-
Zapisz plik ActionScript jako MultiLineCell.as w tym samym folderze, w którym zapisany został plik MultiLineGrid.fla.
-
Powróć do aplikacji MultiLineGrid.fla i wybierz polecenia Sterowanie > Testuj film.
Składnik DataGrid powinien wyglądać tak:
Składnik DataGrid dla aplikacji MultiLineGrid.fla
Ustawianie stylów nagłówka
Styl tekstu dla wiersza nagłówka można ustawić za pomocą stylu
headerTextFormat
. W poniższym przykładzie obiekt TextFormat użyty został w celu ustawienia stylu
headerTextFormat
do użytku z pochyloną czcionką Arial w kolorze czerwonym o rozmiarze 14.
-
Utwórz nowy plik z dokumentem Flash (ActionScript 3.0).
-
Przeciągnij składnik DataGrid na stół montażowy i nadaj instancji nazwę
aDg
.
-
Otwórz panel Operacje, zaznacz klatkę nr 1 na głównej osi czasu i wprowadź następujący kod:
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);
-
Wybierz polecenia Sterowanie > Testuj film, aby uruchomić aplikację.
Używanie karnacji ze składnikiem DataGrid
Składnik DataGrid używa poniższych karnacji w celu zaprezentowania swoich graficznych stanów:
Karnacje składnika DataGrid
Karnacja CellRenderer jest karnacją używaną dla komórek treści składnika DataGrid, natomiast karnacja HeaderRenderer używana jest dla wiersza nagłówka. Poniższa procedura powoduje zmianę koloru tła wiersza nagłówka, ale ten sam proces może posłużyć do zmiany koloru tła komórek treści składnika DataGrid poprzez edycję karnacji CellRenderer.
-
Utwórz nowy dokument Flash (ActionScript 3.0).
-
Przeciągnij składnik DataGrid na stół montażowy i nadaj instancji nazwę
aDg
.
-
Kliknij składnik dwukrotnie, aby otworzyć jego paletę karnacji.
-
Ustaw element sterujący powiększenia na wartość 400%, aby powiększyć ikony do edycji.
-
Kliknij dwukrotnie karnację HeaderRenderer, aby otworzyć paletę karnacji HeaderRenderer.
-
Kliknij dwukrotnie karnację Up_Skin, aby otworzyć ją w trybie edycji symbolu i klikaj tło karnacji do momentu jej zaznaczenia i pojawienia się wybieraka Koloru wypełnienia w Inspektorze właściwości.
-
Wybierz kolor #00CC00 za pomocą wybieraka Koloru wypełnienia w celu zastosowania go do tła karnacji Up_Skin HeaderRenderer.
-
Kliknij przycisk Wstecz po lewej stronie paska edycji nad stołem montażowym, aby powrócić do trybu edycji dokumentu.
-
Dodaj poniższy kod do panelu Operacje w klatce nr 1 na osi czasu, aby dodać dane do składnika 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;
};
-
Wybierz polecenia Sterowanie > Testuj film, aby przetestować aplikację.
Składnik DataGrid powinien zostać wyświetlony w sposób przedstawiony na poniższej ilustracji z tłem dla wiersza nagłówka w kolorze zielonym.
Składnik DataGrid z niestandardowym tłem w wierszu nagłówka
|
|
|