加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 修改VCL组件代码

发布时间:2020-12-15 09:22:38 所属栏目:大数据 来源:网络整理
导读:我需要更改组件中的功能.当你得到一个“你不能覆盖这个”消息,或者你需要在私有方法中更改代码(“基类中不存在方法”消息)时,你会怎么做,使得组件无法下降? 解决方法 如果我遇到这个问题, 我首先尝试从组件或其CustomXXX祖先继承,看看是否能解决问题.如果没
我需要更改组件中的功能.当你得到一个“你不能覆盖这个”消息,或者你需要在私有方法中更改代码(“基类中不存在方法”消息)时,你会怎么做,使得组件无法下降?

解决方法

如果我遇到这个问题,

>我首先尝试从组件或其CustomXXX祖先继承,看看是否能解决问题.如果没有,
>我更深入,即尝试拦截进来的消息.这可以动态完成.如果结果太深,因为必须构建的代码太广泛,或者我仍然需要访问我无法访问的项目,
>我尝试黑客攻击.一个hack是将组件和依赖代码复制到具有不同名称的新单元,重命名组件并修改需要修改的内容.
>有时我只需重做一两种方法就可以使我的新行为成为可能.

永远不要忘记为单元赋予不同的名称,并且组件也可以是不同的名称(可能继承自原始组件或其祖先之一,因此它们保持在同一层次结构中).永远不要修改原始源,然后重新编译VCL.那是一场维护噩梦.

我不喜欢内插器类,即从原始类继承的名称与原始类相同但行为不同的类.它们的功能取决于使用条款中包含的顺序,这对我来说似乎更加脆弱.我不能推荐.

但我做的很大程度上取决于问题.我认为不能(或应该)提供涵盖所有情况的全面建议.

但我的主要建议是:不要修改原始单位,始终将新代码放在新单位中并使用新的类名.这样,原始版本和修改版本可以在IDE中和平共存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读