小编fdu*_*nas的帖子

如何在Delphi中在运行时更改继承类的父类?

嗨我正在开发一个TControl后代,让它命名为THTMLBaseControl,在运行时控件只根据该控件的设置生成和输出HTML代码,因此基本TControl类和方法的所有附加属性,包括Windows Messaging系统是真的没有在运行时使用并导致内存开销.

我需要从TControl继承该控件,因此在设计时我可以使用所有IDE设计器的东西.

但是在运行时几乎所有需要时间的属性都不需要它们.

我还有从THTMLBaseControl继承的所有控件,因此每个控件类创建一个包装类不是一个选项,因为它会重复复制代码.

所以我需要的是在运行时,在实例化类之前,我可以更改父类,以便它将基于另一个类似TControl的类进行实例化,可能名为TmyBaseControl继承自"TComponent"作为TControl,但不会拥有所有TControl内存开销,只有我的THTMLBaseControl所需的属性和方法.

我真的没有在rutime的GUI是一个只提供HTML的Web服务器,是intraweb和Raudus所做的一件事,但总是问题是所有都基于TControl,所以它们必须在运行时创建并生成很多内存和进程开销没有使用.也许有一个解决方案,所以在运行时实例化的任何THTMlBaseControl后代将继承TmyBaseControl的所有属性和方法,而不是TControl.

我已经看到有办法破解VMT,但也许有其他解决方案,但没有看到它.我已经完成了更改NewInstance,ClassParent和TnstanceSize类的方法,但我必须指定从哪个类,显然我必须为每个继承的THTMLBaseControl类执行相同的步骤

并且为了所有人:这只是一个疑问,我需要像TEdit,TPanel这样的控制组件,设计器IDE可见和可编辑我甚至可以创建我自己的TControl类但我只是想我是否可以重用代码已存在.

问候

delphi inheritance parent

2
推荐指数
1
解决办法
768
查看次数

标签 统计

delphi ×1

inheritance ×1

parent ×1