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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.12.2007, 10:44   #1  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
И снова как закрыть форму?
Есть форма Пустая(Одна кнопка Ok). По ней открываю другую (Один статик текст) .
X++:
public void closeOk()
{
    FormRun fr;
    Args parameters = new Args()
;
    super();
    parameters.name(formstr(Form2));
    parameters.caller(this);
    FR = classFactory.formRunClass(parameters);
    FR.Init();
    FR.run();
    FR.wait();
}
Но предыдущая форма не закрывается. Остаётся какая то мнимая связь которая не даёт её закрыть. Можно закрыть finalize(), но тогда выскачет Axapta. Когда будем из второй формы выходить.
Поискал по форумы похожие проблемы были, но они так и остались не разрешёнными. Мож у кого то есть всё таки мысли как можно из формы вызвать другую форму при этом закрыв первую.
Старый 04.12.2007, 10:48   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
почему не открываете через MenuItem?
например:
X++:
    Args            parameters = new Args();
    MenuFunction    addressFormatMenu;
    ;

    addressFormatMenu = new MenuFunction(menuItemDisplayStr(AddressFormat),MenuItemType::Display);
    parameters.caller(this);
    addressFormatMenu.run(parameters);

Последний раз редактировалось ice; 04.12.2007 в 10:51.
За это сообщение автора поблагодарили: miklenew (1).
Старый 04.12.2007, 10:51   #3  
leshy is offline
leshy
Участник
 
118 / 11 (1) +
Регистрация: 23.02.2004
Адрес: Киев
parameters.name(formstr(Form2));
parameters.caller(this);
FR = classFactory.formRunClass(parameters);
FR.Init();
FR.run();
FR.detach();
За это сообщение автора поблагодарили: miklenew (1).
Старый 04.12.2007, 10:52   #4  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от ice Посмотреть сообщение
почему не открываете через MenuItem?
например:
X++:
    Args            parameters = new Args();
    MenuFunction    addressFormatMenu;
    ;
 
    addressFormatMenu = new MenuFunction(menuItemDisplayStr(AddressFormat),MenuItemType::Display);
    parameters.caller(this);
    addressFormatMenu.run(parameters);
Спасибо помогло.
Старый 04.12.2007, 10:56   #5  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от leshy Посмотреть сообщение
parameters.name(formstr(Form2));
parameters.caller(this);
FR = classFactory.formRunClass(parameters);
FR.Init();
FR.run();
FR.detach();
Во, то что доктор прописал спасибо.
Старый 22.10.2014, 05:07   #6  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Блин, впервые столкнулся с проблемой за столько лет.. Оказывается если в аксапте есть две любые формы открытые одновременно, не важно откуда, но через код:
FR.Init();
FR.run();
FR.wait();
То первую открытую фиг закроешь. Закрываются только в обратном открытию порядке.
FR.detach() - помогает закрытию, но в моем случае надо было ждать результата от формы поэтому FR.detach() лишний.
Соглашусь, ситуация специфическая.. но вот же наткнулся все-таки)
Я в DAX4 пробовал.
Старый 22.10.2014, 08:08   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Perc Посмотреть сообщение
FR.detach() - помогает закрытию, но в моем случае надо было ждать результата от формы поэтому FR.detach() лишний.
Как так, и ждать надо и закрывать нужно чтобы было можно?

Делайте detach второй формы не заранее, а после того как уже можно не ждать. Или я неправильно понял ситуацию?
Старый 22.10.2014, 08:57   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от Perc Посмотреть сообщение
Блин, впервые столкнулся с проблемой за столько лет.. Оказывается если в аксапте есть две любые формы открытые одновременно, не важно откуда, но через код:
FR.Init();
FR.run();
FR.wait();
То первую открытую фиг закроешь. Закрываются только в обратном открытию порядке.
FR.detach() - помогает закрытию, но в моем случае надо было ждать результата от формы поэтому FR.detach() лишний.
Соглашусь, ситуация специфическая.. но вот же наткнулся все-таки)
Я в DAX4 пробовал.
Каждый вызов wait() запускает новый цикл обработки сообщений.
Команда на закрытие первой формы просто не доходит до первого цикла и не обрабатывает вторым, поскольку не предназначена контролируемому этим циклом окну.
Есть отрицательный эффект при этом - хоть сообщение о закрытии формы до цикла не доходит и форма не закрывается, но в самом formRun сопутствующие закрытию окна события отрабатываю
__________________
Axapta v.3.0 sp5 kr2
Старый 22.10.2014, 11:15   #9  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Как так, и ждать надо и закрывать нужно чтобы было можно?

Делайте detach второй формы не заранее, а после того как уже можно не ждать. Или я неправильно понял ситуацию?
Я случайно обратил внимание на форме диалога:
Box::yesYesAllNoCancel("Текст", DialogButton::No);
Потом так вышло, что запустил другую операцию, с аналогичным запросом не закрыв первую с запросом. Начал закрывать первую - не закрывается. Начал разбираться - что это подглючивает? Оказалось в моем коде все нормуль. Это wait так работает..
Бороться с ньюансом этим не стал. Да честно говоря и не представляю как это делать малой кровью в общем случае.
Но все таки, как уже сказал АndyD, это баг. Код то на закрытие отрабатывает, а форма висеть остается.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как обновить форму, если добавление через кнопку? Arahnid DAX: Программирование 5 21.05.2007 11:18
Как "насильно" закрыть форму ? vitalyCh DAX: Программирование 2 06.10.2006 16:26
Можно ли редактировать форму, если на нее наложен addRange? Hans DAX: Программирование 10 22.05.2006 16:35
Как программно закрыть форму? Red Stranger DAX: Программирование 8 11.05.2005 16:04
Проблема - не получается редактировать форму shestakov DAX: Программирование 1 18.12.2001 13:32

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

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

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