我的另一个 TFrame IDE 注册组件问题。感谢所有的帮助,各位程序员。:)
在这里玩 Darrian 的 TFrame 继承建议:
规格:
基本上,我有一个已注册到 IDE 的基于 TFrame 的组件,它运行良好。我现在正在开发一些“姐妹”组件,它们将共享大量现有组件的非可视功能和属性。因此,将其中的大部分内容移至新旧组件都可以继承的父/超类是有道理的。
以这种方式“重构” TFrame 继承的最佳方法是什么?(这也可能适用于 TForm 类的后代,不确定)。有哪些注意事项和注意事项?
例子:
例如,我尝试创建一个没有任何内容的新 TFrame,然后调用该框架 TMyBaseFrame。然后修改了我现有组件的类定义(我们称之为 TMyFrameTreeView)以继承自该组件而不是 TFrame。
它编译得很好,但是当我尝试将它放在表单上时,我得到“找不到 ClientHeight”(或“找不到 ClientHeight 属性”),并且它不会放在表单上。从相关的 DFM 中删除 ClientHeight 和 ClientWidth 造成了严重破坏,并且最终在调整大小时被替换。我注意到后代类中的 ExplicitHeight 和 ExplicitWidth ,并且我认为这与继承值的属性值覆盖有关,但不确定。通过 New -> Inherited Items 重新创建一个全新的框架,然后复制所有内容,也没有产生很好的结果。
最后说明
我意识到这可能会很快变得一团糟,流式传输 DFM 文件和多代后代等......这也是我要求整体“需要注意的事项”概念方面的部分原因,但也给出了具体的现实世界中更简单的问题版本(在我看来,这应该是可行的)。
我已经创建了一个小测试包来破解学习尝试,并且正在学习很多东西,但它进展缓慢,并且您的德尔福“绝地大师”的任何指导/见解将非常感激。:)
稍后回复更新:
下面的两个答案都很有帮助。同样,创建一个与普通 TFrame 没有任何变化的“基本框架类”,然后在添加任何属性、方法等之前从它继承,似乎可以极大地稳定继承流。不知道为什么,但到目前为止。