xenon54 Опубликовано 7 мая, 2015 Поделиться Опубликовано 7 мая, 2015 (изменено) Мне нужно знать, виден ли контрол в данный момент на экране. Т.е. Visible должен быть True; Абсолютные позиции должны входить в экран; Контрол не загораживают другие контролы полностью. Мб есть уже встроенные механизмы, ведь на сколько я знаю как раз по таким условиям выгружаются загружаются стили? Изменено 8 мая, 2015 пользователем Brovin Yaroslav Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 8 мая, 2015 Модераторы Поделиться Опубликовано 8 мая, 2015 попробуй сравнить входит ли позиция контрола в ClientRect (не помню как в fmx это называется) Цитата Ссылка на комментарий
0 haword Опубликовано 8 мая, 2015 Поделиться Опубликовано 8 мая, 2015 нет таких механизмов. если были бы то интерфейс огнеобезьяны работал быстрее. а так, я так думаю, все из-за прозрачности, вся прорисовка элементов идет последовательно. с нижнего до верхнего по очереди. и что бы узнать виден ли нижний нужно проверить установки прозрачности всех элементов которые были нарисованы поверх него. хотя я могу и ошибаться. Цитата Ссылка на комментарий
0 Модераторы Равиль Зарипов (ZuBy) Опубликовано 8 мая, 2015 Модераторы Поделиться Опубликовано 8 мая, 2015 ведь на сколько я знаю как раз по таким условиям выгружаются загружаются стили? стили выгружаются точно, не раз писали на форуме! но доступны ли для разработчиков эти методы, не известно Цитата Ссылка на комментарий
0 xenon54 Опубликовано 8 мая, 2015 Автор Поделиться Опубликовано 8 мая, 2015 Я немного не уверен в том что загрузка и выгрузка стилей зависит от 3-го пункта. Цитата Ссылка на комментарий
0 Администраторы Brovin Yaroslav Опубликовано 8 мая, 2015 Администраторы Поделиться Опубликовано 8 мая, 2015 Полной поддержки нету. По первому пункту вам пригодится метод TControl.ParentedVisible. Он проверяет по дереву вверх от текущего контрола, не скрыт какой родитель (проверка только на Visible) Остальные придется реализовывать самостоятельно. Так как это не тривиальная задача и доволно трудоемкая по выполнению. Здесь много условий, которые могут повлиять на конечную видимость контрола: Прозрачность Клиппинг Видимость всех конролов по цепочке вверх (родители) Возможность перекрытия контрола контролов другой ветки контролов. Самая дорогостоящая операция номер 4. Ну и как понимаете, если на каждый чих проверять и пробегаться по всему контролам формы, то это будет очень медленно, а кэширование результатов приведет к сложной системе уведомлений между всеми контролами. xenon54 1 Цитата Ссылка на комментарий
0 xenon54 Опубликовано 8 мая, 2015 Автор Поделиться Опубликовано 8 мая, 2015 Ну я в общем-то и спросил насчет встроенных механизмов, ибо реализация как раз этих 4 пунктов очень емкая задача в плане процессорного времени. Спасибо за ответ. Цитата Ссылка на комментарий
0 haword Опубликовано 10 мая, 2015 Поделиться Опубликовано 10 мая, 2015 (изменено) не ну зачем все так усложнять. думаю достаточно иметь глобальный индексируемый список координат и полигонов контролов. а зная координаты, Z положение и прозрачность думаю из этого списка не сложно будет узнать его видимость. винда же ка кто может определить видимость своего контрола и не рисует не видимые лишний раз. Изменено 10 мая, 2015 пользователем haword Цитата Ссылка на комментарий
Вопрос
xenon54
Мне нужно знать, виден ли контрол в данный момент на экране. Т.е.
Мб есть уже встроенные механизмы, ведь на сколько я знаю как раз по таким условиям выгружаются загружаются стили?
Изменено пользователем Brovin YaroslavСсылка на комментарий
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.