我需要更改组件中的功能。当你得到一个“你不能覆盖这个”消息,或者你需要在私有方法中更改代码(“基类中不存在方法”消息)时,你会怎么做,使得组件无法下降?
答案 0 :(得分:4)
在修改私有方法或行为时,有一些(主要是hacky)选项:
message
关键字的方法),即使它们被声明为私有,您也可以替换WndProc 或者你可以得到另一个组件。
答案 1 :(得分:4)
如果我遇到这个问题,
永远不要忘记为单元赋予不同的名称,并且组件也可以是不同的名称(可能继承自原始组件或其祖先之一,因此它们保持在同一层次结构中)。 从不修改原始源,然后重新编译VCL。这是一场维护噩梦。
我不喜欢内插器类,即从原始类中获取相同名称但行为与原始类不同的类。它们的功能取决于使用条款中包含的顺序,这对我来说似乎更加脆弱。我不能推荐。
但我做的很大程度上取决于问题。我认为不能(或应该)提供涵盖所有情况的全面建议。
但我的主要建议是: 不要修改原始单元 ,始终将新代码放在新单元中并使用新类名。这样,原始版本和修改版本可以在IDE中和平共存。