我有一个带面板的表格。
我在运行时创建框架,并通过将框架的父属性设置为面板在面板上显示它们。
创建面板时,我没有设置所有者属性,因为我自己管理了框架的生命周期。
直到现在我没有问题。接下来,我在框架上放置了一个TActionList,并在动作上添加了一些快捷方式。
我发现直到我将框架的所有者属性设置为面板后才执行我的操作。
有人可以解释一下吗?我认为所有者属性只是组件负责释放子组件,而不负责转发关键事件。
答案 0 :(得分:5)
表单的快捷方式处理在TCustomForm.IsShortCut
中完成,其中迭代组件,其中包括TActionLists。虽然框架不归形式所有,但在迭代期间没有找到框架上的动作列表。您可以通过在框架附加到面板时将动作列表的所有者或完整框架更改为窗体来解决此问题。创建后可以使用InsertComponent
更改所有者。
答案 1 :(得分:1)
所有者主要关于终身管理。但至少有poOwnerFormCenter使用所有者用于完全不同的目的。你可能偶然发现了另一个目的。