logo
Литература_1 / photon_old

Задание порядка виджетов

Порядок, в котором виджетам даётся фокус, зависит от порядка, в котором они были созданы или от порядка виджетов, заданного в PhAB (см. "Задание порядка виджетов" в главе "Создание виджетов в PhAB"). Самым задним виджетом является первый в установленном порядке перехода, самый передний является последним.

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

  • PtWidgetInsert()

Вставить виджет в иерархию семейства виджетов

  • PtWidgetToBack()

Переместить виджет за спину всех своих братьев

  • PtWidgetToFront()

Переместить виджет впереди всех своих братьев

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

В ответной реакции потери фокуса используйте функцию PtContainerGiveFocus(), чтобы передать фокус нужному виджету, и возвращайте для ответной реакции Pt_END, чтобы воспрепятствовать передаче фокуса первоначальной цели изменения фокуса.

 Ответная реакция Pt_CB_LOST_FOCUS вызывается во второй раз, когда фокус перемещается от виджета к новой цели. Чтобы исключить бесконечную петлю, используйте статическую переменную для указания того, что эта ответная реакция уже перенаправила фокус.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4