PDA

Просмотр полной версии : DataGrid and CellRender


uncle_sam
09.10.2007, 01:42
в общем как известно чтобы компоненте dataGrid столбцу присвоить какой нибудь стиль

какой_то_столбец_в_компоненте.cellRenderer = Сoloritems

где coloritems у меня класс который делает текстформат для текста в столбце. собственно класс (уж не обессудьте что в нем что то очень коряво,я не волшебник - я всего лишь учусь ;)

package {

import fl.controls.listClasses.CellRenderer;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;

/**
Класс работает с текстом в отдельно взятой ячейке
*/
public class Coloritems extends CellRenderer /*implements ICellRenderer*/ {


public static var _aFormats:Array = [new TextFormat("SF TransRobotics Bold",16,0x00FF00),
new TextFormat("SF TransRobotics Bold",16,0xC27005),
new TextFormat("SF TransRobotics Bold",16,0xFF9C00),
new TextFormat("SF TransRobotics Bold",16,0xFFBE36),
new TextFormat("SF TransRobotics Bold",16,0xFFFC12),
new TextFormat("SF TransRobotics Bold",16,0xBEBEBE)];


public function Coloritems() {

}



public function checkColor():void {
trace(this._parent);
if(_listData.index ==0){
textField.setTextFormat(_aFormats[0]);
} else if(_listData.index<10){
textField.setTextFormat(_aFormats[1]);
} else if (_listData.index <20) {
textField.setTextFormat(_aFormats[2]);
} else if (_listData.index<40) {
textField.setTextFormat(_aFormats[3]);
} else if( _listData.index<50) {
textField.setTextFormat(_aFormats[4]);
} else if (_listData.index<100) {
textField.setTextFormat(_aFormats[5]);
}

}



override protected function drawLayout():void {
checkColor();
super.drawLayout();
}

}
}
собственно суть проблемы. у меня будет несколько столбцов (и возможно еще одна датагрид) но текстформат для этих столбцов будет отличаться от этого , который в данный момент находится в статичном свойстве.
поискал по форумам наткнулся на ссылку http://www.adobe.com/devnet/flash/quickstart/datagrid_pt3/

как видно в последнем примере там _listData.index это ссылка на строку в столбце для которого этот cellRenderer применен. мне же нужно обратиться из класса ColorItems непосредственно к столбцу (и мож быть в дальнейшем и к датагриду) к которому он применен. подскажите как это сделать или киньте ссылку - почитаю разберусь.
это нужно для того чтобы не писать мне 10 классов на каждый cellRenderer для столбца а сделать метод ( а можно даже изменить checkColor() в данном классе чтобы она проверяла имя столбца и в зависимости от его имени вешала на текст в этом слобце определенный текстформат)
заранее спасибо.

uncle_sam
09.10.2007, 18:06
все разобрался.
вот этот объект _listData у него помимо свойства index есть свойство column а за объект к столбцу которого приклеен cellRenderer отвечает свойство owner.
всем сорри за беспокойство и спасибо за внимание ;)