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

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

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

Регистрация: Dec 2005
Сообщений: 23
По умолчанию DataGrid, custom item renderer & text roll over color

Всем доброго дня.

Есть такая проблема во флексе: если я укажу в контроле DataGrid textRollOverColor и при этом буду использовать custom itemRenderer, то этот стиль будет игнорироваться.
Решается она примерно следующим образом:

Код AS3:
<mx:itemRenderer>
   	   <mx:Component>
   	       <mx:HBox width="100%"
   	       	   paddingLeft="20"
   	       	   horizontalScrollPolicy="off">
   	       	   <mx:Script>
                <![CDATA[
                    import mx.controls.listClasses.ListBase;
                    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
                    {
                        super.updateDisplayList(unscaledWidth, unscaledHeight);
                        if (owner is ListBase)
                            outerDocument._updateColor(ListBase(owner), data, reportName); 
                    }
                ]]>
               </mx:Script>
       	       	<controls1:CustomLinkButton
       	       		id="reportName"
                   text="{data.reportName}"
                   clickable="true"
                   width="100%"
                   color="#000000"
                   truncateToFit="true"
                   click="outerDocument.reportClick(data)"/>
   	       </mx:HBox>
   	   </mx:Component>
   </mx:itemRenderer>
Код AS3:
public function _updateColor(owner:ListBase, data:Object, element:UIComponent):void
            {
                if (owner.isItemSelected(data))
                {
                    element.setStyle("color", owner.getStyle("textSelectedColor"));
                }
                else if (owner.isItemHighlighted(data))
                {
                    element.setStyle("color", owner.getStyle("textRollOverColor"));
                }
                else
                {
                    element.setStyle('color', owner.getStyle("color"));
                }
            }
все хорошо, но хотелось бы как-то вынести этот код в отдельный класс. Создать единственный ItemRenderer для всей таблицы я не могу, потому что в ней у каждой ячейки свой уникальный inline itemRenderer. Просто сделать компонент, тоже не получается, я не получаю доступ к переменным data и reportName.
Может у кого найдутся какие-нибудь идеи, как можно в данном случае все облагородить?

Спасибо

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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