![]() |
#1 |
Участник
|
Как на классе добавить кнопку, которая откроет справочную систему.
Добрый день.
Нужно на классе добавить в методе dialog кнопку которая вызывала бы справку. Кто-то сталкивался с таким? |
|
![]() |
#2 |
Участник
|
В какой системе и какого вида справка?
|
|
![]() |
#3 |
Участник
|
ax 2012. Нужно вызвать контекстную справку по кнопке из диалога. Знаю, что можно нажать F1 и справка откроется, но нужно сделать через кнопку.
На форме такая кнопка есть. А для класса в методе dialog не знаю как сделать. Последний раз редактировалось DaniilT; 26.12.2022 в 10:31. |
|
![]() |
#4 |
Участник
|
Цитата:
На форме такая кнопка есть.
Dialog - это, в принципе, обычная форма. Поэтому вы можете добавить в runtime туда такую же кнопку, как на обычной форме, указав нужные свойства, переопределив, при необходимости, метод нажатия на кнопку и т.д. |
|
![]() |
#5 |
Участник
|
на форме ее нету. Я сделал аналогичную кнопку через CommandButton на форме. Но не знаю как добавить в dialog CommandButton. Не знаете как можно это сделать ? Мне нужно переопределить стандартную справку axapta
|
|
![]() |
#6 |
Участник
|
Может кто знает как через код вызвать справку ?
|
|
![]() |
#7 |
Участник
|
taskF1 в макросе Task
и соответственно можно вызвать task(#taskF1) на форме к примеру. Попробовать сейчас нет возможности но путь видится таким |
|
![]() |
#8 |
Участник
|
Можно пойти другим путем. Диалог заменить на обычную форму, пример class Tutorial_RunbaseForm
|
|
|
За это сообщение автора поблагодарили: Pandasama (2). |
![]() |
#9 |
Участник
|
Я не совсем по теме. Некоторые наблюдения из практики
1. Пользователи информационные сообщения не читают. Никакие. Даже info. 2. На синхронизацию текста справки и изменение функционала никто не смотрит. Даже сам автор справки и/или модификации Это означает, что все то, что ты напишешь - это для консультантов и разработчиков. Пользователи это использовать не будут. К сожалению ![]() Очень быстро текст справки "разойдется" с реальным функционалом. Тут дело даже не в "других разработчиках". Ты сам не вспомнишь, что надо еще справку поправить при внесении изменений в код. Другими словами, написание контекстной справки занятие почти бесполезное. Если это делается по требованию руководства, то я бы просто сделал табличку с memo-полем и дополнительный объект на форме для отображения его содержимого. Делать реальную справку особого смысла нет. Ну, разве что, для самообразования. Но занятие это почти бесполезное ![]() PS: Стандартная форма диалога - это \Forms\Dialog. Никто не мешает прямо в нее добавить кнопку для контекстной справки. Сделать по умолчанию невидимой и написать "обвязку" для отображения и привязки к контексту
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: Pandasama (2), LETTO (1). |
![]() |
#10 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
![]() Я не совсем по теме. Некоторые наблюдения из практики
1. Пользователи информационные сообщения не читают. Никакие. Даже info. 2. На синхронизацию текста справки и изменение функционала никто не смотрит. Даже сам автор справки и/или модификации Это означает, что все то, что ты напишешь - это для консультантов и разработчиков. Пользователи это использовать не будут. К сожалению ![]() Понятное дело, справкой в единственном экземпляре на какой-то специфической форме никто пользоваться не будет, но никто не запрещает "культивировать" данный подход (тернистый путь) - систематически добавлять и актуализировать (самое главное) данную опцию с развитием системы. Необходимо учитывать как существующую культуру в компании, так и грамотность среднестатистического пользователя. Безболезненным переход вряд ли будет. Последний раз редактировалось Товарищ ♂uatr; 27.12.2022 в 10:31. |
|
|
За это сообщение автора поблагодарили: Владимир Максимов (1). |
![]() |
#11 |
Участник
|
Цитата:
X++: public Object dialog() { ; dialog = super(); dialog.addMenuItemButton(MenuItemType::Action, menuitemactionstr(MyMenuItem)); return dialog; }
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
![]() |
#12 |
Участник
|
Ну, напрямую FormControlType, который CommandButton в диалог наследника RunBase не добавить.
Если хочется попрограммировать, то в теме есть две наводки: Pustik написал как добавить MenuFunctionButton. axm2017 указал, что CommandButton всего лишь вызов определенного события. То есть:
Если хочется еще попрограммировать, то вообще можно создать специальный menu item для использования для вызова справки, который вызывает класс, состоящий только из метода main, в котором получаем formRun и на нем вызываем task. В этом случае не нужно ничего перехватывать. Если хочется много попрограммировать, то можно уже в своем наследнике RunBase на этапе перед отображением формы создать уже именно CommandButton по аналогии с безумным подходом в методе run класса InventJournalPrintForm_RU |
|
|
За это сообщение автора поблагодарили: Pandasama (2). |
![]() |
#13 |
Участник
|
Ах. Не получится перехватить clicked.
В отличии от addField метод addMenuItemButton ничего не возвращает, поэтому просто так registerOverrideMethod не вызовешь, придется сначала искать нужный контрол. |
|
![]() |
#14 |
Участник
|
Поэтому классик из одного метода 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(); } } } } Естественно, в реальности нужно покрасивее делать, это только как идея. |
|
![]() |
#15 |
Участник
|
Цитата:
Впервые такое в моей практике. |
|
![]() |
#16 |
Участник
|
А в трешке даже в контекстном меню пункт был, чтобы расширенную справку по полю открывать.
|
|