【发布时间】:2016-05-19 01:46:10
【问题描述】:
有没有办法通过在子类化组件时重新定义子对象的行为(方法)来修改它们。例如,我是 Tlistbox 的子类,并且我想修改其 Items 子对象的 Delete() 方法的行为。有正式的方法吗? 谢谢
【问题讨论】:
-
Delphi XE 引入了一个
TVirtualMethodInterceptor类,它可以满足您的要求,因为Delete()是虚拟的,但在 Delphi 7 中不存在类似的东西(除非您手动备份它),并且您无权直接访问以不同的实现替换Items对象。你真正想要完成什么?可能有不同的处理方式。 -
我正在添加附加到 items 属性的额外内部信息结构,所以我想将它添加到 objects[] 列表中,在这种情况下我必须限制使用 items.add ( ) 以防止在没有新信息的情况下输入字符串,或者制作单独的 tstrings 对象并重新定义 items.add 和 items.delete 以同步两个 tstrings 对象。