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

Управление фокусом

Для управления фокусом для виджета используйте следующие флаги:

Pt_ARG_FLAGS:

Pt_GETS_FOCUS

Сделать виджет фокусируемым

Pt_FOCUS_RENDER

Сделать виджет подающим визуальную информацию, когда он имеет фокус.

Дополнительно, используйте для управления фокуса для контейнера следующие флаги Pt_ARG_CONTAINER_FLAGS:

Pt_BLOCK_CUA_FOCUS

Предотвращает использование клавиши СUA для входа в контейнер. Однако, если пользователь щёлкнет внутри контейнера, или функция фокусирования даст контейнеру фокус, клавиши CUA могут использоваться.

Pt_ENABLE_CUA

Даёт родительскому виджету возможность задавать, обрабатывает или не обрабатывает порождённый контейнер клавиши CUA:

  • если этот флаг установлен, код виджета обрабатывает клавиши СUA

  • если он не установлен, клавиши СUA пропускают семейство виджета, пока не будет найден прародитель с установленным флагом. Этот прародитель (если он найден) обрабатывает клавиши.

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()

Передаёт фокус виджету, находящемуся перед заданным.