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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.03.2011, 12:37   #15  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Кажется, понял причину проблемы потери фокуса окна поиска в формах "SalesTable" и "PurchTable"

Проблема там вызвана, судя по всему, функциональностью формата адресов доставки,
которая используется в локализации Аксапта.

Каждый раз, при отрабатывании метода active источника данных формы происходит "перерисовывание" контролов на закладке "Адрес". При этом обновление контролов происходит как в самом заказе, так и в строках заказа (даже если у вас отключен конфигурационный ключ "TradeMultiShipTo" - "Несколько получателей", и закладка "Адрес" в строках - не видима!). Именно в полях адреса имеется контрол "StaticText" который "забирает" фокус.

Решить проблему можно таким способом.
1. Если вы не используется функциональность "Несколько получателей" - лучше всего вообще отключить функциональность Адресов для строк заказа (закупки).
(или "повесить" туда конфигурационный ключ "TradeMultiShipTo")
class FormRunListener_Address_RU
X++:
public static container addressInfo(Args _args)
...
            case formstr(SalesTable) :
                return [[#HeaderDeliveryAddress, tablenum(AddressMap)]];
...
2. Перенести "обновление" полей адреса из метода active источника данных, например, в метод активации закладки "адрес" формы "заказы"
X++:
public void pageActivated()
{
    SysSetupFormRun SysSetupFormRun = element;
    ;
    SysSetupFormRun.active_W();

    super();
}
и отключить его для метода active :
class Info:
X++:
void formNotify(FormRun formRun,FormNotify event)
...
            // <GEEU>
            if (SysDictClass::is(formRun, classnum(SysSetupFormRun)))
            {
                // исправить ошибку потери фокуса при открытии окна поиска, перерисовка происходит при активации tabPage
                if (formRun.name() == FormStr(PurchTable) || formRun.name() == FormStr(SalesTable))
                    break;
                // <--

                sysSetupFormRun = formRun;
                sysSetupFormRun.active_W();
            }
            // </GEEU>

...
Эти меры позволяют не только избежать ошибки потери фокуса, но и по моим ощущениям, ускорить работу самой формы заказы (закупки).
(Так как больше не происходит лишних действий по обновлению полей адреса)
Теги
ax4.0, sysformsearch, поиск, фокус, форма

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Потеря активного буфера записи при вызове super() в update() таблицы TasmanianDevil DAX: Администрирование 13 01.10.2008 11:36
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Критическая ошибка при вызове ранее настроенной формы tolstjak DAX: Администрирование 5 11.04.2007 09:51
Сохранение строки закупки - потеря фокуса? andy239 DAX: Программирование 6 22.01.2006 12:33
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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