Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.04.2008, 14:52
max_oil вне форума Посмотреть профиль Отправить личное сообщение для max_oil Найти все сообщения от max_oil
  № 1  
Ответить с цитированием
max_oil

Регистрация: Mar 2008
Сообщений: 57
По умолчанию DataGrid, цвет ячейки на основании значения из другой ячейки

На форуме нашел способ закрашивания ячейки путем переопределения класса Label, и проверки текущего значения
Код:
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
		super.updateDisplayList(unscaledWidth, unscaledHeight);
		var g:Graphics = graphics;
		g.clear();
		var grid1:DataGrid = DataGrid(DataGridListData(listData).owner);
		if (grid1.isItemSelected(data) || grid1.isItemHighlighted(data)) {
			return;
		}
		if (data[DataGridListData(listData).dataField] > 100) {
			g.beginFill(0xFF0033);
			g.drawRect(0, 0, unscaledWidth, unscaledHeight); g.endFill();
		}
	}
А как сделать проверку значения соседней (предыдущей) ячейки?
Например если значение в текущей ячейки меньше чем в предыдущей, то текущую закрасить в красный цвет?

Старый 16.04.2008, 01:23
baron27 вне форума Посмотреть профиль Отправить личное сообщение для baron27 Посетить домашнюю страницу baron27 Найти все сообщения от baron27
  № 2  
Ответить с цитированием
baron27
Контрибьютор базы знаний по Флекс
 
Аватар для baron27

Регистрация: Aug 2005
Сообщений: 690
Делай itemRenderer для ячейки, например, в виде VBox, которому можно задать фон в зависимости от тех свойств, которые тебе нужны, так как любой itemRenderer имеет доступ к свойству строки data c нужными тебе данными.
__________________
Flex 2 и Co

Старый 27.10.2008, 13:44
p.Omelchenko вне форума Посмотреть профиль Отправить личное сообщение для p.Omelchenko Найти все сообщения от p.Omelchenko
  № 3  
Ответить с цитированием
p.Omelchenko

Регистрация: Oct 2008
Сообщений: 9
Не стал создавать такую же тему. Так что пишу тут.
Вопрос тот же но условие другое.
есть XML в которой есть некие данные
Код:
<?xml version="1.0" encoding="utf-8"?>
<colors>
	<color> 
		<rect>█ █ █</rect>
		<hex_color>#F80000</hex_color>		
	</color>
	<color> 
		<rects>
			<rect>█ █ █</rect>
			<col>#F86800</col>
		</rects>
		<hex_color>F86800</hex_color>
	</color>
</colors>
и есть датагрид которые все это должен переварить (я покажу только сами ячейки, потому как все остальное работает. или делает вид что работает)
Код:
<mx:DataGridColumn headerText="Цвет" width="75">
	<mx:itemRenderer>
		<mx:Component>
			<mx:VBox horizontalAlign="center" verticalAlign="middle">
				<mx:Label text="{data.rects.rect}" color="{data.rects.col}"/>
			</mx:VBox>
		</mx:Component>
	</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="HEX" width="75">
	<mx:itemRenderer>
		<mx:Component>
			<mx:VBox horizontalAlign="center" verticalAlign="middle">
				<mx:Label text="#{data.hex_color}"/>
			</mx:VBox>
		</mx:Component>
	</mx:itemRenderer>
</mx:DataGridColumn>
Этот вариант работает как часы. но он работает не так как по сабжу.

При попытке сделать как по сабжу. получается не совсем то что я ожидаю.
Код:
<mx:DataGridColumn headerText="Цвет" width="75">
	<mx:itemRenderer>
		<mx:Component>
			<mx:VBox horizontalAlign="center" verticalAlign="middle">
				<mx:Label text="{data.rect}" color="{data.hex_color}"/>
			</mx:VBox>
		</mx:Component>
	</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="HEX" width="75">
	<mx:itemRenderer>
		<mx:Component>
			<mx:VBox horizontalAlign="center" verticalAlign="middle">
				<mx:Label text="{data.hex_color}"/>
			</mx:VBox>
		</mx:Component>
	</mx:itemRenderer>
</mx:DataGridColumn>
"█ █ █" становятся нужного цвета. А вот с выводом кода цвета проблема (вместо "#F80000" получаю "16252928")

Код:
<mx:DataGridColumn headerText="" dataField="hex_color"/>
выдает тоже самое. Как я понял это из-за # в xml.

Как мне вывести в нормальном (для меня) виде hex код цвета во втором варианте?

Надеюсь я изъяснил суть своей проблемы доступно (а то у меня бывает что потом сам не понимаю)
Прошу помощи у знающих. Потому как городит одну и туже инфу в разных вариациях это не рационально.

Старый 27.10.2008, 14:56
darksranger вне форума Посмотреть профиль Отправить личное сообщение для darksranger Посетить домашнюю страницу darksranger Найти все сообщения от darksranger
  № 4  
Ответить с цитированием
darksranger
 
Аватар для darksranger

блогер
Регистрация: Jun 2007
Адрес: in sankt - peterburg
Сообщений: 787
Записей в блоге: 2
Отправить сообщение для darksranger с помощью ICQ
перевдите из 10чного числа "16252928", в #F80000 шеснатеричный, тут где то был пример
__________________
на каком языке вы пишите?
а на каком нужно?

Старый 28.10.2008, 12:28
p.Omelchenko вне форума Посмотреть профиль Отправить личное сообщение для p.Omelchenko Найти все сообщения от p.Omelchenko
  № 5  
Ответить с цитированием
p.Omelchenko

Регистрация: Oct 2008
Сообщений: 9
Ммм спасибо! нашёл помогло.

что бы другие не искали

upd:

=( помогло, но как то не так.

теперь при попытке вывести таких значений как
"#000000" (чёрный цвет) получаю "0"
"#0000F8" (синий) получаю "f8"

как мне не только перевести числа в hex вид, но и сохранить (забыл слово) исходный вид цветового кода?!

все превращения происходили таким путём:
Код:
<mx:DataGridColumn headerText="HEX" width="75">
	<mx:itemRenderer>
		<mx:Component>
			<mx:VBox horizontalAlign="center" verticalAlign="middle">
				<mx:Label text="#{data.hex_color.toString(16)}"/>
			</mx:VBox>
		</mx:Component>
	</mx:itemRenderer>
</mx:DataGridColumn>


Последний раз редактировалось p.Omelchenko; 28.10.2008 в 15:50.
Создать новую тему Ответ Часовой пояс GMT +4, время: 19:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:35.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.