Выдача модулей и панелей - PullRequest
0 голосов
/ 26 октября 2009

У меня следующая проблема.

В моем приложении у меня есть несколько модулей, и у каждого из них есть компоненты CollapsableTitleWindow (расширяет Panel). После открытия окна оно добавляется в контейнер, который находится в основном приложении (CollapsableTitleWindowContainer). В этих окнах вы можете открыть другое окно (и т. Д.).

Теперь в чем проблема. Когда я изменяю (перезагружаю) любой модуль и хочу открыть новое окно (подокно) с уже загруженным окном, я получаю эту ошибку:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
 at mx.containers::Panel/layoutChrome()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\containers\Panel.as:1405]
 at com::CollapsableTitleWindow/layoutChrome()[D:\Flex 3 Workspace\WesobCrm\src\com\CollapsableTitleWindow.as:216]
 at mx.core::Container/updateDisplayList()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\Container.as:2867] (...)

Указывает, что основные приложения имеют объект Panel

Пожалуйста, помогите.

P.S. Я нашел похожую проблему на http://www.nabble.com/Flex-Module-issue-with-Panel-td20168053.html

ДОБАВЛЕНО: Я расширяю класс Panel и делаю что-то подобное:

override protected function layoutChrome(unscaledWidth:Number, unscaledHeight:Number):void
    {
        use namespace mx_internal;
        if(!(mx_internal::titleBarBackground is TitleBackground)) {
            mx_internal::titleBarBackground = new TitleBackground();
        }
        super.layoutChrome(unscaledWidth, unscaledHeight);          
    }

Но теперь у меня было что-то подобное: До alt text
(источник: ak.bx.pl )
После alt text
(источник: ak.bx.pl )

Вы можете видеть, что оно теряет объявление стиля.

1 Ответ

0 голосов
/ 27 октября 2009

Я нашел решение, но это плохая практика:

Я добавляю в основное приложение

public function getProductWindow():ProductWindow {
    return new ProductWindow();
}

И изменить в модуле:

С

var productWindow:ProductWindow = new ProductWindow();

К

var productWindow:ProductWindow = Application.application.getProductWindow();

Если у кого-нибудь есть лучшее решение?

...