Инструменты пользователя

Инструменты сайта


bb:docuviews

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
bb:docuviews [2016/04/05 20:12]
prospero78 [Построение дерева фреймов]
bb:docuviews [2020/10/29 07:08] (текущий)
Строка 57: Строка 57:
  
 ===== Корневой фрейм ===== ===== Корневой фрейм =====
-Это фрейм, находящийся на вершине дерева фреймов. С него начинается построение дерева, поэтому для обозначения корня есть специальный тип **Views.RootFrame**. Поскольку корневой фрейм нельзя встраивать посреди других фреймов, то в процедуре **Views.InstallFrame** стоит проверка типа фрейма.+Это фрейм, находящийся на вершине дерева фреймов. С него начинается построение дерева, поэтому для обозначения корня есть специальный тип ''Views.RootFrame''. Поскольку корневой фрейм нельзя встраивать посреди других фреймов, то в процедуре ''Views.InstallFrame'' стоит проверка типа фрейма.
  
 Перед тем, как построить дерево фреймов, требуется //связать// корневой фрейм с его отображением. Связывание производится процедурой ''Views.SetRoot''. Сигналы от окна пойдут именно в это отображение, и далее к другим видимым отображениям. Корневое отображение отличается от других тем, что его метод GetNewFrame возвращает фрейм корневого типа. Таким образом, невозможно спутать назначение этого отображения. Перед тем, как построить дерево фреймов, требуется //связать// корневой фрейм с его отображением. Связывание производится процедурой ''Views.SetRoot''. Сигналы от окна пойдут именно в это отображение, и далее к другим видимым отображениям. Корневое отображение отличается от других тем, что его метод GetNewFrame возвращает фрейм корневого типа. Таким образом, невозможно спутать назначение этого отображения.
  
-Фрейм является маппером порта, а мапперу, согласно паттерну //Carrier-Rider-Mapper//, требуются для работы бегунок (Rider) и носитель (Carrier). Бегунком здесь является //Ports.Rider//, а носителем //Ports.Port//. При подключении фрейма к порту методом ''ConnectTo'' для фрейма создаётся экземпляр бегунка. Объект порта уже должен быть создан платформенными средствами (его нельзя создавать иначе, ведь порт является абстракцией устройства вывода), при этом порту назначаются единицы измерения на устройстве и его габариты (ширина и высота) в единицах измерения.+Фрейм является маппером порта, а мапперу, согласно шаблону **Carrier-Rider-Mapper**, требуются для работы //бегунок// (''Rider'') и //носитель// (''Carrier''). Бегунком здесь является ''Ports.Rider'', а носителем ''Ports.Port''. При подключении фрейма к порту методом ''ConnectTo'' для фрейма создаётся экземпляр бегунка. Объект порта уже должен быть создан платформенными средствами (его нельзя создавать иначе, ведь порт является абстракцией устройства вывода), при этом порту назначаются единицы измерения на устройстве и его габариты (ширина и высота) в единицах измерения.
  
 Конечно же, для корневого отображения должен быть создан контекст, умеющий определять размеры окна. Кроме этого, потребуется проинициализировать домен отображения. И можно строить дерево. Конечно же, для корневого отображения должен быть создан контекст, умеющий определять размеры окна. Кроме этого, потребуется проинициализировать домен отображения. И можно строить дерево.
  
 Дерево фреймов строится последовательным вызовом двух процедур: Дерево фреймов строится последовательным вызовом двух процедур:
-<code>+<code oberon2>
 Views.AdaptRoot Views.AdaptRoot
 Views.RestoreRoot Views.RestoreRoot
bb/docuviews.1459876323.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)