TComponent 中的 Observers 属性

Posted

技术标签:

【中文标题】TComponent 中的 Observers 属性【英文标题】:Observers property in TComponent 【发布时间】:2011-11-09 09:19:32 【问题描述】:

您好 Delphi XE2 TComponent 有一个新的 "Observers" property。不幸的是,这方面的帮助条目是空的。有谁知道这个新属性有什么好处以及如何使用它? 编辑:嗯,我知道它与 LiveBindings 有关,但我很想知道更多关于它的信息,而且由于我无法访问 XE2 源代码,所以我无法调查自己。

【问题讨论】:

Stefan Glienke 还有一篇博文提到了 Delphi XE2 中的implemention of the observer pattern into TComponent here。 【参考方案1】:

它与 LiveBindings 有关。一个相当酷但内容广泛的主题,在新的 DocWiki for XE2 中进行了解释。

【讨论】:

对不起 Rudy,但 DocWiki 对我的问题并没有真正的帮助。我非常了解 LiveBindings,但我的问题是真正了解它们背​​后的内容以及它们是如何实现的。因此,我的问题的背景是它们与 LiveBindings 的关系。 嗯...我看到,观察者的角色确实没有解释。我想我会在一段时间内删除我的答案。 “因此我的问题的背景是它们与 LiveBindings 的关系。”如果是这种情况,将这些信息放在您的问题中会有所帮助。【参考方案2】:

这里解释了观察者模式的Delphi实现:

http://blogs.teamb.com/joannacarter/2004/06/30/690

我会在有机会查看源代码后立即更新答案并提供更多详细信息。

【讨论】:

这很有趣,但似乎与新的 TComponent.Observers 属性无关【参考方案3】:

Delphi XE7 documentation 现在更深入地了解了Observers 的细节:

Observers 是一个只读属性,它返回添加到的 TObservers TComponent,以便使用由 使用 LiveBindings 或开发人员自己的观察者 目的。

请注意,Fringe 中的Observer 可以在许多Pattern 相关事件的现场看到。


旁注:

观察者还可以检测到 RTL 必须抛出 EProgrammerNotFound exception 的情况。

【讨论】:

以上是关于TComponent 中的 Observers 属性的主要内容,如果未能解决你的问题,请参考以下文章

delphi TComponent类

Delphi之TComponent类

为啥某些 Delphi 组件需要“AOwner: TComponent”来构造它们?

为啥基于 TComponent 的接口实现会泄漏内存?

extjs怎么让一个组件禁用?

Observers: Scaling ZooKeeper Without Hurting Write Performance