Вопрос (Ax 2012).
Как работает метод isVisible класса FormControl ?
Я раньше думал что это просто сумма (через И) методов visible() для контрола, поля датасорса и поля таблицы
X++:
(formControl.visible() && formDataObject.visible() && dictField.visible() )
Но оказалось, что это не так.
Есть исключения.
Например, если в форме несколько закладок (tabPage) и контрол расположен не на 1-й закладке то при после открытия формы для него isVisible вернет false. Но при переключении на нужную вкладку, начинает возвращать true. Похоже сделана ленивая инициализация значения в целях оптимизации.
Также если на форме несколько датасорсов и идет изменение свойства visible для контрола и содержащих его групп, то неожиданно значение может "залипнуть" даже при переключении на нужную вкладку. Метод все равно возвращает false. Но если сделать reread на датасорсе то "отмыкает" и значение становится правильным.
Пришлось написать свой метод isVisible который работает всегда как надо.
Но может быть я просто не понимаю как он должен работать ? В документации внятного описания не нашел. В гугле тоже молчок.
Есть еще isDisplayed. Он просто выводит, видим ли в данный момент контрол для пользователя (стоим на нужной вкладке и контрол виден, значит true, переключились на другую вкладку - false)