当前位置:  开发笔记 > 编程语言 > 正文

TFrame继承重构

如何解决《TFrame继承重构》经验,为你挑选了1个好方法。

另一个来自我的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没有任何变化,然后在添加任何属性,方法等之前从中继承,这似乎可以极大地稳定继承流.不知道为什么,但到目前为止还有.



1> 小智..:

除了改变基类TMyFrameTreeViewTMyBaseFrame进行更改DFM文件中的第一个字TMyFrameTreeViewobjectinherited.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有