Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОУК / 09 семестр / Книги и методические указания / Руководство программиста в Photon.doc
Источник:
Скачиваний:
364
Добавлен:
04.03.2014
Размер:
7.99 Mб
Скачать

Ресурсы анкеров

Ресурс Pt_ARG_ANCHOR_FLAGS (определённый для PtWidget) управляет прикреплением анкерами. Среди анкерных флагов имеются три, связанные с каждым краем виджета, эти три флага позволяют каждому краю быть прикреплёнными одним из трёх возможных способов:

  • прикрепиться к соответствующему краю его родителя

  • прикрепиться к противоположному краю его родителя

  • задать определённое местоположение, т.е. в какой-то пропорции от ширины или высоты виджета.

Эти флаги используют такие именующие схемы:

Pt_edge_ANCHORED_anchor

где

edge является именем закрепляемого края и должно быть TOP, LEFT, RIGHT или BOTTOM, т.е. верхний, левый, правый и нижний края соответственно;

anchor является именем родительского края, к которому производится прикрепление, т.е. родительского edge (см. выше), или принимать значение RELATIVE для пропорционального анкера.

Таким образом, определены следующие флаги (не, ну уже для совсем непонятливых!!! Прим. пер.):

  • Pt_LEFT_ANCHORED_LEFT

  • Pt_LEFT_ANCHORED_RELATIVE

  • Pt_LEFT_ANCHORED_RIGHT

  • Pt_RIGHT_ANCHORED_LEFT

  • Pt_RIGHT_ANCHORED_RELATIVE

  • Pt_RIGHT_ANCHORED_RIGHT

  • Pt_TOP_ANCHORED_BOTTOM

  • Pt_TOP_ANCHORED_RELATIVE

  • Pt_TOP_ANCHORED_TOP

  • Pt_BOTTOM_ANCHORED_BOTTOM

  • Pt_BOTTOM_ANCHORED_RELATIVE

  • Pt_BOTTOM_ANCHORED_TOP

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

Установка флагов анкеров в PhAb

Чтобы установить флаги анкера, щёлкните на ресурсе флагов анкера (Pt_ARG_ANCHOR_FLAGS) и используйте редактор флагов PhAB:

Установка флагов анкеров в программном коде Вашего приложения

Вы можете также установить эти флаги из Вашего программного кода, используя метод, описанный в главе "Манипулирование ресурсами в программном коде приложения". Для удобства каждый набор флагов имеет объединённую маску битов:

  • Pt_LEFT_IS_ANCHORED – выделяет биты, отвечающие за задание анкера для левого края

  • Pt_RIGHT_IS_ANCHORED – выделяет биты, отвечающие за задание анкера для правого края

  • Pt_TOP_IS_ANCHORED – выделяет биты, отвечающие за задание анкера для верхнего края

  • Pt_BOTTOM_IS_ANCHORED – выделяет биты, отвечающие за задание анкера для нижнего края.

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

PtSetArg(&arg[n], Pt_ARG_ANCHOR_FLAGS,

Pt_LEFT_ANCHORED_LEFT | Pt_RIGHT_ANCHORED_RIGHT |

Pt_TOP_ANCHORED_TOP,

Pt_LEFT_IS_ANCHORED | Pt_RIGHT_IS_ANCHORED |

Pt_TOP_IS_ANCHORED);

При установке анкерных флагов из программного кода Вашего приложения все смещения анкера задаются путём использования ресурса Pt_ARG_ANCHOR_OFFSETS. Этот ресурс берёт структуру PtRect_t (см. "Справочник по библиотеке Photon") как значение. Верхний левый угол прямоугольника используется для определения смещения анкера для верхнего и левого краёв виджета, и нижний правый угол прямоугольника указывает смещение анкера для правого и нижнего краёв.

Так, например, чтобы сделать рабочую область в 90% от ширины окна с равным размером обоих сторон, левый и правый края прикрепляются, используя следующий код:

PhRect_t offsets;

offsets.ul.x=50;

offsets.lr.x=950;

PtSetArg(&arg[n], Pt_ARG_ANCHOR_FLAGS,

Pt_LEFT_ANCHORED_RELATIVE | Pt_RIGHT_ANCHORED_RELATIVE,

Pt_LEFT_IS_ANCHORED | Pt_RIGHT_IS_ANCHORED);

PtSetArg(&arg[n+1], Pt_ARG_ANCHOR_OFFSETS, &offsets, 0);

Помните, что пропорциональность, обеспечиваемая смещением анкера, выражается в десятых долях процента.