AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.08.2020, 09:35   #1  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
newFormnameRunbase и исчезающий Caption формы диалога
Добрый день, столкнулся с пустяковой вроде бы проблемой, которая сломала мне мозг. Есть класс, наследник RunBase, в котором диалог реализован формой (точнее, два класса: родитель - наследник от RunBase и его наследник). У формы-диалога в Design указан Caption.

Дальше происходит странное: запускаю класс, получаю пустой caption формы. Если ту же форму вызвать через tutorial_RunbaseForm - caption на месте.

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

Вызов диалога:

X++:
public Object dialog()
{
    DialogRunbase   dialog = Dialog::newFormnameRunbase(formstr(MyAwesomeForm),this);
;
    dialog = this.dialogInternal(dialog);
    dialog.alwaysOnTop(true);

    return dialog;
}
Dynamics Ax 2012 R3
Старый 28.08.2020, 15:09   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Как вариант, Ваш класс имеет свойство RunOn равное Server (или менюитем, его вызывающий имеет такое значение для этого свойства).
В результате диалог начинает бегать между клиентом и сервером, а свойство заголовка не установлено, в результате перезаписывается в дизайне пустым значением.
Если нет клиент-серверного взаимодействия при создании диалога, то в дизайне свойство заголовка не перезаписывается, так как нет распаковки (а это выполняется в ней).
Старый 28.08.2020, 16:38   #3  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
статический description() на вашем классе есть ?
Старый 28.08.2020, 16:43   #4  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Цитата:
Сообщение от db Посмотреть сообщение
статический description() на вашем классе есть ?
Да, есть. И в родителе, и в потомке.
Старый 28.08.2020, 17:34   #5  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Как вариант, Ваш класс имеет свойство RunOn равное Server (или менюитем, его вызывающий имеет такое значение для этого свойства).
В результате диалог начинает бегать между клиентом и сервером, а свойство заголовка не установлено, в результате перезаписывается в дизайне пустым значением.
Если нет клиент-серверного взаимодействия при создании диалога, то в дизайне свойство заголовка не перезаписывается, так как нет распаковки (а это выполняется в ней).
Так и есть, класс выполняется на сервере. Как правильно будет указать в данном случае caption формы?
Старый 28.08.2020, 18:01   #6  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Если уж совсем "в лоб", то в методе dialog после вызова newFormnameRunbase указать dialog.caption("Нечто"). Еще вариант, в самой форме в методе init после super написать что-то вроде element.design().caption(myRunBase.caption());
Только, на мой взгляд, лучше использовать паттерн, который рекомендуют для RunBase:
  • В свойствах класса и в менюитеме установить RunOn в "Called from".
  • А вот для работы на сервере методу construct задать модификатор server.
  • Естественно, обеспечить корректный pack/unpack.
В результате, при вызове диалога между клиентом и сервером будут передаваться только данные, а не свойства диалога, а конечное выполнение будет именно на сервере. То есть, диалог будет создаваться сразу на клиенте, где ему и положено быть. Для серверного же класса все сложнее - диалог конструируется на сервере, запоминая свойства, для отображения именно диалог передается на клиента и там восстанавливается из свойств.
В общем, свойство RunOn для наследников RunBase явно лишнее и путь остается в значении по умолчанию.

Последний раз редактировалось Raven Melancholic; 28.08.2020 в 18:05.
За это сообщение автора поблагодарили: mikki_messer (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Убрать значение Range по полю Enum из caption формы mikki_messer DAX: Программирование 2 20.02.2019 17:35
Использование формы в качестве диалога vs создание диалога программно Lucky13 DAX: Программирование 3 30.05.2008 13:09
Программно сформировать caption формы matew DAX: Программирование 2 13.01.2007 18:32
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Как в Аксапте программно обратится к свойству формы Caption? Yuri Safronov DAX: Программирование 1 02.09.2002 14:01
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:26.