|
CellRenderer, List, DataGrid, TileList ve ComboBox gibi List tabanlı bileşenlerin kendi satırları için özel hücre içeriğini işlemek ve görüntülemek için kullandığı bir sınıftır. Özelleştirilmiş bir hücre, metin, CheckBox gibi önceden oluşturulmuş bir bileşen veya oluşturabileceğiniz herhangi bir görüntüleme nesnesini içerebilir. Özel CellRenderer öğesini kullanarak veri oluşturmak için, CellRenderer sınıfını genişletebilir veya kendi özel CellRenderer sınıfınızı oluşturmak için ICellRenderer arabirimini uygulayabilirsiniz.
List, DataGrid, TileList ve ComboBox sınıfları, SelectableList sınıfının alt sınıflarıdır. SelectableList sınıfı bir
cellRenderer
stili içerir. Bu stil, bileşenin hücre oluşturmak için kullandığı görüntüleme nesnesini tanımlar.
List nesnesinin
setRendererStyle()
yöntemini çağırarak CellRenderer tarafından kullanılan stillerin biçimlendirmesini ayarlayabilirsiniz (bkz.
Hücreleri biçimlendirme
). Veya CellRenderer olarak kullanmak için özel bir sınıf tanımlayabilirsiniz (bkz.
Özel bir CellRenderer sınıfı tanımlama
).
Hücreleri biçimlendirme
CellRenderer sınıfı, hücrenin biçimini denetlemenize olanak sağlayan bir grup stil içerir.
Şu stiller, farklı hücre durumları (devre dışı, basılmış, üzerinde ve basılmamış) için kullanılan kaplamaları tanımlamanıza olanak sağlar:
-
disabledSkin
ve
selectedDisabledSkin
-
downSkin
ve
selectedDownSkin
-
overSkin
ve
selectedOverSkin
-
upSkin
ve
selectedUpSkin
Aşağıdaki stiller metin biçimlendirmesi için geçerlidir:
-
disabledTextFormat
-
textFormat
-
textPadding
List nesnesinin
setRendererStyle()
yöntemini çağırarak veya CellRenderer nesnesinin
setStyle()
yöntemini çağırarak bu stilleri ayarlayabilirsiniz. List nesnesinin
getRendererStyle()
yöntemini çağırarak veya CellRenderer nesnesinin
getStyle()
yöntemini çağırarak bu stilleri ayarlayabilirsiniz. List nesnesinin
rendererStyles
özelliği veya CallRenderer nesnesinin
getStyleDefinition()
yöntemi yoluyla tüm oluşturucu stillerini tanımlayan bir nesneye de (nesnenin özellikleri denir) erişebilirsiniz.
Bir stili varsayılan değerine sıfırlamak için
clearRendererStyle()
yöntemini çağırabilirsiniz.
Listedeki satırların uzunluğunu almak veya ayarlamak için List nesnesinin
rowHeight
özelliğini kullanın.
Özel bir CellRenderer sınıfı tanımlama
Özel bir CellRenderer tanımlamak için CellRenderer sınıfını genişleten bir sınıf oluşturma
Örneğin, şu kod iki sınıf içerir. ListSample sınıfı bir List bileşenini başlatır ve List bileşeni için kullanılacak hücre oluşturucuyu tanımlamak üzere diğer sınıfı (CustomRenderer) kullanır. CustomRenderer sınıfı, CellRenderer sınıfını genişletir.
-
Dosya > Yeni'yi seçin.
-
Görüntülenen Yeni Belge iletişim kutusunda Flash Dosyası (ActionScript 3.0) öğesini seçip Tamam'ı tıklatın.
-
Bileşenler panelini görüntülemek için Pencere > Bileşenler seçeneklerini belirleyin.
-
Bileşenler panelinde, bir List bileşenini Sahne Alanı'na sürükleyin.
-
Flash uygulaması Özellik denetçisini görüntülemiyorsa, Pencere > Özellikler > Özellikler seçeneklerini belirleyin.
-
List bileşeni seçili durumdayken Özellik denetçisinde özellikleri ayarlayın:
-
Örnek Adı: myList
-
W (genişlik): 200
-
H (yükseklik): 300
-
X: 20
-
Y: 20
-
Zaman Çizelgesi'nde Kare 1'i seçin ve Pencere > Eylemler seçeneklerini belirleyin.
-
Eylemler paneline şu komut dosyasını yazın:
myList.setStyle("cellRenderer", CustomCellRenderer);
myList.addItem({label:"Burger -- $5.95"});
myList.addItem({label:"Fries -- $1.95"});
-
Dosya > Kaydet'i seçin. Dosyaya bir ad verin ve Tamam düğmesini tıklatın.
-
Dosya > Yeni'yi seçin.
-
Yeni Belge iletişim kutusunda ActionScript Dosyası'nı seçip Tamam düğmesini tıklatın.
-
Komut dosyası penceresinde, CustomCellRenderer sınıfını tanımlamak için şu kodu girin:
package {
import fl.controls.listClasses.CellRenderer;
import flash.text.TextFormat;
import flash.filters.BevelFilter;
public class CustomCellRenderer extends CellRenderer {
public function CustomCellRenderer() {
var format:TextFormat = new TextFormat("Verdana", 12);
setStyle("textFormat", format);
this.filters = [new BevelFilter()];
}
}
}
-
Dosya > Kaydet'i seçin. Dosyayı CustomCellRenderer.as olarak adlandırın ve FLA dosyasıyla aynı dizine koyup Tamam düğmesini tıklatın.
-
Kontrol Et > Filmi Test Et'i seçin.
Özel bir CellRenderer öğesini tanımlamak için ICellRenderer arabirimini uygulayan bir sınıfı kullanma
DisplayObject sınıfını miras alıp ICellRenderer arabirimini uygulayan herhangi bir sınıfı kullanarak da CellRenderer öğesini tanımlayabilirsiniz. Örneğin, şu kod iki sınıfı tanımlar. ListSample2 sınıfı, List nesnesini görüntüleme listesine ekler ve CustomRenderer sınıfını kullanmak için CellRenderer öğesini tanımlar. CustomRenderer sınıfı, CheckBox sınıfını (DisplayObject sınıfını genişleten) genişletir ve ICellRenderer arabirimini uygular. CustomRenderer sınıfının ICellRenderer arabiriminde tanımlanan
data
ve
listData
özellikleri için getter ve setter yöntemleri tanımladığını unutmayın. ICellRenderer arabiriminde tanımlanan diğer özellik ve yöntemler (
selected
özelliği ve
setSize()
yöntemi) önceden CheckBox sınıfında tanımlanmıştır:
-
Dosya > Yeni'yi seçin.
-
Görüntülenen Yeni Belge iletişim kutusunda Flash Dosyası (ActionScript 3.0) öğesini seçip Tamam'ı tıklatın.
-
Bileşenler panelini görüntülemek için Pencere > Bileşenler seçeneklerini belirleyin.
-
Bileşenler panelinde, bir List bileşenini Sahne Alanı'na sürükleyin.
-
Flash uygulaması Özellik denetçisini görüntülemiyorsa, Pencere > Özellikler > Özellikler seçeneklerini belirleyin.
-
List bileşeni seçili durumdayken Özellik denetçisinde özellikleri ayarlayın:
-
Örnek Adı: myList
-
W (genişlik): 100
-
H (yükseklik): 300
-
X: 20
-
Y: 20
-
Zaman Çizelgesi'nde Kare 1'i seçin ve Pencere > Eylemler seçeneklerini belirleyin.
-
Eylemler paneline şu komut dosyasını yazın:
myList.setStyle("cellRenderer", CustomCellRenderer);
myList.addItem({name:"Burger", price:"$5.95"});
myList.addItem({name:"Fries", price:"$1.95"});
-
Dosya > Kaydet'i seçin. Dosyaya bir ad verin ve Tamam düğmesini tıklatın.
-
Dosya > Yeni'yi seçin.
-
Yeni Belge iletişim kutusunda ActionScript Dosyası'nı seçip Tamam düğmesini tıklatın.
-
Komut dosyası penceresinde, CustomCellRenderer sınıfını tanımlamak için şu kodu girin:
package
{
import fl.controls.CheckBox;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
public class CustomCellRenderer extends CheckBox implements ICellRenderer {
private var _listData:ListData;
private var _data:Object;
public function CustomCellRenderer() {
}
public function set data(d:Object):void {
_data = d;
label = d.label;
}
public function get data():Object {
return _data;
}
public function set listData(ld:ListData):void {
_listData = ld;
}
public function get listData():ListData {
return _listData;
}
}
}
-
Dosya > Kaydet'i seçin. Dosyayı CustomCellRenderer.as olarak adlandırın ve FLA dosyasıyla aynı dizine koyup Tamam düğmesini tıklatın.
-
Kontrol Et > Filmi Test Et'i seçin.
CellRenderer tanımlamak için sembol kullanma
CellRenderer tanımlamak için kütüphanede bir sembol de kullanabilirsiniz. Sembolün ActionScript için dışa aktarılması ve kütüphane sembolünün sınıf adının ICellRenderer arabirimini uygulayan veya CellRenderer sınıfını (ya da alt sınıflarından birini) genişleten ilişkilendirilmiş bir sınıf dosyasına sahip olması gerekir.
Aşağıdaki örnek, kütüphane sembolünü kullanarak özel bir CellRenderer öğesini tanımlar.
-
Dosya > Yeni'yi seçin.
-
Görüntülenen Yeni Belge iletişim kutusunda Flash Dosyası (ActionScript 3.0) öğesini seçip Tamam'ı tıklatın.
-
Bileşenler panelini görüntülemek için Pencere > Bileşenler seçeneklerini belirleyin.
-
Bileşenler panelinde, bir List bileşenini Sahne Alanı'na sürükleyin.
-
Flash uygulaması Özellik denetçisini görüntülemiyorsa, Pencere > Özellikler > Özellikler seçeneklerini belirleyin.
-
List bileşeni seçili durumdayken Özellik denetçisinde özellikleri ayarlayın:
-
Örnek Adı: myList
-
W (genişlik): 100
-
H (yükseklik): 400
-
X: 20
-
Y: 20
-
Parametreler panelini tıklatın ve dataProvider satırında ikinci sütunu çift tıklatın.
-
Değerler iletişim kutusunda, iki veri öğesini (etiketleri label0 ve label1 olarak ayarlanmış şekilde) eklemek için artı işaretini iki defa tıklatın ve sonra da Tamam düğmesini tıklatın.
-
Metin aracıyla Sahne Alanı'nda bir metin alanı çizin.
-
Metin alanı seçili durumdayken Özellik denetçisinde özellikleri ayarlayın:
-
Metin alanı seçili durumdayken, Değiştir > Sembole Dönüştür seçeneklerini belirleyin.
-
Sembole Dönüştür iletişim kutusunda şu ayarları yapın ve Tamam'ı tıklatın.
-
Ad: MyCellRenderer
-
Tür: MovieClip
-
ActionScript için Dışa Aktar: Seçili
-
İlk Karede Dışa Aktar: Seçili
-
Sınıf: MyCellRenderer
-
Temel Sınıf: flash.display.MovieClip
Flash uygulaması bir ActionScript Sınıf Uyarısı görüntülerse, uyarı kutusunda Tamam düğmesini tıklatın.
-
Yeni film klibi örneğinin sembolünü Sahne Alanı'ndan silin.
-
Zaman Çizelgesi'nde Kare 1'i seçin ve Pencere > Eylemler seçeneklerini belirleyin.
-
Eylemler paneline şu komut dosyasını yazın:
myList.setStyle("cellRenderer", MyCellRenderer);
-
Dosya > Kaydet'i seçin. Dosyaya bir ad verin ve Tamam düğmesini tıklatın.
-
Dosya > Yeni'yi seçin.
-
Yeni Belge iletişim kutusunda ActionScript Dosyası'nı seçip Tamam düğmesini tıklatın.
-
Komut dosyası penceresinde, MyCellRenderer sınıfını tanımlamak için şu kodu girin:
package {
import flash.display.MovieClip;
import flash.filters.GlowFilter;
import flash.text.TextField;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
import flash.utils.setInterval;
public class MyCellRenderer extends MovieClip implements ICellRenderer {
private var _listData:ListData;
private var _data:Object;
private var _selected:Boolean;
private var glowFilter:GlowFilter;
public function MyCellRenderer() {
glowFilter = new GlowFilter(0xFFFF00);
setInterval(toggleFilter, 200);
}
public function set data(d:Object):void {
_data = d;
textField.text = d.label;
}
public function get data():Object {
return _data;
}
public function set listData(ld:ListData):void {
_listData = ld;
}
public function get listData():ListData {
return _listData;
}
public function set selected(s:Boolean):void {
_selected = s;
}
public function get selected():Boolean {
return _selected;
}
public function setSize(width:Number, height:Number):void {
}
public function setStyle(style:String, value:Object):void {
}
public function setMouseState(state:String):void{
}
private function toggleFilter():void {
if (textField.filters.length == 0) {
textField.filters = [glowFilter];
} else {
textField.filters = [];
}
}
}
}
-
Dosya > Kaydet'i seçin. Dosyayı MyCellRenderer.as olarak adlandırın ve FLA dosyasıyla aynı dizine koyup Tamam düğmesini tıklatın.
-
Kontrol Et > Filmi Test Et'i seçin.
CellRenderer özellikleri
data
özelliği, CellRenderer için ayarlanmış tüm özellikleri içeren bir nesnedir. Örneğin, Checkbox sınıfını genişleten özel bir CellRenderer öğesini tanımlayan şu sınıfta,
data
özelliğinin setter işlevinin
data.label
değerini CheckBox sınıfından miras alınan
label
özelliğine ilettiğini unutmayın:
public class CustomRenderer extends CheckBox implements ICellRenderer {
private var _listData:ListData;
private var _data:Object;
public function CustomRenderer() {
}
public function set data(d:Object):void {
_data = d;
label = d.label;
}
public function get data():Object {
return _data;
}
public function set listData(ld:ListData):void {
_listData = ld;
}
public function get listData():ListData {
return _listData;
}
}
}
selected
özelliği, bir hücrenin listede seçili olup olmadığını tanımlar.
DataGrid nesnesinin sütunu için CellRenderer uygulama
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.
Düzenlenebilir bir hücre için CellRenderer tanımlama
DataGridCellEditor sınıfı, bir DataGrid nesnesindeki düzenlenebilir hücreler için kullanılan bir oluşturucuyu tanımlar. DataGrid nesnesinin
editable
özelliği
true
değerine ayarlandığında ve kullanıcı düzenlenecek hücreyi tıklattığında bu, hücrenin oluşturucusu olur. Düzenlenebilir bir hücre için CellRenderer öğesi tanımlamak üzere, DataGrid nesnesinin
columns
dizisinin her bir öğesi için
itemEditor
özelliğini ayarlayın.
CellRenderer olarak bir görüntü, SWF dosyası veya film klibi kullanma
CellRenderer öğesinin alt sınıfı olan ImageCell sınıfı, hücrenin ana içeriğinin bir görüntü, SWF dosyası veya film klibi olduğu hücreler oluşturmak için kullanılan bir nesneyi tanımlar. ImageCell sınıfı, hücrenin görünümünün tanımlanması için şu stilleri içerir:
-
imagePadding
—Piksel olarak, hücrenin kenarını görüntünün kenarından ayıran dolgu
-
selectedSkin
—Seçili durumunu göstermek için kullanılan kaplama
-
textOverlayAlpha
—Hücre etiketinin arkasındaki kaplamanın opaklığı
-
textPadding
—Piksel olarak, hücrenin kenarını metnin kenarından ayıran dolgu
ImageCell sınıfı, TileList sınıfının varsayılan CellRenderer öğesidir.
|
|
|