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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.03.2007, 13:26   #1  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
DictMethod.propertyHelp()
Добрый день.

Есть такой метод на системном классе - DictMethod.propertyHelp(). Возвращает строку. У меня - всегда пустую.
Есть идеи как заставить этот метод возвращать что-то осмысленное?

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

Пока вижу 2 варианта:
  • Первая строка каждого метода - комментарий, говорящий о том, что делает данный метод. Система перебирает методы, получает их код, берет из кода первую строку и собирает документацию.
  • Разобраться с propertyHelp()

Кстати, если кто-то подскажет как получить код метода класса буду тоже благодарен
Старый 14.03.2007, 13:29   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
XppDoc?
Старый 14.03.2007, 13:39   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Андре Посмотреть сообщение
Кстати, если кто-то подскажет как получить код метода класса буду тоже благодарен
X++:
    TreeNode    tr;
    ;
    tr = TreeNode::findNode('\\Classes\\SalesTableType');
    tr = tr.AOTfindChild('update');
    box::info(tr.AOTgetSource());
Старый 14.03.2007, 13:44   #4  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
XppDoc -- это инструмент, который делает из комментариев к исходникам справку
А в каком виде (формате) он делает справку? Смогу ли я получить эту справку програмным путем из x++.
Старый 14.03.2007, 13:55   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
1. он делает справку ввиде аксаптовского хелпа
2. да - а зачем? цель то конечная какая?
Старый 14.03.2007, 14:48   #6  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
да - а зачем? цель то конечная какая?
Отобразить данную справку на своей форме.
Старый 14.03.2007, 14:55   #7  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Тут два варианта:

1. если надо только одну маленькую строку, проше разобрать исходник самостоятельно (ну или выдрать из XppDoc то что надо)

2. Если хочется всего что может XppDoc то можно скопировать \Forms\SysHelp\Designs\Design\[Group:MainGrp]\[GroupocTab]\ActiveXoc на свою форму

3. Конечно можно выдрать из хелпа строку, но преобразовывать Html в текст рази ондой строчки...
Старый 15.03.2007, 09:39   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
По поводу propertyHelp()

Основное предназначение этого метода - получение подсказки для свойств в AOT.

Поясню на примере.
Если выбрать в AOT любую форму (ей соответствует класс FORM) и вызвать окно свойств, то в нем будут показан список, соответствующий методам класса Form, возвращающим истину при вызове propertyMethod() класса DictMethod, созданного для этого метода. При этом propertyHelp() вернет строку помощи, отображаемую при выделении свойства в статусной строке (или в хинте при наведении мыши на свойство).
Если в форме выделить любой датасоурс (если он есть), то отобразятся свойства, соответствующие классу FormDataSource

Сами значения, возвращаемые методом propertyHelp(), хранятся в ktd-файле (как, впрочем, и отображаемые названия свойств)

Еще propertyHelp() используется при динамическом формировании хелпа для выбранного метода в \System Documentation\Classes, если он (хелп) не был создан

Ну и вот вывод методов, возвращающих значение для propertyHelp()
X++:
static void GetPropertyHelp(Args _args)
{
    TreeNode treeNode = TreeNode::findNode("\\System Documentation\\Classes");
    DictClass   dictClass;
    DictMethod  dictMethod;
    int i;
    ;
    SetPrefix("Список методов с установленной строкой помощи");
    treeNode = treeNode.AOTfirstChild();
    while (treeNode)
    {
        dictClass = new DictClass(className2Id(treeNode.treeNodeName()));
        if (dictClass)
        {
            SetPrefix(dictClass.name());
            for (i=1;i<=dictClass.objectMethodCnt();i++)
            {
                dictMethod = dictClass.objectMethodObject(i);
                if (dictMethod && dictMethod.propertyMethod() && dictMethod.propertyHelp())
                {
                    info(strfmt("%3::%1::%2", dictMethod.propertyMethod()==1, dictMethod.propertyHelp(), dictMethod.name()));
                }
            }
        }
        treeNode = treeNode.AOTnextSibling();
    }
}
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Андре (5).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Структура таблиц axapta velk DAX: База знаний и проекты 46 27.07.2009 07:56

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

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

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