另一个来自我的TFrame IDE注册组件问题.感谢所有帮助,其他程序员.:)
在这里玩弄Darrian的TFrame继承建议:
具体细节:
基本上,我有一个基于TFrame的组件,我已经注册到IDE,它工作得非常好.我现在正在开发一些"姐妹"组件,它们将共享大量现有组件的非可视功能和属性.因此,有意义的是将大量的内容移动到父类/超类,然后新组件和旧组件都可以从中继承.
以这种方式"重构"TFrame继承的最佳方法是什么?(这也可能适用于TForm级后代,不确定).有什么需要注意的注意事项和注意事项?
例:
我试过,例如,创建一个新的TFrame,没有任何内容,并调用该框架TMyBaseFrame.然后修改我现有组件的类定义(让我们称之为TMyFrameTreeView)继承而不是TFrame.
它编译得很好,但是当我尝试将其放在表单上时,我得到"ClientHeight not found"(或"找不到ClientHeight属性"),并且它不会丢弃在表单上.从相关的DFM中删除ClientHeight和ClientWidth会造成严重破坏,并且无论如何都会在调整大小时替换它们.我注意到了后代类中的ExplicitHeight和ExplicitWidth,并且我认为这与继承值的属性值覆盖相关,但我不确定.通过New - > Inherited Items重新创建一个全新的框架,然后将所有内容复制过来,也没有取得很好的效果.
最后的说明
我意识到这可能会很快变得混乱,包括流式DFM文件和多代后代等等......这也是我要求整体"注意事项"概念方面的一部分,同时也给出了具体的一部分.现实世界更简单的问题版本(在我看来,应该是可行的).
我已经创建了一个小小的测试软件包来学习尝试,并且我学到了很多东西,但是它很慢,而且德尔福"Jedi Masters"的任何指导/见解都会受到最多的赞赏.:)
稍后回答更新:
以下两个答案都很有帮助.同样,创建一个"基础框架类",它与普通的TFrame没有任何变化,然后在添加任何属性,方法等之前从中继承,这似乎可以极大地稳定继承流.不知道为什么,但到目前为止还有.
除了改变基类TMyFrameTreeView
来TMyBaseFrame
进行更改DFM文件中的第一个字TMyFrameTreeView
从object
到inherited
.