我有一个小问题(出于好​​奇),我注意到,如果将(窗体的)控件声明为私有控件并进行动态创建,则可以使用FindComponent在类外部进行访问。

在逻辑上正确吗?

最佳答案

之所以发生这种情况,是因为在创建控件时,它会将自己注册到拥有组件的所有者列表中。因此,该控件有多个引用。

表单类中对控件的引用确实是私有的。但是,对窗体包含在其“组件”列表中的控件的引用是公共的。

从逻辑上讲,这与通过属性公开私有变量非常相似:

property MyPublicProp: TMyControl read FMyPrivateField;


尽管您没有像这样直接公开私有字段,但控件却通过向拥有表单进行注册来间接实现了。

关于delphi - FindComponent甚至可以找到声明为私有(private)的东西是对的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11356783/

10-13 09:10