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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.09.2002, 11:20   #1  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
? Модальные формы
Каким образом в Аксапте можно реализовать модальное окно?
В принципе достаточно псевдомодальности - например при редактировании кода - окно поиск. Оно остаётся над родительской формой при активации формы родителя.
Вот только к сожалению не посмотришь на код вызова формы поиска .
__________________
С уважением, Игорь Ласийчук.
Старый 18.09.2002, 11:42   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Уточнение - дополнение
В принципе, все формы открываемые из редактора кода псевдомодальны, в том числе и вызванные из класса EditorScript.
Но это ничего не дает
Наиболее близкое решение сделать вызванное окно AlwaysOnTop, но тогда в нем лучше не делать llokup-ов
Старый 18.09.2002, 18:41   #3  
xroad is offline
xroad
Участник
 
10 / 16 (1) ++
Регистрация: 03.01.2002
Адрес: Москва
Не знаю, как насчёт модальной, а псевдомодальную (т.е. форму, при открытии
которой остальные окна становятся недоступными) можно попробывать сделать.
Ниже приведён код ф-ии, которая делает окно с заданным дискриптором
псевдомодальным (или нет). Пример использования: в методе run нужной нам
формы пишем
PHP код:
public void run()
{
     ...
     
setFormModal(this.hWnd(), true);
},

а в методе Close соответственно   setFormModal(this.hWnd(), false). 

static 
void setFormModal(int _thisHWNDboolean _bModal)
{
    
DLL             _winApiDLL;
    
DLLFunction     _EnabledWindow;
    
DLLFunction     _getTop;
    
DLLFunction     _getNext;
    
DLLFunction     _getParent;

    
void local_enableWHND(int _lHWND)
    {
        
int lnextWnd;

        
lnextWnd _getTop.call(_getParent.call(_lHWND));

        while (
lnextWnd)
        {
           if (
lnextWnd != _lHWND)
                
_enabledWindow.call(lnextWnd, (!_bModal));

            
lnextWnd =  _getNext.call(lnextWnd2);
        }
    }
    ;
    
_winApiDLL              = new DLL('user32');
    
_getNext                = new DLLFunction(_winApiDLL"GetWindow");
    
_EnabledWindow          = new DLLFunction(_winApiDLL"EnableWindow");
    
_getTop                 = new DLLFunction(_winApiDLL"GetTopWindow");
    
_getParent              = new DLLFunction(_winApiDLL"GetParent");

    
_getParent.returns(ExtTypes::DWORD);
    
_getParent.arg(ExtTypes::DWORD);

    
_EnabledWindow.returns(ExtTypes::DWORD);
    
_EnabledWindow.arg(ExtTypes::DWORDExtTypes::DWORD);

    
_getTop.returns(ExtTypes::DWORD);
    
_getTop.arg(ExtTypes::DWORD);

    
_getNext.returns(ExtTypes::DWORD);
    
_getNext.arg(ExtTypes::DWORDExtTypes::DWORD);

    
local_enableWHND(_thisHWND);
    
    
// если надо заблокировать панель инструментов, то раскоментировать
    //local_enableWHND(_getParent.call(_thisHWND));

За это сообщение автора поблагодарили: oip (5), moid (1).
Старый 18.09.2002, 18:50   #4  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Спасибо.

Я решил проблему так:
PHP код:
    form = new Form();
    
form.addDesign('Design');

    
form.design().WindowType(FormWindowType::PopUp);
// Становится псевдомодальным

    
args = new Args();
    
args.object(form);
    
formRun classFactory.formRunClass(args);
    
formRun.init();

    
formRun.design() .......
    
formRun.run();
    
formRun.wait(); 
P.S. Если делать formRun.design().WindowType(FormWindowType::PopUp) , то это не приведёт ни к какому результату
__________________
С уважением, Игорь Ласийчук.
Старый 19.09.2002, 10:55   #5  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
to Garic
Что-то я не понял твою идею... окошко создалось, но спокойно можно перейти в другое..
Старый 19.09.2002, 11:05   #6  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Мне нужно было сделать динамически окошко такое же как "Поиск" в Аксапте.
Т.е. чтобы можно было продолжать работать с родительской формой, но окошко "Поиск" оставалось над формой.
__________________
С уважением, Игорь Ласийчук.
Старый 04.06.2003, 16:58   #7  
Pavlo AKA Panok is offline
Pavlo AKA Panok
Участник
 
64 / 10 (1) +
Регистрация: 01.05.2002
Адрес: Москва
К вопросу о модальном окне через WinAPI
Не подскажете как заблокировать и меню? Или в лучшем случае заблокировать определенные пункты меню (хочу оставить пункт 'Правка'....

А то открываем через меню Главное Меню, там открываем любую форму и всю модальность как рукой...
Старый 11.04.2007, 16:16   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Кстати. Только что прочитал на Microsoft Community:

В DAX 4.0 для того, чтобы сделать вызываемую форму модальной, достаточно указания параметра true при вызове метода
X++:
formRun.wait(true);
Так что в правильном направлении все-таки движутся, ИМХО
За это сообщение автора поблагодарили: belugin (3), Player1 (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Вызов формы, не модифицируя ее заголовка AndrewP DAX: Программирование 1 04.07.2003 14:20
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Модальные формы Surok DAX: Программирование 1 18.10.2002 17:35
Динамические Lookup формы. Андрей Василюк DAX: База знаний и проекты 0 07.12.2001 07:07

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

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

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