DataGrid bileşenini özelleştirme

Geliştirme sırasında ve çalışma zamanında DataGrid bileşenini yatay olarak ve dikey olarak dönüştürebilirsiniz. Geliştirme sırasında, Sahne Alanı'nda bileşeni seçin ve Serbest Dönüştürme aracını veya Değiştir > Dönüştür komutlarından herhangi birini kullanın. Çalışma zamanında, setSize() yöntemini veya width , height , scaleX ve scaleY gibi ilgili özellikleri kullanın. Herhangi bir yatay kaydırma çubuğu yoksa, sütun genişlikleri orantılı olarak ayarlanır. Sütun (ve dolayısıyla hücre) boyutu ayarlanırsa, hücrelerdeki metinler kırpılabilir.

DataGrid bileşeniyle stilleri kullanma

DataGrid bileşeninin görünümünü değiştirmek için stil özelliklerini ayarlayabilirsiniz. DataGrid bileşeni, List bileşeninden stilleri miras alır. (Bkz. List bileşeniyle stilleri kullanma .)

Tek bir sütun için stiller ayarlama

DataGrid nesnesinde birden çok sütun bulunabilir ve siz de her sütun için farklı hücre oluşturucuları belirtebilirsiniz. DataGrid öğesinin her sütunu bir DataGridColumn nesnesiyle temsil edilir ve DataGridColumn sınıfı, sütun için CellRenderer öğesini tanımlayabileceğiniz bir cellRenderer özelliğini içerir.

  1. Yeni bir Flash belgesi (ActionScript 3.0) oluşturun.

  2. DataGrid bileşenini Kütüphane paneline sürükleyin.

  3. Zaman Çizelgesi'nin Kare 1 öğesindeki Eylemler paneline şu kodu ekleyin. Bu kod, üçüncü sütunda uzun bir metin dizesiyle birlikte bir DataGrid öğesi oluşturur. Sonunda sütunun cellRenderer özelliğini, birden çok satır hücresi oluşturan bir hücre oluşturucusunun adına ayarlar.

    /* 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. FLA dosyasını MultiLineGrid.fla olarak kaydedin.

  5. Yeni bir ActionScript dosyası oluşturun.

  6. Şu ActionScript kodunu Komut Dosyası penceresine kopyalayın:

    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. ActionScript dosyasını, MultiLineGrid.fla dosyasını kaydettiğiniz aynı klasöre MultiLineCell.as olarak kaydedin.

  8. MultiLineGrid.fla uygulamasına geri dönün ve Kontrol Et > Filmi Test Et seçeneklerini belirleyin.

    DataGrid öğesinin şöyle görünmesi gerekir:

    MultiLineGrid.fla uygulaması için DataGrid
    MultiLineGrid.fla uygulaması için DataGrid

Üstbilgi stillerini ayarlama

headerTextFormat stilini kullanarak üstbilgi satırının metin stilini ayarlayabilirsiniz. Şu örnek, Arial fontunu, kırmızı rengini, 14 font boyutunu ve italik özelliklerini kullanmak üzere headerTextFormat stilini ayarlamak için TextFormat nesnesini kullanır.

  1. Yeni bir Flash dosyası (ActionScript 3.0) belgesi oluşturun.

  2. DataGrid bileşenini Sahne Alanı'na sürükleyin ve bu bileşene aDg örnek adını verin.

  3. Eylemler panelini açın, ana Zaman Çizelgesi'nde Kare 1'i seçin ve şu kodu girin:

    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. Uygulamayı çalıştırmak için Kontrol Et > Filmi Test Et'i seçin.

DataGrid bileşeniyle kaplamaları kullanma

DataGrid bileşeni, görsel durumlarını temsil etmesi için şu kaplamaları kullanır:

DataGrid kaplamaları

CellRenderer kaplaması, DataGrid öğesinin gövde hücreleri için kullanılan kaplamayken, HeaderRenderer kaplaması üstbilgi satırı için kullanılır. Aşağıdaki prosedür, üstbilgi satırının arka plan rengini değiştirir ancak CellRenderer kaplamasını düzenleyerek DataGrid öğesinin gövde hücrelerinin arka plan rengini değiştirmek için de aynı işlemi kullanabilirsiniz.

  1. Yeni bir Flash belgesi (ActionScript 3.0) oluşturun.

  2. DataGrid bileşenini Sahne Alanı'na sürükleyin ve bu bileşene aDg örnek adını verin.

  3. Kaplamalar paletini açmak için bileşeni çift tıklatın.

  4. Düzenlemek üzere simgeleri büyütmek için yakınlaştırma denetimini %400 değerine ayarlayın.

  5. HeaderRenderer kaplamalarının paletini açmak için HeaderRenderer kaplamasını çift tıklatın.

  6. Up_Skin öğesini sembol düzenleme modunda açmak için çift tıklatın ve seçilinceye kadar arka planını tıklatın, böylece Özellik denetçisinde Dolgu rengi seçici görüntülenir.

  7. Up_Skin HeaderRenderer kaplamasının arka planına uygulamak için Dolgu rengi seçicisini kullanarak #00CC00 rengini seçin.

  8. Belge düzenleme moduna geri dönmek için, Sahne Alanı'nın yukarısındaki düzenleme çubuğunun sol tarafındaki Geri düğmesini tıklatın.

  9. DataGrid öğesine veri eklemek için Zaman Çizelgesi'nin Kare 1 öğesindeki Eylemler paneline şu kodu ekleyin:

    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. Uygulamayı test etmek için, Kontrol Et > Filmi Test Et seçeneklerini belirleyin.

    DataGrid öğesinin, yeşil üstbilgi satırı arka planıyla aşağıdaki gibi görüntülenmesi gerekir.

    Özelleştirilmiş üstbilgi satırı arka planıyla DataGrid
    Özelleştirilmiş üstbilgi satırı arka planıyla DataGrid