我有一个包含大量事件处理程序的设计和运行时组件。我暂时称它为 TNewComp。我在 TForm 上创建了一个 TNewComp 的实例,并在设计时通过属性编辑器用特定代码填充事件存根,并意识到我希望能够创建使用当前事件处理程序代码集的 TNewcomp 的新实例。
为此,我现在调用 TNewComp 的构造函数,然后“手动”为每个新实例的事件处理程序分配相应的事件存根代码,该存根代码驻留在包含在设计时创建的 TNewComp 实例的表单上。因此,如果我在名为 TNewForm 的表单上将一个 TNewComp 实例分配给名为 FNewComp 的变量,那么对于每个事件处理程序,我会执行以下操作:
FNewComp.onSomething = TNewform.onSomething
(... repeat for each event handler belonging to TNewComp ...)
这很好用,但是很麻烦而且更糟糕的是,如果我向 TNewComp 添加一个新的事件处理程序,我必须记住更新我的“newTComp()”函数以进行事件处理程序分配。为我动态创建新实例的每个独特组件类型冲洗并重复此过程。
有没有办法自动化这个过程,也许使用属性检查或其他一些 Delphi 6 内省技术?
——罗施勒