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

Жизненный цикл виджета

Виджет имеет присущий ему жизненный цикл, как показано ниже.

              1. Рис. 3. Жизненный цикл виджета

Когда виджет оказывается востребованным, он создаётся или инициализируется (instantiated). После его создания появляется возможность манипулировать его атрибутами, или над ним можно производить действие.

Когда виджет создан, он не становится немедленно видим в пользовательском интерфейсе. Он должен быть реализован (realized). Если Вы используете PhAВ, Ваши виджеты реализуются автоматически; если Вы PhAВ не используете, Вы должны реализовать их, используя функцию PtRealizeWidget( ).

Реализация виджета автоматически реализует всех его потомков. Photon гарантирует, что потомки виджета реализуются перед ним самим, так что виджет может вычислить размер своей инициализации, основываясь на размерах своих детей. Вы можете задать, чтобы приложение уведомлялось, что виджет реализован, путём регистрирования ответной реакции в списке реакций Pt_CB_REALIZED. С помощью функции PtUnrealizeWidget( ) Вы можете временно скрыть виджет от пользовательского интерфейса, дереализовав его. Что касается реализации, Вы можете уведомить приложение, используя ресурс ответной реакции Pt_CB_UNREALIZED.

Когда виджет оказывается больше не нужным, Вы можете убить его. Вы можете уничтожить виджет, вызвав функцию PtDestroyWidget( ). В действительности виджет не уничтожается немедленно – он маркируется как подлежащий удалению в соответствующее время и добавляется в список виджетов, подлежащих уничтожению. Эти виджеты обычно уничтожаются внутри главной петли приложения после того, как отработают все ответные реакции, привязанные к событию.

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

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