29.07.2009, 12:45 | #1 |
Участник
|
Предустановка свойства ButtonGroup enabled в значение No
Dynamics AX 4.0
Kernel version 4.0.2163.0 Поймал небольшой баг при разработке дизайна формы. Если ещё при создании формы в AOT сделать группу кнопок по умолчанию недоступной, а затем в момент выполнения програмно попытаться снять это ограничение, то группа всё равно останется недоступной. Причём данное поведение наблюдается только для ButtonGroup, сами кнопки отрабатывают корректно. Интересно, что если уже в момент выполнения после того как форма создана полностью (например в методе run() после super()) продублировать запрет програмно, то тогда всё отлично отработает. X++: public void run() { super(); // ButtonGroup.enabled(false); // Если раскоментировать, то всё заработает } |
|
29.07.2009, 13:20 | #2 |
Боец
|
Не знаю, насколько это практично, но после такого бубна программное переключение вновь вроде работает.
Метод init() на форме: X++: public void init() { formBuildGroupControl formBuildGroupControl; ; formBuildGroupControl = element.form().design().control("GroupCtrl"); formBuildGroupControl.enabled(true); super(); } P.S. Пардон, в приведенном мною примере речь идет просто о Group а не о ButtonGroup. Но догадываюсь, что корень общий. |
|
29.07.2009, 13:30 | #3 |
Участник
|
Цитата:
поэтому надо заставить ядро перерисовать форму с новыми параметрами. что-нибудь такое, что действует как метод resize у формы. но я не знаю какой именно метод надо вызвать. |
|
29.07.2009, 14:02 | #4 |
Участник
|
X++: public void init() { formBuildGroupControl formBuildGroupControl; ; formBuildGroupControl = element.form().design().control("GroupCtrl"); formBuildGroupControl.enabled(true); // false super(); } Обратите внимание проблема проявляется только при попытке включить заранее выключенную группу. При выключении заранее включенной всё работает корректно. |
|
29.07.2009, 15:05 | #5 |
Боец
|
Цитата:
Сообщение от S.Kuskov
X++: public void init() { formBuildGroupControl formBuildGroupControl; ; formBuildGroupControl = element.form().design().control("GroupCtrl"); formBuildGroupControl.enabled(true); // false super(); } Обратите внимание проблема проявляется только при попытке включить заранее выключенную группу. При выключении заранее включенной всё работает корректно. Т.е. в 1. AOT: Enabled=False 2. init(): formBuildGroupControl.enabled(true) 3. run() после super(): включаем\выключаем сколь угодно раз. Вроде работает... |
|
29.07.2009, 21:04 | #6 |
Участник
|
Цитата:
1. AOT: Enabled не трогаем 3. run() после super(): Есле нужно по умолчанию отключить группу то делаем это здесь. Т.е. в виду глючности этого свойства предлагаю вообще не использовать предварительную инициализацию AOT |
|
|
За это сообщение автора поблагодарили: gl00mie (2). |
29.07.2009, 23:16 | #7 |
Участник
|
|
|
30.07.2009, 08:04 | #8 |
Участник
|
|
|
30.07.2009, 12:47 | #9 |
Участник
|
хм... что самое удивительное, если переключать доступность исходно "выключенной" ButtonGroup несколько раз, то с третьего раза (enable-disable-enable) она-таки включается и затем работает нормально. Попытки же перерисовать форму или сделать "что-нибудь такое, что действует как метод resize у формы", эффекта не дают, в чем можно убедиться на прилагаемой тестовой форме. По ходу, на самом деле ButtonGroup некорректно ведет себя, если до запуска (run()) формы ей выставить enabled(false)
|
|
30.07.2009, 13:41 | #10 |
Участник
|
Принципиальным действием сдесь является повторное переключение в режим disable. Т.е если итак выключенную группу даже не включая, выключить ещё раз (только обязательно после run()), то затем всё работает нормально.
|
|
Теги |
design, баг, программно, свойство, форма, ядро |
|
|