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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.12.2022, 10:07   #1  
DaniilT is offline
DaniilT
Участник
 
68 / 12 (1) ++
Регистрация: 28.04.2020
Как на классе добавить кнопку, которая откроет справочную систему.
Добрый день.
Нужно на классе добавить в методе dialog кнопку которая вызывала бы справку.
Кто-то сталкивался с таким?
Старый 26.12.2022, 10:24   #2  
axm2017 is offline
axm2017
Участник
 
1,747 / 292 (13) ++++++
Регистрация: 15.05.2017
В какой системе и какого вида справка?
Старый 26.12.2022, 10:28   #3  
DaniilT is offline
DaniilT
Участник
 
68 / 12 (1) ++
Регистрация: 28.04.2020
ax 2012. Нужно вызвать контекстную справку по кнопке из диалога. Знаю, что можно нажать F1 и справка откроется, но нужно сделать через кнопку.
На форме такая кнопка есть. А для класса в методе dialog не знаю как сделать.

Последний раз редактировалось DaniilT; 26.12.2022 в 10:31.
Старый 26.12.2022, 10:47   #4  
Pandasama is offline
Pandasama
Участник
 
448 / 133 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Цитата:
На форме такая кнопка есть.
А на форме она как реализована? через cmdButton?

Dialog - это, в принципе, обычная форма.
Поэтому вы можете добавить в runtime туда такую же кнопку, как на обычной форме, указав нужные свойства, переопределив, при необходимости, метод нажатия на кнопку и т.д.
Старый 26.12.2022, 10:50   #5  
DaniilT is offline
DaniilT
Участник
 
68 / 12 (1) ++
Регистрация: 28.04.2020
на форме ее нету. Я сделал аналогичную кнопку через CommandButton на форме. Но не знаю как добавить в dialog CommandButton. Не знаете как можно это сделать ? Мне нужно переопределить стандартную справку axapta
Старый 26.12.2022, 10:52   #6  
DaniilT is offline
DaniilT
Участник
 
68 / 12 (1) ++
Регистрация: 28.04.2020
Может кто знает как через код вызвать справку ?
Старый 26.12.2022, 11:24   #7  
axm2017 is offline
axm2017
Участник
 
1,747 / 292 (13) ++++++
Регистрация: 15.05.2017
taskF1 в макросе Task
и соответственно можно вызвать task(#taskF1) на форме к примеру.
Попробовать сейчас нет возможности но путь видится таким
Старый 26.12.2022, 12:00   #8  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,689 / 405 (17) +++++++
Регистрация: 23.03.2006
Можно пойти другим путем. Диалог заменить на обычную форму, пример class Tutorial_RunbaseForm
За это сообщение автора поблагодарили: Pandasama (2).
Старый 26.12.2022, 15:44   #9  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Я не совсем по теме. Некоторые наблюдения из практики

1. Пользователи информационные сообщения не читают. Никакие. Даже info.
2. На синхронизацию текста справки и изменение функционала никто не смотрит. Даже сам автор справки и/или модификации

Это означает, что все то, что ты напишешь - это для консультантов и разработчиков. Пользователи это использовать не будут. К сожалению

Очень быстро текст справки "разойдется" с реальным функционалом. Тут дело даже не в "других разработчиках". Ты сам не вспомнишь, что надо еще справку поправить при внесении изменений в код.

Другими словами, написание контекстной справки занятие почти бесполезное. Если это делается по требованию руководства, то я бы просто сделал табличку с memo-полем и дополнительный объект на форме для отображения его содержимого. Делать реальную справку особого смысла нет. Ну, разве что, для самообразования. Но занятие это почти бесполезное

PS: Стандартная форма диалога - это \Forms\Dialog. Никто не мешает прямо в нее добавить кнопку для контекстной справки. Сделать по умолчанию невидимой и написать "обвязку" для отображения и привязки к контексту
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: Pandasama (2), LETTO (1).
Старый 27.12.2022, 10:28   #10  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
265 / 808 (27) +++++++
Регистрация: 23.10.2012
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Я не совсем по теме. Некоторые наблюдения из практики

1. Пользователи информационные сообщения не читают. Никакие. Даже info.
2. На синхронизацию текста справки и изменение функционала никто не смотрит. Даже сам автор справки и/или модификации

Это означает, что все то, что ты напишешь - это для консультантов и разработчиков. Пользователи это использовать не будут. К сожалению
Вы возводите в абсолют, да описанное выше - практика большинства проектов, но знаю проекты, где практика работы со справкой прижилась. Ключевой вопрос является ли, на данном этапе, это стандартной практикой в компании.
Понятное дело, справкой в единственном экземпляре на какой-то специфической форме никто пользоваться не будет, но никто не запрещает "культивировать" данный подход (тернистый путь) - систематически добавлять и актуализировать (самое главное) данную опцию с развитием системы. Необходимо учитывать как существующую культуру в компании, так и грамотность среднестатистического пользователя. Безболезненным переход вряд ли будет.

Последний раз редактировалось Товарищ ♂uatr; 27.12.2022 в 10:31.
За это сообщение автора поблагодарили: Владимир Максимов (1).
Старый 28.12.2022, 09:40   #11  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от DaniilT Посмотреть сообщение
Добрый день.
Нужно на классе добавить в методе dialog кнопку которая вызывала бы справку.
X++:
public Object dialog()
{
    ;
    dialog = super();

    dialog.addMenuItemButton(MenuItemType::Action, menuitemactionstr(MyMenuItem));

    return dialog;
}
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 28.12.2022, 15:14   #12  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Ну, напрямую FormControlType, который CommandButton в диалог наследника RunBase не добавить.

Если хочется попрограммировать, то в теме есть две наводки:
Pustik написал как добавить MenuFunctionButton.
axm2017 указал, что CommandButton всего лишь вызов определенного события.

То есть:
  • Добавляем при помощи addMenuItemButton какой-нибудь пункт.
  • В dialogRunPost вызываем для неё registerOverrideMethod.
  • В этом зарегистрированном методе получаем FormRun и вызываем formRun.task(Нужный код события).

Если хочется еще попрограммировать, то вообще можно создать специальный menu item для использования для вызова справки, который вызывает класс, состоящий только из метода main, в котором получаем formRun и на нем вызываем task. В этом случае не нужно ничего перехватывать.

Если хочется много попрограммировать, то можно уже в своем наследнике RunBase на этапе перед отображением формы создать уже именно CommandButton по аналогии с безумным подходом в методе run класса InventJournalPrintForm_RU
За это сообщение автора поблагодарили: Pandasama (2).
Старый 28.12.2022, 15:35   #13  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Ах. Не получится перехватить clicked.
В отличии от addField метод addMenuItemButton ничего не возвращает, поэтому просто так registerOverrideMethod не вызовешь, придется сначала искать нужный контрол.
Старый 28.12.2022, 15:42   #14  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Поэтому классик из одного метода main:
X++:
public static void main(Args _args)
{
    Object      caller;
    Integer		commandId;
    ;

    if (_args &&
        _args.caller() &&
        _args.parm() != '' &&
        str2IntOk(_args.parm()))
    {
        caller  = _args.caller();
        if (SysDictClass::isEqualOrSuperclass(classIdGet(caller), classNum(FormRun)))
        {
            try
            {
                commandId   = str2int(_args.parm());
				caller.task(commandId);
            }
            catch
            {
                exceptionTextFallThrough();
            }
        }
    }
}
Menu item создаем с вызовом этого класса, в свойстве paremeters задаем волшебное число для события.

Естественно, в реальности нужно покрасивее делать, это только как идея.
Старый 29.12.2022, 13:35   #15  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,200 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Это означает, что все то, что ты напишешь - это для консультантов и разработчиков. Пользователи это использовать не будут. К сожалению
У меня недавно было требование по D365 - написать адекватное расширенное описание (но не контекстную справку) ко всем полям на одной из форм. А их там было штук 20.
Впервые такое в моей практике.
Старый 29.12.2022, 13:47   #16  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Zabr Посмотреть сообщение
У меня недавно было требование по D365 - написать адекватное расширенное описание (но не контекстную справку) ко всем полям на одной из форм. А их там было штук 20.
Впервые такое в моей практике.
А в трешке даже в контекстном меню пункт был, чтобы расширенную справку по полю открывать.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как добавить AND фильтр в запрос kitty DAX: Программирование 8 21.01.2016 16:42
Можно ли добавить кнопку на панель инструментов AX AXcons DAX: Программирование 6 11.11.2015 12:42
Есть ли разница: присоединить DS в init или добавить в дизайн формы? kitty DAX: Программирование 4 05.08.2014 09:38
добавить кнопку на панель инструментов в DAX 2009? propeller DAX: Программирование 3 11.02.2011 15:18
Добавить в Dialog кнопку!!! Tonaa DAX: Программирование 3 28.03.2004 20:22
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:41.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.