Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   DataGrid, custom item renderer & text roll over color (http://www.flasher.ru/forum/showthread.php?t=125049)

Jean 15.05.2009 11:30

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:45.

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