|
![]() |
#1 |
NavAx
|
Обычно помогает вот что:
1. Убрать установки visible с active или заменить на enabled. 2. Никаких обновлений "левых" полей/надписей(StaticText) на active - все на display методах. Ну, или как описано - замена на StringEdit.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... ![]() |
|
![]() |
#2 |
Участник
|
Кажется, понял причину проблемы потери фокуса окна поиска в формах "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)]]; ... X++: public void pageActivated() { SysSetupFormRun SysSetupFormRun = element; ; SysSetupFormRun.active_W(); super(); } 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> ... (Так как больше не происходит лишних действий по обновлению полей адреса) |
|
![]() |
#3 |
Участник
|
Судя по тому что у меня в четверке нет класса FormRunListener_Address_RU - это рецепт для Ax2009 ?
|
|
![]() |
#4 |
Участник
|
Цитата:
В предыдущих версиях идея примерно была та же. Группа полей адреса "перерисовывается" каждый раз при активации новой записи. В версии 4 не видел, но наверное там работает та же система что и в версии 3.0. Попробуйте перенести код (ниже) (из метода Active) в метод pageActivated X++: if(isConfigurationkeyEnabled(configurationkeynum(RAddress)) && ret) addressEngine_RU.afterDataSourceActive(); |
|
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
Не знаю как в версии 4,0 но может быть и там могут быть поля адресов как в заказе, так и в строках заказа, поэтому метод active нужно отключать в 2-х местах сразу, для обоих источников данных ...
Но так или иначе, поля с адресами - это не единственная возможная причина потери фокуса. Могут быть и другие (свои кастомизации, или еще что...) |
|
|
За это сообщение автора поблагодарили: Logger (3). |
Теги |
ax4.0, sysformsearch, поиск, фокус, форма |
|
|