2011-03-16 6 views
6

У меня есть форма с панелью.Владелец Vs PArent и Taction ярлыки на фреймах

Я создаю фреймы во время выполнения и отображаю их на панели, устанавливая родительское свойство рамки на панель.

При создании панелей я не устанавливаю свойство владельца, потому что я управляю собой время жизни фрейма.

До сих пор у меня не было проблем. Затем я поместил TActionList в фрейм с некоторыми ярлыками на действия.

Я обнаружил, что мои действия не выполнялись, пока я не установил свойство владельца фрейма на панель.

Может ли кто-нибудь мне это объяснить? Я думал, что собственность владельца - это именно тот компонент, который отвечает за освобождение дочерних компонентов и не несет ответственности за пересылку ключевых событий.

ответ

5

Управление ярлыком формы выполняется в TCustomForm.IsShortCut, где компоненты повторяются, включая TActionsLists. Пока кадр не принадлежит форме, ни один из списков действий в кадре не найден во время итерации. Вы можете обойти это, изменив владельца списка действий или полный кадр на форму, пока рамка прикреплена к панели. Изменение владельца после создания может быть выполнено с помощью InsertComponent.

+0

Большое спасибо, это ответ, который я ожидал, чтобы понять, что было за сценой – Fred

1

Владелец в основном о пожизненном управлении. Но есть хотя бы poOwnerFormCenter, который использует Владелец для совершенно другой цели. И вы, вероятно, наткнулись на другую цель.