我需要修改一个组件的功能。当你收到“无法覆盖此内容”的消息或者需要更改私有方法中的代码(“基类中不存在该方法”消息),使得无法继承组件时,你应该怎么办?
我需要修改一个组件的功能。当你收到“无法覆盖此内容”的消息或者需要更改私有方法中的代码(“基类中不存在该方法”消息),使得无法继承组件时,你应该怎么办?
永远不要忘记为单元提供不同的名称,也为组件提供不同的名称(可能继承自原始组件或其祖先,以便它们保持在同一层次结构中)。千万不要修改原始源代码,然后重新编译VCL。这是维护的噩梦。
我不是interposer类的粉丝,即与原始类相同但具有不同行为的类,继承自原始类。他们的功能取决于在uses子句中的包含顺序,这似乎对我来说有些脆弱。我不建议这样做。
但是,我所做的很大程度上取决于问题。我认为不能(或不应该)给出覆盖所有情况的普遍建议。
但是我的主要建议是:不要修改原始单元,始终将新代码放在一个新单元中并使用新类名称。这样,原始版本和修改版本可以在IDE中平稳共存。