【发布时间】:2011-07-06 17:11:12
【问题描述】:
我有一个包含大量事件处理程序的设计和运行时组件。我暂时称它为 TNewComp。我在 TForm 上创建了一个 TNewComp 的实例,并在设计时通过属性编辑器用特定代码填充事件存根,并意识到我希望能够创建使用当前事件处理程序代码集的 TNewcomp 的新实例。
现在为此,我调用 TNewComp 的构造函数,然后“手动”为每个新实例的事件处理程序分配相应的事件存根代码,该存根代码驻留在包含在设计时创建的 TNewComp 实例的表单上。因此,如果我将一个 TNewComp 实例分配给一个名为 TNewForm 的表单上的一个名为 FNewComp 的变量,那么对于每个事件处理程序我都会这样做:
FNewComp.onSomething = TNewform.onSomething
(... repeat for each event handler belonging to TNewComp ...)
这很好用,但是很麻烦,而且更糟糕的是,如果我向 TNewComp 添加一个新的事件处理程序,我必须记住更新我的“newTComp()”函数来分配事件处理程序。为我动态创建新实例的每个唯一组件类型冲洗并重复此过程。
有没有办法自动化这个过程,也许使用属性检查或其他一些 Delphi 6 内省技术?
-- 罗施勒
【问题讨论】:
-
我想我只需使用 Alt+F12 并在 .dfm 文件中快速复制/粘贴。我不确定这是否值得定制工具。
-
@David Hefferman - 我不确定我是否理解您的解决方案在运行时创建新实例时的工作原理,可能很多实例,当实例数量在运行时之前未知并且它们都是通过 TNewComp.Create 在运行时创建。
-
我认为你的问题是在设计时。我不明白为什么现在做你做的事情这么难。您正在考虑的内容需要一些规则来关联事件和处理程序。你有什么考虑?基于名称?
标签: delphi properties introspection event-handling delphi-6