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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.04.2011, 13:24   #1  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Очередной сюрприз от АХ2009
Добрый день.
В стандартной АХ, после каждого закрытия формы, она запоминает размер и местоположение формы.
Теперь попробуем следующее: Открываем Справочник номенклатур, настроим размер (ширину, высоту) и свернем форму. Не разворачивая справочник закроем Основное окно АХ (т.е. всю АХ). Вместе с ней автоматически закроется и свернутое нами окно Справочника. Открываем АХ, открываем справочник и видим, что он не сохраняет размеры, а превращает справочник в узкую полоску, которую снова приходится раздвигать!!!!!!
Если форму сделать MDI, проблема исчезнет. Но у нас, например, на MDI сидят только разработчики, а пользователи научены и, наверное, уже привыкли к стандартным настройкам.
Может быть это только у нас? Может быть, это связано с тем что у нас WinXP Professional SP3?
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
За это сообщение автора поблагодарили: Logger (3).
Старый 14.04.2011, 13:30   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от Pustik Посмотреть сообщение
В стандартной АХ, после каждого закрытия формы, она запоминает размер и местоположение формы.?
Ничего подобного в стандартной AX нет, если только не установлен соотв. флаг на дизайне формы.
Старый 14.04.2011, 13:35   #3  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
да, конечно, забыл сказать, что у нас SaveSize включен на всех формах.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 14.04.2011, 13:36   #4  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от Pustik Посмотреть сообщение
Добрый день.
Может быть это только у нас? Может быть, это связано с тем что у нас WinXP Professional SP3?
Нет, думаю это у всех У меня по крайней мере то же самое.

Через какое то время надоело объяснять пользователям куда у них "пропала" форма "заказы" (например)...

После исследования проблемы обнаружилось что не верный размер окна "запоминается" при закрытии формы.

Как и с другими глюками в поведении форм в Ax2009, выручил класс SysSetupFormRun. (Эх, что бы мы делали без него ???)

Решил сделать так (см ниже). Это помогло...

X++:
public void init()
{
    // <GEEU>
    this.raiseEvent_W(methodstr(FormRunListener_W, beforeInit));
    // </GEEU>
    super();
    ...
    heightValue = this.design().heightValue(); // FIX
X++:
public void close()
{
    ;
    this.repairForm();

    super();
}
X++:
void repairForm() // Избежать сорачивание формы в узкую полоску
{
    ;
    if (this.design().saveSize() == true)
    {
        if (this.design().heightValue() < 30)
        {
            this.design().heightValue(heightValue);
        }
    }
}
За это сообщение автора поблагодарили: Pustik (2), Logger (3), Ivanhoe (3), alex55 (2), S.Kuskov (5), Kabardian (4).
Старый 14.04.2011, 15:02   #5  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Мы нашли еще такой вариант :
X++:
public void close()
{
    if (this.design().saveSize())
        this.setActive();
    super();
}
всего 2 строчки кода, плюс ко всему сохранит высоту и ширину формы не в момент ее открытия, а на момент закрытия, т.е. после работы пользователя
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
За это сообщение автора поблагодарили: mazzy (2), Ansi (0), Logger (3), Poleax (2), Ivanhoe (2), ivas (2), Sergey Petrov (1), someOne (2), Kabardian (4).
Старый 08.06.2012, 10:49   #6  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Коллеги, два вопроса Есть клиент версии 5.0.1500.6491.

Первый предложенный в этой ветке вариант периодически выдает ошибку на методе close() - якобы heightValue не определена.

Второй вариант только что попробовал - не работает.
__________________
Ivanhoe as is..
Старый 08.06.2012, 12:50   #7  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Коллеги, два вопроса Есть клиент версии 5.0.1500.6491.

Первый предложенный в этой ветке вариант периодически выдает ошибку на методе close() - якобы heightValue не определена.

Второй вариант только что попробовал - не работает.
На всякий случай, в первом варианте еще должно быть так
X++:
// This is a framework class. Customizing this class may cause problems with future upgrades to the software.
public class SysSetupFormRun extends FormRun
{
    SysWorkflowFormControls     workflowControls;
    // <GEEU>
    // Event listeners list
    List listeners_W;
    // </GEEU>

    int heightValue; // <-- добавить это
Версия клиента у меня 5.0.1500.3761 За все время работы функции ошибки не было ни разу.

Можете описать как эту ошибку воспроизвести ? Каков точный текст ошибки ?
Старый 08.06.2012, 13:15   #8  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Переменную, конечно, добавили. Ошибка выдается при попытке использовать эту переменную по назначению: this.design().heightValue(heightValue);

Цитата:
Ошибка времени выполнения: Глобальные системные переменные не найдены.

(C)\Classes\SysSetupFormRun\Close - line 9
P.S. у меня этот код прямо в Close() - может, из-за этого? В чем тогда разница в вынесении кода в отдельный метод?
__________________
Ivanhoe as is..
Старый 08.06.2012, 13:37   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Переменную, конечно, добавили. Ошибка выдается при попытке использовать эту переменную по назначению: this.design().heightValue(heightValue);



P.S. у меня этот код прямо в Close() - может, из-за этого? В чем тогда разница в вынесении кода в отдельный метод?
Помнится в 3-ке был глюк когда переменные объявленные в classdeclaration у SysSetupFormRun не сохраняли свое значение или выдавалась ошибка (не помню точно уже).
Возможно в 2009-й тоже что-то подобное имеет место быть.
Лечил - сохранением нужных значений в глобальном кеше.
Пример тут :
Сброс фильтра в KR3 по Ctrl-N
Старый 08.06.2012, 14:55   #10  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Переменную, конечно, добавили. Ошибка выдается при попытке использовать эту переменную по назначению: this.design().heightValue(heightValue);



P.S. у меня этот код прямо в Close() - может, из-за этого? В чем тогда разница в вынесении кода в отдельный метод?
Код в отдельный метод переношу только для облегчения будущих апгрейдов на новую версию, а так же облегчения "накатывания" обновлений.

(Это затем экономит время при сравнении слоев приложения "вручную", а так же делает более наглядным смысл сделанных изменений)

Никаких других целей специально не преследовалось.

Указанную вами ошибку не встречал ни разу. Видимо какой то баг ядра...
Тем более что у этого класса есть и другие переменные класса. Возможно использование переменных глобального кеша действительно может решить проблему.
Старый 08.06.2012, 15:20   #11  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
В том то и дело, что другие переменные есть и они работают (красим фон для тестовой базы).
Такая же ошибка была на другой инсталляции с RU-5. Работа на терминальном сервере под управлением Windows Server 2008.

P.S. на третьем сервере программист предложил такой вариант, там это работает, у меня - нет.
X++:
public void close()
{
    ;
    infolog.activateWindow(this.hWnd());
    
    super();
}
__________________
Ivanhoe as is..
Старый 08.06.2012, 16:53   #12  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
а если вместо переменной ему подставить голую циферку, чего будет?
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 09.06.2012, 08:37   #13  
McArrow is offline
McArrow
Участник
 
45 / 38 (2) +++
Регистрация: 18.05.2009
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
В том то и дело, что другие переменные есть и они работают (красим фон для тестовой базы).
А можно поподробнее про покраску фона? Вы красите фон форм или фон главного окна?
Старый 09.06.2012, 10:48   #14  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от McArrow Посмотреть сообщение
А можно поподробнее про покраску фона? Вы красите фон форм или фон главного окна?
Красится фон на формах.
Как в Ax 2009 перекрасить цвет фона?
__________________
Ivanhoe as is..
Теги
syssetupformrun, баг, форма, ax2009

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Очередной вопрос про Query rkrivov DAX: Программирование 45 16.10.2013 19:16
Стоимость перехода с AX3.0 на АХ2009 Pustik DAX: Прочие вопросы 18 30.03.2011 16:21
Опубликован список русскоязычных материалов по АХ2009 Poleax DAX: Прочие вопросы 2 15.10.2010 11:06
Тормоза при получении очередной строки из ResultSet Alenka DAX: Программирование 14 04.08.2009 13:31
В АХ2009 проблема с General Ledger->Chart of accounts AndrianG DAX: Администрирование 3 12.02.2009 13:15

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

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

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