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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.02.2012, 15:56   #1  
kia is offline
kia
Участник
 
96 / 19 (1) ++
Регистрация: 07.10.2008
Адрес: Харьков
Программно показать MenuButton
Если в дизайне закрыть (visible=false) все пункты меню, входящие в MenuButton, то он не выводится на форме, даже если некоторые пункты потом включить программно.

Как заставить MenuButton отобразиться?
Старый 03.02.2012, 16:15   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Попробуйте рецепт из этой темы Grid пропадает
Старый 03.02.2012, 16:18   #3  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от kia Посмотреть сообщение
Если в дизайне закрыть (visible=false) все пункты меню, входящие в MenuButton, то он не выводится на форме, даже если некоторые пункты потом включить программно.

Как заставить MenuButton отобразиться?
А зачем его выводить, если все его пункты будут скрыты? Если нужно отображать только часть пунктов, то сделайте всем Visible = Yes, AutoDeclaration = Yes, а в MenuButton.clicked() управляйте видимостью контролов, как душе угодно до вызова super(). Кстати если таким образом их все скрыть, то MenuButton будет на форме.

Последний раз редактировалось pedrozzz; 03.02.2012 в 16:20.
Старый 03.02.2012, 16:31   #4  
kia is offline
kia
Участник
 
96 / 19 (1) ++
Регистрация: 07.10.2008
Адрес: Харьков
Цитата:
Сообщение от pedrozzz Посмотреть сообщение
А зачем его выводить, если все его пункты будут скрыты? Если нужно отображать только часть пунктов, то сделайте всем Visible = Yes
Можно, но пунктов меню много (отчеты журналов приказов) и я решил, что проще несколько пунктов открыть для конкретного вида приказа, чем почти все закрывать.
Я один пункт всегда оставлял видимым и программно его скрывал. Все работало пока не закрыли доступ к этому пункту.
Старый 03.02.2012, 16:34   #5  
kia is offline
kia
Участник
 
96 / 19 (1) ++
Регистрация: 07.10.2008
Адрес: Харьков
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Попробуйте рецепт из этой темы Grid пропадает
PrintMenuButton.visible(true);
PrintMenuButton.buttonDisplay(true);
PrintMenuButton.displayControl();
не помогает
Старый 03.02.2012, 16:36   #6  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от kia Посмотреть сообщение
Можно, но пунктов меню много (отчеты журналов приказов) и я решил, что проще несколько пунктов открыть для конкретного вида приказа, чем почти все закрывать.
Ну это же "машина" будет делать, а не вручную кто-то пару лишних вагонов разгружать
Один раз запрограммируете, зато просто, эффективно, интуитивно.
__________________
Ivanhoe as is..
Старый 03.02.2012, 16:49   #7  
kia is offline
kia
Участник
 
96 / 19 (1) ++
Регистрация: 07.10.2008
Адрес: Харьков
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Один раз запрограммируете, зато просто, эффективно, интуитивно.
Ну не один раз, а при добавлении нового отчета писать для каких типов его оставлять открытым. Сейчас я вставил отчет в нужную ветку case и все.
В общем дело не в этом.
Тут больше спортивный интерес.
АХ автоматом закрывает кнопку и не хочет ее открывать.
В прочем, как и автоматом убирать, если программно скрыть все пунткы.
Старый 03.02.2012, 17:01   #8  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Может конечно я чего-то не до конца понял, но почему не сделать так, чтобы вообще не нужно было каждый раз программировать. Например, заведите табличку, куда записывайте название отчета и имя его menuitem, потом по этой табличке создаете программно пункты меню в MenuButton. Как создавать пункты меню можно посмотреть на форме документооборота.
Можно вообще без таблицы, но тогда menuitem отчетов придется называть типа MyReport1, MyReport2 ... Потом искать все узлы в АОТ, имя которых начинается на MyReport и создавать по ним пункты меню. Label для пункта меню можно из menuitem достать.
Старый 03.02.2012, 17:19   #9  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,741 / 404 (17) +++++++
Регистрация: 23.03.2006
делается все просто на MenuButton.clicked() до супера:
X++:
boolean printMenuItem1visible;
...
boolean printMenuItemNvisible;

switch (Type)
{
case type1:
 printMenuItem1visible = true;
 break;
case type3:
  printMenuItem1visible = true;
  printMenuItemNvisible = true;
  break;
...
case typeM:
 printMenuItemNvisible = true;
 break;
}

PrintMenuItem1.visible(printMenuItem1visible);
...
PrintMenuItemN.visible(printMenuItem1visible);
Появляется новый отчет, дописываете его видимость
Теги
menubutton

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как программно убрать Range Prophetic DAX: Программирование 23 11.11.2010 16:14
программно сохранить пользовательский запрос Varmen DAX: Программирование 13 28.04.2010 01:03
Как программно изменить к-во в строке заказа в форме SalesTable BorDark DAX: Программирование 2 13.01.2005 17:02
Как программно считать значение ключа доступа? ATimTim DAX: Программирование 3 12.01.2005 19:19
Как в grid подсчитать сумму по полю и показать ее (с учетом фильтра)? edd DAX: Программирование 5 06.02.2003 20:10

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

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

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