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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.03.2003, 16:07   #1  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
? DocuAction.main
Вот такой примерно код в DocuView строит MenuButton
PHP код:
public void init()
{
    
#define.ctrlBuildAdd('ctrlAdd')

    
docuType                            docuType;
    
formBuildMenuButtonControl          menuCtrl;
    
formBuildFunctionButtonControl      itemButtonCtrl;
    ;

    
DocuType::createDefaults();

    
menuCtrl this.form().design().control(#ctrlBuildAdd);

    
while select docuType
        index TypeIdx
    
{
        
itemButtonCtrl menuCtrl.addControl(FormControlType::MENUFUNCTIONBUTTON,docuType.TypeId);
        
itemButtonCtrl.menuItemType(MenuItemType::Action);
        
itemButtonCtrl.menuItemName(menuItemActionStr(DocuActionNew));
        
itemButtonCtrl.text(docuType.TypeId);
    }
    
super();

formBuildFunctionButtonControl-ы вызывают DocuAction, в main которого

PHP код:
static void main(Args args)
{
    
docuAction          action;
    
Common              common;
    
FormDataSource      datasource;

    switch (
args.dataset())
    {
        case 
TableNum(DocuRef):
            if (
args.parm() || args.parmEnum() != DocuCode::Add)
                
action docuAction::newDocuRef(args.record());
            else
                
action docuAction::newArgs(args);
            break;
        case 
TableNum(DocuType):
            
action docuAction::newDocuType(args.record());
            break;
        default:
            throw 
error(strFmt("@SYS25538",classId2Name(classIdGet(action))));
    }

    if (! 
action)
        return;

    
action.unpack();
    
action.run(args);

    if (
args.record())
    {
        
common args.record();
        if (
common.dataSource())
        {
            
datasource common.dataSource();
            
datasource.reread();
        }
    }

Смотрю я на DocuView и не пойму, где же он этот args.dataset() и вообще args инициализирует??
Старый 07.03.2003, 16:37   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Первый кусок кода добавляет в форму MenuItem, также как если бы он был добавлен ручками в редакторе.
Обычно никто специальным образом не инициализирует args для этого MenuItem-а, и в данной форме всё так и сделано.
Если у пункта меню не указать DataSource, то будет использоваться основной DS формы, то есть он передаст args, где record() = текущему курсору в DS, а dataSet() = tableId этого курсора.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Go to the main table option Blog bot DAX Blogs 0 02.07.2008 19:06
axcoder: Sidax 0.4 b 6 will show you what groups can access selected main menu items Blog bot DAX Blogs 2 28.03.2008 11:53
C# and AX Development: Displaying the traditional Main Menu in AX Blog bot DAX Blogs 0 02.03.2008 06:42
axaptapedia: Go To Main Table Blog bot DAX Blogs 0 15.08.2007 19:40
Доступ метод main Swetik DAX: Функционал 6 13.05.2004 20:05

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

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

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