Руководство программиста в Photon (953920), страница 17
Текст из файла (страница 17)
Вы можете также создавать виджет, перетаскивая его иконку из палитры виджетов на панель управления "Module Tree". То место, где Вы сбросили иконку, и определит место виджета в иерархии семейства.
Создание нескольких виджетов
Как только Вы создали виджет, Вы возвращаетесь в выбранный режим. Чтобы остаться в режиме создания, так чтобы Вы могли создать несколько виджетов одного типа:
-
Нажмите и удерживайте нажатой клавишу <Ctrl>.
-
Создайте столько виджетов, сколько хотите.
-
Отпустите <Ctrl>.
Отмена режима создания
Чтобы отменить режим создания, не создавая виджет:
-
щёлкните где-нибудь вне модуля
или
-
щёлкните на модуле правой кнопкой мыши.
Выбор виджетов
В этом разделе мы увидим, как
-
выбирать одиночный виджет
-
выбирать несколько виджетов
-
выбирать виджеты внутри группы
-
выбирать скрытые виджеты.
Когда PhAB находится в режиме выбора, указатель выглядит как стрелка. Чтобы перевести PhAB в режим выбора:
-
щёлкните где-либо вне модуля
или
-
щёлкните правой кнопкой мыши на модуле
или
-
щёлкните на выбранном виджете в палитре виджетов.
Одиночный виджет
Чтобы выбрать одиночный виджет, Вы можете:
-
указать и щёлкнуть
или
-
использовать кнопки "Следующая" и "Предыдущая" в панелях управления ресурсами или ответными реакциями
-
использовать панель управления "Module Tree".
Эти методы описаны ниже.
Метод указать-и-щёлкнуть
Чтобы выбрать одиночный виджет, используя указать-и-щёлкнуть:
-
Убедитесь, что Вы в режиме выбора
-
Щёлкните на виджет, используя левую кнопку мыши. Вокруг виджета появятся метки-манипуляторы изменения размеров.
Чтобы выбрать родителя данного виджета, удерживайте нажатыми <Shift>+<Alt> и щёлкните на виджет. Это лёгкий способ выбрать PtDivider или PtToolbar.
Метод контрольных панелей
Кнопки "Следующая" и "Предыдущая" на панелях управления ресурсами и ответными реакциями позволяют Вам выбрать любой виджет в текущем модуле.
чтобы выбрать | щёлкните на: | или нажмите |
Предыдущий виджет в текущем модуле | | <F9> |
Следующий виджет в текущем модуле | | <F10> |
Панель управления "Module Tree" отображает дерево всех виджетов в модуле. Используя это дерево, Вы можете:
-
выбрать виджет внутри группы
-
найти виджет по имени
-
выбрать виджет, скрытый под другим виджетом.
Чтобы выбрать виджет из дерева, щёлкните на имени виджета.
Несколько виджетов
Чтобы выбрать несколько виджетов, Вы можете:
-
использовать охватывающий прямоугольник
или
-
использовать <Shift>+щелчок
или
-
использовать панели управления.
Когда Вы выбираете два или более виджета, панель управленияя ресурсами отображает только ресурсы, которые являются общими для этих виджетов. Редактирование какого-либо из этих ресурсов действует на все выбранные виджеты.
Использование охватывающего прямоугольника
Охватывающий прямоугольник позволяет Вам выбрать одновременно несколько виджетов:
-
Разместите указатель выше и левее виджетов, которые Вы хотите выделить.
-
Если виджеты входят в какой-то контейнер, такой как PtBkgd, убедитесь, что указатель находится внутри контейнера, затем нажмите и удерживайте клавишу <Alt>.
-
Нажмите и удерживайте левую кнопку мыши, затем протащите указатель вправо вниз. Вы увидите контур, "растущий" на экране.
-
Когда все виджеты окажутся внутри контура, отпустите кнопку мыши. Вы увидите метки-манипуляторы изменения размеров вокруг области, определённой выбранными виджетами.
Использование "<Shift> и щелчок"
Чтобы добавить или удалить виджет из текущего списка выбранных виджетов, удерживайте нажатой клавишу <Shift> и щёлкайте по виджетам. Этот метод известен также как метод расширенного выбора.
Если виджет ещё не выбран, он добавляется к списку. Если виджет уже выбран, он удаляется из списка.
Вышеописанные методы выбора нескольких виджетов работают только для виджетов одного уровня иерархии. Например, Вы легко можете выбрать, скажем, две кнопки внутри окна. Вы не сможете расширять этот выбор, включив кнопку, находящуюся внутри панели (pane).
Использование панелей управления
Чтобы выбрать несколько виджетов, используйте кнопки "Следующая" и "Предыдущая" панелей управления ресурсами и ответными реакциями:
-
Удерживайте нажатой клавишу <Shift>
-
Щёлкните на кнопку "Next".
Каждый раз при щелчке PhAB добавит следующий виджет текущего модуля к выбранным.
Чтобы удалить последний виджет из текущего списка выбранных виджетов:
-
Удерживайте нажатой клавишу <Shift>
-
Щёлкните на кнопку "Previous".
Каждый раз при щелчке PhAB удалит виджет.
Виджеты внутри группы
Чтобы выбрать виджет внутри группы, Вы можете использовать кнопки "Следующая" и "Предыдущая" в панели управления ресурсами или ответными реакциями, или использовать панель управления "Module Tree".
Использование панели "Module Tree"
Чтобы выбрать один виджет внутри группы, используйте панель управления "Module Tree".
-
Переключитесь на панель управления "Module Tree".
-
Найдите группу на дереве и щёлкните на имени виджета.
-
<Shift>+щелчок – чтобы выбрать при необходимости дополнительные виджеты.
-
Чтобы отредактировать виджет, переключитесь на панель управления ресурсами или ответными реакциями.
Использование кнопок "Следующая" и "Предыдущая"
Чтобы выбрать один или более виджетов внутри группы, используйте кнопки "Следующая" или "Предыдущая":
-
Щёлкните на каком-либо виджете внутри группы, чтобы выбрать всю группу.
-
Щёлкайте на кнопке "Next" (или нажмите <F10> на панели управления ресурсами или ответными реакциями, пока не будет выбран нужный Вам виджет.
-
Чтобы выбрать дополнительные виджеты, нажмите <Shift>, затем вновь щёлкните на кнопке "Следующая".
-
Вы теперь можете редактировать ресурсы или ответные реакции виджетов.
Скрытые виджеты
Если Вы не можете найти виджет (он может быть скрыт под другим виджетом или вне границ своего контейнера), сделайте следующее:
-
Используйте кнопки "Следующая" и "Предыдущая" на панелях управления ресурсами или ответными реакциями.
-
Выберите виджет из панели управления "Module Tree".
-
Используйте панель управления поиска.
-
Если виджет выглядит помещённым вне текущих границ своего контейнера, верните его обратно к видимому, используя области X и Y в панели инструментов PhAB.
Для получения более полной информации по панели инструментов и панелям управления см. главу об окружении PhAB.
Выравнивание виджетов
Вы можете выровнять несколько виджетов относительно другого виджета или их родительского контейнера.
Для простого выравнивания используйте кнопку "Align" на панели инструментов PhAB:
и затем выберите способ выравнивания во всплывающем меню.
Для более сложных вариантов выравнивания вызовите диалог "Align Widgets":
-
выбрав кнопку "Align" из панели инструментов PhAB и затем выбрав "Alignment Tool" из меню
или
-
выбрав "Alignment" из меню "Edit" и затем выбрав пункт "Alignment Tool" из подменю
или
-
нажав <Ctrl>+<A>.
По другому виджету
Когда Вы используете этот метод для выравнивания виджетов, виджеты выравниваются по первому выбранному Вами виджету:
-
Выберите первый виджет
-
Используйте метод выбора <Shift>+щелчок, выберите остальные виджеты (этот метод описан в разделе "Выбор виджетов").
-
Для простого выравнивания выберите иконку "Align" из панели инструментов PhAB и сделайте выбор из меню.
-
Для более сложных вариантов выравнивания вызовите диалог "Align Widgets". Выберите одну или более опций выравнивания, затем щёлкните на кнопке "Align". Не щёлкайте на кнопке "Align to Container".
По родительскому контейнеру
Чтобы выровнять виджеты по их родительскому контейнеру:
-
Выберите один или несколько виджетов в любом порядке.
-
Вызовите диалог "Align Widgets", выберите желаемые опции выравнивания, затем щёлкните на соответствующей кнопке "Align to Container".
Если Вы выбрали и вертикальную, и горизонтальную опции, убедитесь, что щёлкнули на обе кнопки "Align to Container".
-
Щёлкните на кнопке "Align".
При выравнивании виджетов по контейнеру Вам может понадобиться сохранить их относительные позиции. Чтобы сделать это:
-
Сгруппируйте виджеты вместе (см. раздел "Выравнивание виджетов, используя группы") в главе "Управление геометрией".
-
Выровняйте виджеты.
-
Разбейте, что необязательно, группу на составляющие.
Общепользовательский доступ (СИА) и управление фокусом
Общепользовательский доступ (СИА) является стандартом, описывающим, как пользователь может изменить фокус с помощью клавиатуры. Виджет является фокусируемым, если на него может устанавливаться фокус путём нажатия клавиши СИА или вызовом функции фокусировки.
Изменение фокусировки через клавиатуру
Следующие клавиши перемещают фокус только к фокусируемым виджетам:
чтобы перейти к: | нажмите |
следующему виджету | Tab |
предыдущему виджету | Shift+Tab |
первому виджету в следующем контейнере | Ctrl+Tab |
последнему виджету в предыдущем контейнере | Ctrl+Shift+Tab |
Чтобы получить информацию о задании порядка, в котором виджеты отслеживаются, см. раздел "Упорядочивание виджетов" в этой главе.
Управление фокусом
Для управления фокусом для виджета используйте следующие флаги:
Pt_ARG_FLAGS: | |
Pt_GETS_FOCUS | Сделать виджет фокусируемым |
Pt_FOCUS_RENDER | Сделать виджет подающим визуальную информацию, когда он имеет фокус. |
Дополнительно, используйте для управления фокуса для контейнера следующие флаги Pt_ARG_CONTAINER_FLAGS:
Pt_BLOCK_CUA_FOCUS | Предотвращает использование клавиши СUA для входа в контейнер. Однако, если пользователь щёлкнет внутри контейнера, или функция фокусирования даст контейнеру фокус, клавиши CUA могут использоваться. |
Pt_ENABLE_CUA | Даёт родительскому виджету возможность задавать, обрабатывает или не обрабатывает порождённый контейнер клавиши CUA:
|
Pt_ENABLE_CUA_ARROWS | Аналогичен флагу Pt_ENABLE_CUA, но используется только клавишами стрелок. |
Ответные реакции фокусировки
Все потомки виджета PtBasic имеют следующие ресурсы ответных реакций:
-
Pt_CB_GOT_FOCUS – вызывается, когда виджет получает фокус
-
Pt_CB_LOST_FOCUS – вызывается, когда виджет теряет фокус.
Виджет может даже отказаться "отдавать" фокус (например, если Вы набрали ошибочную дату в текстовом виджете).
PtMultiText и PtText имеют специальные версии этих ответных реакций.
Для получения более полной информации см. "Справочник виджетов".
Функции обработки фокусировки
Функции, описанные ниже, имеют дело с фокусировкой. Они описаны в "Справочнике библиотечных функций Photon".
В действительности эти функции не изменяют виджеты, имеющие фокус; они сообщают Вам, где фокус может проходить:
PtFindFocusChild() | Отыскивает ближайший фокусируемый порождённый виджет. |
PtFindFocusNextFrom() | Отыскивает следующий виджет, который может получить фокус. |
PtFindFocusPrevFrom() | Отыскивает предыдущий виджет, который может получить фокус. |
Вы можете использовать эти функции, чтобы определить, какой виджет имеет фокус:
PtContainerFindFocus() | Отыскивает виджет, имеющий фокус, в той же семейной иерархии, что и виджет. |
PtIsFocused() | Определяет, на каком уровне виджет имеет фокус. |
Вы можете использовать эти функции, чтобы передать фокус виджету:
PtContainerFocusNext() | Передаёт фокус следующему Pt_GETS_FOCUS виджету. |
PtContainerFocusPrev() | Передаёт фокус предыдущему Pt_GETS_FOCUS виджету. |
PtContainerGiveFocus() или PtGiveFocus() | Передаёт фокус виджету – эти функции идентичны. |
PtContainerNullFocus() | Отменяет фокус для виджета. |
PtGlobalFocusNext() | Передаёт фокус следующему виджету. |
PtGlobalFocusNextContainer() | Передаёт фокус виджету следующего контейнера. |
PtGlobalFocusNextFrom() | Передаёт фокус виджету, следующему за заданным. |
PtGlobalFocusPrev() | Передаёт фокус предыдущему виджету. |
PtGlobalFocusPrevContainer() | Передаёт фокус виджету предыдущего контейнера. |
PtGlobalFocusPrevFrom() | Передаёт фокус виджету, находящемуся перед заданным. |
Упорядочивание виджетов
В PhAB каждый виджет присутствует перед или позади других виджетов. Это известно как порядок виджетов, и Вы можете видеть его, когда несколько виджетов перекрываются. Порядок виджетов диктует то, как Вы можете использовать клавиши СUА для перемещений между виджетами.
Если Вы не использовали PhAB, порядок виджетов – это порядок, в котором виджеты были созданы. Чтобы изменить порядок, см. раздел "Упорядочивание виджетов" в главе "Управление виджетами в программном коде приложения".