OberonCore
https://forum.oberoncore.ru/

Распространение модельного сообщения только для видимых?
https://forum.oberoncore.ru/viewtopic.php?f=23&t=3279
Страница 1 из 1

Автор:  Иван Кузьмицкий [ Среда, 23 Февраль, 2011 20:52 ]
Заголовок сообщения:  Распространение модельного сообщения только для видимых?

На форме размещено некое отображение, способное отреагировать на определённое модельное сообщение.

Когда это отображение находится в видимой части формы, то оно реагирует. А если скроллинг формы сместит отображение за границу фрейма, то оно перестанет получать модельные сообщения.

Совершенно непонятно, как фреймворк определяет это отображение как невидимое. Ведь для отсылки модельного сообщения я использую Views.BroadcastModelMsg, а там никакой мистики не содержится.

Автор:  Александр Ильин [ Среда, 23 Февраль, 2011 22:10 ]
Заголовок сообщения:  Re: Распространение модельного сообщения только для видимых?

Фреймы существуют только для видимых объектов, вот и весь сказ.

Автор:  Иван Кузьмицкий [ Четверг, 24 Февраль, 2011 00:14 ]
Заголовок сообщения:  Re: Распространение модельного сообщения только для видимых?

Да, и
Цитата:
Model and view messages are broadcast along frame trees.
(System/Docu/Views.odc)

Ну и получается, что если отображение скрыто, то оно никак не получит сообщение.

Автор:  Евгений Темиргалеев [ Четверг, 24 Февраль, 2011 09:47 ]
Заголовок сообщения:  Re: Распространение модельного сообщения только для видимых?

Иван Кузьмицкий писал(а):
Ну и получается, что если отображение скрыто, то оно никак не получит сообщение.
Угу. Эти сообщения предназначены для визуальных обновлений.

я меня тоже такой вопрос возникал (viewtopic.php?f=23&t=2876)

Автор:  Иван Кузьмицкий [ Четверг, 24 Февраль, 2011 10:11 ]
Заголовок сообщения:  Re: Распространение модельного сообщения только для видимых?

Евгений Темиргалеев писал(а):
тоже такой вопрос возникал
У меня ж ситуация аналогичная.

Я сделал визуальный компонентик - "ресайзер". Его бросаешь на форму и он должен следить за изменениями размера своего контейнера (как только размеры изменились, он пересчитывает координаты всех внедрённых в форму отображений - что-то сдвигает, что-то растягивает, а что-то вообще не трогает).

Ну так вот, пока форма вся на виду - ресайзер отлично работает. А если форма со скроллером, то стоит прокрутить ея до исчезновения из виду отображения ресайзера, как ресайзер перестаёт работать.

Я машинально-стереотипно запулил сообщение на форму, но оно не дошло (естественно) до скрытого ресайзера.

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

Автор:  Евгений Темиргалеев [ Четверг, 24 Февраль, 2011 11:47 ]
Заголовок сообщения:  Re: Распространение модельного сообщения только для видимых?

Тогда может сделать обёртку для формы? Пусть она перебирает и меняет размеры. А от ресайзера отказаться.

Автор:  Иван Кузьмицкий [ Четверг, 24 Февраль, 2011 13:03 ]
Заголовок сообщения:  Re: Распространение модельного сообщения только для видимых?

Я сейчас и не упомню, почему отказался от обёртки. Но такой вариант рассматривал, точно.

А сейчас сделал "ход конём": когда контейнер в режиме маски, то ресайзер автоматически растягивается до габаритов контейнера и поэтому виден всегда.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/