Показать сообщение отдельно
Старый 01.02.2007, 22:30
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 3  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Вообще не совсем понятно.

Дело в том что дата провайдер содержит в себе объекты, которые передаются ячейкам, тоесть дата провайдер не содержит в себе информации для самой колонки.

Есть два способа, либо реализовать возможность смены цвета у каждой ячейки в отдельности (тогда нужно передавать, каждой ячейке цвет), либо вывести цвета в отдельное свойство.

Есть вариант через задницу, это задавать цвет скажем только первому эллементу в колонке, и остальные ячейки берут значение первого эллемента.

Вот например если юзать отдельное свойство colors

Код:
package controls
{
	import mx.controls.DataGrid;
	import mx.core.ClassFactory;
	import mx.collections.ArrayCollection;
	import mx.controls.dataGridClasses.DataGridColumn;

	public class ColoredDataGrid extends DataGrid
	{
		private var _colors:Array;
		
		public function ColoredDataGrid()
		{
			super();
			
			itemRenderer = new ClassFactory(ItemRenderer);
		}
		[Bindable]
		[Inspectable]
		public function set colors(value:Object):void
		{
			if(value is ArrayCollection)
			{
				_colors = (value as ArrayCollection).source;
			}
			else if(value is Array)
			{
				_colors = value as Array;
			}
			
			for (var i:Number = 0; i < _colors.length; i++)
			{
				if(columns[i] != null)
				{
					(columns[i] as DataGridColumn).setStyle("backgroundColor", _colors[i]);
				}
			}
		}
		public function get colors():Object
		{
			return _colors
		}
	}
}
	import mx.controls.Label;
	import controls.ColoredDataGrid;
	import mx.controls.dataGridClasses.DataGridListData;
	

class ItemRenderer extends Label
{
	override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
	{
		super.updateDisplayList(unscaledWidth, unscaledHeight);
		
		var ld:DataGridListData = listData as DataGridListData;
		var dg:ColoredDataGrid  = ld.owner as ColoredDataGrid;
		
		trace(ld.rowIndex);
		trace(this.text);
		trace("");
		
		/*if(ld.rowIndex > 0 && dg.colors != null && dg.colors[ld.columnIndex] != null)
		{
			graphics.beginFill(dg.colors[ld.columnIndex]);
			graphics.drawRect(0, 0, unscaledWidth, unscaledHeight);
			graphics.endFill();
		}*/	
	}
}
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^


Последний раз редактировалось Nirth; 01.02.2007 в 22:36.