要在OnBeforeScroll不干扰用户OnBeforeScroll事件处理程序的情况下拦截事件,您需要覆盖每个组件的虚DoBeforeScroll()方法.但是,类助手不能覆盖它所帮助的类的任何虚方法.所以,你必须改为:
编写从要拦截的每个基本组件类派生的新类(type TMyCustomQuery = class(TCustomQuery)等),然后用户必须在其代码中使用这些新的组件类而不是原始组件.
(仅限XE及更高版本)使用Delphi的TVirtualMethodInterceptor类来挂钩DoBeforeScroll()特定组件对象实例的虚方法(而不是类本身),而无需编写任何派生类.
另一种方法是编写一个类,可能是一个Generic类,用户必须为每个组件对象实例实例化,然后该类可以将其关联的组件(可能与RTTI)子类化,以捕获和替换用户的OnBeforeScroll事件处理程序,然后它的事件处理程序可以在需要时调用用户的事件处理程序.
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |