Personalizar o componente DataGrid

Você pode transformar um componente DataGrid horizontal e verticalmente, durante a autoria e em tempo de execução. Durante a autoria, selecione o componente no Palco e use a ferramenta Transformação livre ou qualquer um dos comandos Modificar > Transformar. Em tempo de execução, use o método setSize() ou as propriedades aplicáveis, como width , height , scaleX e scaleY . Se não houver barra de rolagem horizontal, a largura das colunas será ajustada proporcionalmente. Se ocorrer o ajuste de colunas (e conseqüentemente de células), o texto nas células poderá ser recortado.

Usar estilos com o componente DataGrid

Você pode definir propriedades de estilo para alterar a aparência de um componente DataGrid. O componente DataGrid herda estilos do componente List (consulte Usar estilos com o componente List ).

Definir estilos para uma coluna individual

Um objeto DataGrid pode ter várias colunas, e você pode especificar diferentes renderizadores de célula para cada coluna. Cada coluna de uma DataGrid é representada por um objeto DataGridColumn, e a classe DataGridColumn inclui uma propriedade cellRenderer , para a qual você pode definir o CellRenderer da coluna.

  1. Crie um novo documento Flash (ActionScript 3.0).

  2. Arraste o componente DataGrid para o painel Biblioteca.

  3. Adicione o seguinte código ao painel Ações no Quadro 1 da Linha do tempo. Este código cria uma DataGrid com uma longa seqüência de caracteres de texto na terceira coluna. No final, define a propriedade cellRenderer da coluna com o nome de um renderizador de célula que processa uma célula de várias linhas.

    /* 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. Salve o arquivo FLA como MultiLineGrid.fla.

  5. Crie um novo arquivo ActionScript.

  6. Copie o código ActionScript a seguir na janela 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. Salve o arquivo ActionScript como MultiLineCell.as na mesma pasta onde você salvou MultiLineGrid.fla.

  8. Volte ao aplicativo MultiLineGrid.fla e selecione Controlar > Testar filme.

    A DataGrid deve ter esta aparência:

    DataGrid para o aplicativo MultiLineGrid.fla
    DataGrid para o aplicativo MultiLineGrid.fla

Definir estilos de cabeçalho

Você pode definir o estilo de texto de uma linha de cabeçalho usando o estilo headerTextFormat . O exemplo a seguir usa o objeto TextFormat para definir que o estilo headerTextFormat use a fonte Arial, a cor vermelha e um tamanho de fonte 14, em itálico.

  1. Crie um novo documento de arquivo Flash (ActionScript 3.0).

  2. Arraste o componente DataGrid para o Palco e atribua a ele o nome de ocorrência de aDg .

  3. Abra o painel Ações, selecione o Quadro 1 na Linha do tempo principal e digite o seguinte código:

    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. Selecione Controlar > Testar filme para executar o aplicativo.

Usar capas com o componente DataGrid

O componente DataGrid usa as capas a seguir para representar seus estados visuais:

Capas de DataGrid

A capa CellRenderer é usada para as células do corpo de DataGrid, enquanto a capa HeaderRenderer é usada para a linha do cabeçalho. O procedimento a seguir altera a cor do plano de fundo da linha do cabeçalho, mas você pode usar o mesmo processo para alterar a cor do plano de fundo das células do corpo de DataGrid, editando a capa CellRenderer.

  1. Crie um novo documento Flash (ActionScript 3.0).

  2. Arraste o componente DataGrid para o Palco e atribua a ele o nome de ocorrência de aDg .

  3. Clique duas vezes no componente para abrir sua paleta de capas.

  4. Defina o controle de zoom como 400% para ampliar os ícones para edição.

  5. Clique duas vezes na capa HeaderRenderer para abrir a paleta com as capas de HeaderRenderer.

  6. Clique duas vezes na Up_Skin para abri-la no modo de edição de símbolo. Clique em seu plano de fundo até que seja selecionado e o Seletor de cor de preenchimento apareça no Inspetor de propriedades.

  7. Selecione a cor #00CC00 usando o Seletor de cor de preenchimento para aplicá-la ao plano de fundo da capa Up_Skin de HeaderRenderer.

  8. Clique no botão Voltar, do lado esquerdo da barra de edição acima do Palco, para voltar ao modo de edição de documento.

  9. Adicione o seguinte código ao painel Ações no Quadro 1 da Linha do tempo, para adicionar dados à 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. Selecione Controlar > Testar filme para testar o aplicativo.

    A DataGrid deverá aparecer como na ilustração a seguir, com o plano de fundo da linha do cabeçalho em verde.

    DataGrid com plano de fundo da linha do cabeçalho personalizado
    DataGrid com plano de fundo da linha do cabeçalho personalizado