Владелец против PArent и ярлыки действий на фреймах

У меня есть форма с панелью.

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

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

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

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

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


person Fred    schedule 16.03.2011    source источник


Ответы (2)


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

person Uwe Raabe    schedule 16.03.2011
comment
Большое спасибо, это тот ответ, которого я ждал, чтобы понять, что было за кулисами. - person Fred; 17.03.2011

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

person Uli Gerhardt    schedule 16.03.2011