Главная » Просмотр файлов » Руководство программиста в Photon

Руководство программиста в Photon (953920), страница 24

Файл №953920 Руководство программиста в Photon (Руководство программиста в Photon) 24 страницаРуководство программиста в Photon (953920) страница 242013-09-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 24)

Pt_SetResource(ABW_my_container, Pt_ARG_RESIZE_FLAGS,

(Pt_RESIZE_XY_INITIAL | Pt_RESIZE_XY_AS_REQUIRED),

Pt_RESIZE_X_BITS | Pt_RESIZE_Y_BITS);

Чтобы установить список аргументов для очистки политики изменения размеров по х:

Pt_SetResource(ABW_my_container, Pt_ARG_RESIZE_FLAGS,

Pt_FALSE, Pt_RESIZE_X_BITS);

Имеется также несколько констант, упрощающих установку этих флагов. Например, есть константа, представляющая битовую маску для установки одновременно флагов по x и по y, и есть константы для наложения изменений для каждого флага по координатам x или y. Все эти константы определены в хеадер-файле <photon/PtWidget.h>

Абсолютное позиционирование

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

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

Простейшим путём позиционирования и установления размеров каждого потомка является использование мыши в PhAB.

Чтобы задать позицию каждого из потомков из программного кода Вашего приложения, Вы должны установить для каждого потомка ресурс Pt_ARG_POS. Если виджеты должны быть согласованы или быть предопределённых размеров, Вы также должны установить для каждого потомка ресурс Pt_ARG_DIM. Задаваемая Вами позиция является относительной верхнего левого угла холста родителя, так что при позиционировании потомков Вы можете не принимать во внимание границы родителя. По умолчанию все виджеты, позиционируемые абсолютно, используют политику изменения размеров Pt_AS_REQUIRED и Pt_INITIAL. Другими словами, начальные размеры контейнера выбираются при его реализации. Контейнер делается достаточно большим, чтобы разместить всех потомков в заданном местоположении и давая им возможность после реализации принять свои размеры.

Простейшим путём выполнения абсолютного позиционирования является размещение и позиционирование виджетов внутри главного виджета PtWindow приложения. Если Вам необходимо создать контейнерный виджет, выполняющий абсолютное позиционирование, как часть другого контейнера, Вы можете использовать виджет PtContainer.

Выравнивание виджетов с использованием групп

Виджеты PtGroup являются виджетами контейнерного класса, которые могут управлять геометрией своих потомков. Вы найдёте это полезным для выравнивания виджетов по горизонтали, вертикали или как матрицу. Они также обладают уникальной способностью растягивать порождённые виджеты.

PhAB расширяет полезность этого класса виджетов путём превращения их в ориентированную на действие команду "Group". Используя эту команду, Вы можете выбирать несколько виджетов внутри модуля и группировать их вместе в один групповой виджет. Если Вы попытаетесь выбрать любой виджет из группы, щёлкнув на нём, будет выбрана вся группа.

Когда Вы выбираете группу, панель управления ресурсами показывает ресурсы, имеющиеся в распоряжении виджетного класса PtGroup. Это включает ресурсы, позволяющие Вам выравнивать виджеты внутри группы и устанавливать эксклюзивное по выбору поведение.

Виджет PtGroup может быть использован для расстановки группы виджетов по строкам, колонкам или в виде таблицы. Для управления этим используется несколько ресурсов, и они интерпретируются несколько по-разному в зависимости от желаемой компоновки потомков.

Объединение виджетов в группу

Чтобы объединить виджеты в группу:

  1. Выберите виджеты, используя либо метод ограничивающего прямоугольника, либо метод "Shift и щелчок"(как описано в главе "Создание виджетов в PhAB").

Вы можете использовать "Shift и щелчок", если собираетесь выравнивать виджеты по порядку, используя ресурс "Orientation". Первый выбранный Вами виджет становится первым внутри группы. Если порядок не важен или выравнивание не требуется, приятнее работать с методом ограничивающего прямоугольника.

  1. Выполните одно из следующих действий:

  • Выберите пункт "Group Together" из меню "Edit".

  • Нажмите <Ctrl>+<G>

  • Щёлкните на кнопке "Group" на панели инструментов PhAB:

PhAB сгруппирует виджеты и выберет группу.

Получение доступа к виджетам в группе

Несмотря на то, что PhAB интерпретирует группу как один виджет, Вы по-прежнему можете получить доступ к любому отдельному виджету, входящему в группу. Чтобы это сделать, используйте клавиши "Следующая" и "Предыдущая" в панели управления ресурсами или ответными реакциями, или выберите виджет непосредственно из панели дерева модулей. Более подробно это описано в разделе "Выбор виджетов" в главе "Создание виджетов в PhAB".

Горизонтальное или вертикальное выравнивание виджетов

Ресурс ориентации Pt_ARG_GROUP_ORIENTATION управляет тем, выравниваются ли потомки группового виджета построчно или по колонкам. Значение Pt_GROUP_VERTICAL приводит к тому, что потомки выстраиваются вертикально, тогда как значение Pt_GROUP_HORIZONTAL – к тому, что они выстраиваются горизонтально. Вы можете управлять величиной свободного пространства, остающегося между виджетами, выстроенными в групповом виджете, путём использования ресурса Pt_ARG_GROUP_SPACING. Значение ресурса даёт число пикселей, оставляемых между виджетами.

Следующий пример показывает, как располагаются несколько потомков, если группа использует вертикальную ориентацию с пятью пикселями свободного пространства между потомками:

Если ориентация изменена на горизонтальную, группа выглядит так:

При первой реализации групповой виджет первоначально устанавливает свои размеры, чтобы после того, как все потомки будут расположены, быть достаточно большими, чтобы все их вместить.

Выстраивание виджетов построчно и в колонки

Установкой значения ресурса Pt_ARG_GROUP_ROWS_COLS в величину, большую чем единица, можно использовать групповой виджет для размещения его потомков построчно и в колонки, создавая таблицы.

Интерпретация этого ресурса зависит от ориентации:

  • Когда ориентация вертикальная, этот ресурс определяет число отображаемых строк; число колонок вычисляется на основе числа виджетов, чтобы получить верное число строк:

  • В противном случае значение определяет число колонок, и виджет вычисляет число строк:

Последняя строка или колонка может иметь меньшее количество виджетов, чем остальные.

Когда элементы группы скомпонованы в строки и колонки, сами виджеты могут быть тесно упакованы или же они могут быть расставлены с равными интервалами построчно и/или колонками. Это управляется ресурсом Pt_ARG_GROUP_SPACING.

Использование флагов групп

Виджет Pt_Group включает набор флагов Pt_ARG_GROUP_FLAGS, которые могут быть использованы для управления тем, как порождённые виджеты могут быть выбраны, изменены в размерах и растянуты:

Pt_GROUP_EXCLUSIVE

Позволяет быть одновременно установленным только одному потомку. Этот флаг может использоваться, чтобы сделать группу кнопок-переключателей радиокнопками (т.е. установить взаимоисключающий выбор).

Pt_GROUP_ EQUAL_SIZE

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

Pt_GROUP_ EQUAL_SIZE_HORIZONTAL

Делает все виджеты шириной, равной ширине самого широкого виджета.

Pt_GROUP_ EQUAL_SIZE_VERTICAL

Делает все виджеты высотой, равной высоте самого высокого виджета.

Pt_GROUP_ NO_SELECT_ALLOWED

Устанавливает этот флаг для исключающей группы, если обоснованно не иметь никакого набора потомков. Пользователь может снять выбор текущего набора потомков, щёлкнув на нём ещё раз.

Pt_GROUP_ NO_KEYS

Не позволяет пользователю перемещаться внутри группы с помощью клавиш со стрелками.

Pt_GROUP_NO_KEY_WRAP_HORIZONTAL

Не позволяет автоматически переходить на другую сторону группы при использовании клавиш с левой и правой стрелками (т.е. например, перейти в начало, достигнув конца. Прим. пер.).

Pt_GROUP_ NO_KEY_WRAP_VERTICAL

Не позволяет автоматически переходить в вершину или вниз группы при использовании клавиш со стрелками вверх и вниз.

Pt_GROUP_ STRETCH_VERTICAL

Растягивает нижнюю строку виджетов при расширении группы

Pt_GROUP_ STRETCH_HORIZONTAL

Растягивает правую колонку виджетов при расширении группы

Pt_GROUP_ STRETCH_FILL

Растягивает последний (ие) виджеты так, чтобы заполнить доступное свободное пространство в направлении, указанном в ориентации

 Не устанавливайте флаги Pt_GROUP_EQUAL_SIZE_... и Pt_GROUP_STRETCH_... для одного и того же направления – группа будет расширяться каждый раз, когда будет вычисляться его величина.

Для получения более полной информации см. описание виджета PtGroup в "Справочнике виджетов".

Расщепление группы на составляющие

Чтобы расщепить группу на отдельные виджеты:

  1. Выберите группу

  2. Сделайте одно из следующего:

  • Выберите пункт "Split Apart" из меню "Edit"

  • Нажмите <Ctrl>+<P>

  • Щёлкните на иконке "Split" на панели инструментов PhAB:

PhAB разберёт группу на составляющие виджеты и удалит контейнер PtGroup.

Управление привязкой с использованием анкеров – средств привязки

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

Анкеры предоставляются как механизм привязки позиции и размеров любого виджета внутри контейнера. Атрибут позиции и анкеры каждого потомка всегда используются для определения их позиций.

 В текущей версии microGUI Photon'а виджеты немедленно прикрепляются при создании. В более ранних версиях закрепление делалось, когда виджет реализовывался.

Анкер может быть задан для любой стороны порождённого виджета. Анкер прикрепляется к одной из сторон родителя. Он удерживает соответствующую сторону потомка на фиксированном расстоянии – смещении анкера от крепящей стороны родителя. Смещение анкера может быть также выражено как количественное соотношение ширины или высоты холста родителя.

Возможно – но не всегда желательно – прикреплять края виджетов за пределами холста его родителя.

Характеристики

Тип файла
Документ
Размер
7,62 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее