Показать сообщение отдельно
Старый 27.03.2024, 20:51   #1  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,877 / 3127 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
? Метод isVisible класса FormControl. Что он делает ?
Вопрос (Ax 2012).
Как работает метод isVisible класса FormControl ?

Я раньше думал что это просто сумма (через И) методов visible() для контрола, поля датасорса и поля таблицы
X++:
(formControl.visible() && formDataObject.visible() && dictField.visible() )
Но оказалось, что это не так.

Есть исключения.
Например, если в форме несколько закладок (tabPage) и контрол расположен не на 1-й закладке то при после открытия формы для него isVisible вернет false. Но при переключении на нужную вкладку, начинает возвращать true. Похоже сделана ленивая инициализация значения в целях оптимизации.
Также если на форме несколько датасорсов и идет изменение свойства visible для контрола и содержащих его групп, то неожиданно значение может "залипнуть" даже при переключении на нужную вкладку. Метод все равно возвращает false. Но если сделать reread на датасорсе то "отмыкает" и значение становится правильным.

Пришлось написать свой метод isVisible который работает всегда как надо.

Но может быть я просто не понимаю как он должен работать ? В документации внятного описания не нашел. В гугле тоже молчок.

Есть еще isDisplayed. Он просто выводит, видим ли в данный момент контрол для пользователя (стоим на нужной вкладке и контрол виден, значит true, переключились на другую вкладку - false)

Последний раз редактировалось Logger; 27.03.2024 в 21:10.