Personalizzare il componente DataGrid

Potete trasformare un componente DataGrid modificandone le dimensioni orizzontale e verticale sia durante la creazione che in fase di runtime. Durante la creazione, selezionate il componente nello stage e usate lo strumento Trasformazione libera o uno dei comandi Elabora > Trasforma. In fase di runtime, usate il metodo setSize() o le proprietà valide della classe Button quali width , height , scaleX e scaleY . Se non è presente alcuna barra di scorrimento orizzontale, le larghezze delle colonne si adattano in maniera proporzionale. Se le colonne si adattano automaticamente, e quindi anche le celle, il testo delle celle potrebbe essere troncato.

Usare gli stili con il componente DataGrid

È possibile impostare le proprietà degli stili per modificare l'aspetto di un componente DataGrid. Il componente DataGrid eredita gli stili dal componente List. (Vedete Usare gli stili con il componente List .)

Impostare gli stili per una singola colonna

Un oggetto DataGrid può avere più colonne ed è possibile specificare diversi renderer di celle per ogni colonna. Ogni colonna di un oggetto DataGrid è rappresentata da un oggetto DataGridColumn e la classe DataGridColumn include una proprietà cellRenderer per cui viene definito l'oggetto CellRenderer per la colonna.

  1. Create un nuovo documento Flash (ActionScript 3.0).

  2. Trascinate il componente DataGrid nel pannello Libreria.

  3. Aggiungete il codice seguente nel pannello Azioni al fotogramma 1 della linea temporale. Questo codice consente di creare un componente DataGrid con una lunga stringa di testo nella terza colonna. Al termine, la proprietà cellRenderer della colonna viene impostata sul nome di un renderer di celle che visualizza una cella multiriga.

    /* 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;
  4. Salvate il file FLA come MultiLineGrid.fla.

  5. Create un nuovo file ActionScript.

  6. Copiate il codice ActionScript seguente nella finestra 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(); 
            } 
        } 
    }
  7. Salvate il file ActionScript come MultiLineCell.as nella stessa cartella in cui è stato salvato il file MultiLineGrid.fla.

  8. Tornate all'applicazione MultiLineGrid.fla e selezionate Controllo > Prova filmato.

    Il componente DataGrid dovrebbe essere simile al seguente:

    DataGrid per l'applicazione MultiLineGrid.fla
    DataGrid per l'applicazione MultiLineGrid.fla

Impostare gli stili dell'intestazione

Potete impostare lo stile del testo per una riga di intestazione usando lo stile headerTextFormat . Nell'esempio seguente viene usato l'oggetto TextFormat per impostare lo stile headerTextFormat affinché vengano usati il carattere Arial, il colore rosso, la dimensione del carattere 14 e lo stile corsivo.

  1. Create un nuovo documento File Flash (ActionScript 3.0).

  2. Trascinate il componente DataGrid nello stage e assegnategli il nome di istanza aDg .

  3. Aprite il pannello Azioni, selezionate il fotogramma 1 nella linea temporale principale e immettete il codice seguente:

    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);
  4. Selezionate Controllo > Prova filmato per eseguire l'applicazione.

Usare gli skin con il componente DataGrid

Il componente DataGrid usa i seguenti skin per rappresentare i relativi stati visivi:

Skin del componente DataGrid

Lo skin CellRenderer viene usato per le celle del corpo del componente DataGrid, mentre lo skin HeaderRenderer viene usato per la riga di intestazione. Nella procedura seguente viene modificato il colore di sfondo della riga di intestazione, ma potete seguire lo stesso processo per modificare il colore di sfondo delle celle del corpo di DataGrid mediante la modifica dello skin CellRenderer.

  1. Create un nuovo documento Flash (ActionScript 3.0).

  2. Trascinate il componente DataGrid nello stage e assegnategli il nome di istanza aDg .

  3. Fate doppio clic sul componente per aprire la tavolozza dei relativi skin.

  4. Impostate la percentuale di ingrandimento su 400% per aumentare le dimensioni delle icone per la modifica.

  5. Fate doppio clic sullo skin HeaderRenderer per aprire la tavolozza degli skin HeaderRenderer.

  6. Fate doppio clic sullo skin Up_Skin per aprirlo in modalità di modifica dei simboli, quindi fate clic sul suo sfondo per selezionarlo; viene visualizzato il selettore Colore riempimento nella finestra di ispezione Proprietà.

  7. Selezionate il colore #00CC00 dal selettore Colore riempimento per applicarlo allo sfondo dello skin HeaderRenderer Up_Skin.

  8. Fate clic sul pulsante Indietro sul lato sinistro della barra di modifica, visualizzata sopra lo stage, per tornare alla modalità di modifica del documento.

  9. Aggiungete il codice seguente nel pannello Azioni al fotogramma 1 nella linea temporale per aggiungere i dati al componente 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; 
    };
  10. Selezionate Controllo > Prova filmato per provare l'applicazione.

    Il componente DataGrid dovrebbe apparire come nella figura seguente con lo sfondo della riga di intestazione verde.

    DataGrid con sfondo personalizzato della riga di intestazione
    DataGrid con sfondo personalizzato della riga di intestazione