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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.12.2012, 13:37   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Выбор родительских веток в Tree в лукап-форме
Подскажите, пожалуйста, как сделать выбор родительских веток дерева, но при этом оставляя возможность раскрывать узлы мышкой. А то получается, что мышкой тыкаешь на крестик и, вместо того, чтобы раскрыться, лукап закрывается и выбирается этот узел...
Старый 06.12.2012, 14:21   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Как вариант, в ClassDeclaration формы добавляется какой-либо флаг, например, переменная isSelected
В методе mouseDblClick (или прочих) дерева анализируем, выбрана ли конечная запись или родительская. Если выбрана конечная, то isSelected устанавливаем в true и closeSelect
А в closeSelect вызываем супер только если isSelected установлена в true. Кроме того, в canClose так же анализируем эту переменную.
В качестве примера:
Это в дереве:
X++:
public int mouseDblClick(int _x, int _y, int _button, boolean _Ctrl, boolean _Shift)
{
    int ret;

    ret = super(_x, _y, _button, _Ctrl, _Shift);

    element.selectItem();

    return ret;
}
Все остальное в element
X++:
void selectItem()
{
    str ret;
    ;

    ret = this.selectedItem();

    if (isSelected)
    {
        this.closeSelect(ret);
    }

}
X++:
str selectedItem()
{
    FormTreeItem        item;
    TMTable_OVK         locTMTable;
    AssLevelType_OVK    levelType;
    str                 result = '';
    ;

    if (tree.visible())
    {
        item            = tree.getItem(tree.getSelection());
        locTMTable      = TMTable_OVK::find(item.data());
    }
    else
    {
        locTMTable.data(TMTable);
    }

    levelType           = locTMTable.TMLevelType;

    if (levelType == AssLevelType_OVK::Children || (levelType == AssLevelType_OVK::ParentGroup && allowSelectGroup))
    {
        isSelected  = true;
        result      = locTMTable.TMId;
    }

    return result;

}
X++:
public void closeSelect(str _selectString)
{
    ;

    if (isSelected)
    {
        super(_selectString);
    }
}
X++:
public boolean canClose()
{
    boolean ret;
    ;

    ret = super();

    return ret && isSelected;
}
X++:
public int task(int _taskId)
{
    #TASK
    int ret;

    ret = super(_taskId);

    if (_taskId == #TASKENTER)
    {
        this.selectItem();
    }

    return ret;
}
Код не очень причесанный, но работает.
Старый 06.12.2012, 14:44   #3  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Это позволяет выбирать родительские ветки? То есть кликаем на родительскую ветку и лукап закрывается, возвращая данные этой ветки
Старый 06.12.2012, 15:28   #4  
ice321i is offline
ice321i
Участник
 
63 / 54 (2) ++++
Регистрация: 22.10.2007
Посмотрите как сделана форма smmSalesUnitLookup
Старый 06.12.2012, 15:29   #5  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Не, это как раз запрещает выбор родительских веток
Но, в принципе, подход будет таким-же: выбор переводим на ручное управление по определенному признаку, без этого признака не обрабатываем выбор и не закрываем форму.
Например, только по двойному щелчку или нажатии Enter.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Malaysia: Using a tree control Blog bot DAX Blogs 0 08.11.2012 11:11
Фича с findRecord() в лукап-форме ContactPersonLookup vallys DAX: Программирование 0 07.04.2011 11:00
Передать параметр лукап форме? zemius DAX: Программирование 9 21.08.2009 12:28
Как убрать фильтр в лукап форме. jonny DAX: Программирование 4 20.08.2009 17:06
Как сделать хитрый лукап miklenew DAX: Программирование 11 08.10.2007 17:28

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

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

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