您好,我正在开发一个 TControl 的子类,我们称之为 THTMLBaseControl。在运行时,该控件仅基于其设置生成和输出 HTML 代码,因此基本的 TControl 类和方法,包括 Windows 消息系统,在运行时并未被使用,却会导致内存开销。
我需要该控件从 TControl 继承,以便在设计时可以使用所有 IDE 设计器工具。
但是在运行时,几乎所有那些在设计时需要的属性都不需要了。
我还将所有控件都继承自 THTMLBaseControl,因此对于每个控件类创建一个包装器类不是一个选项,因为这将大量重复代码。
所以我需要的是,在实例化类之前,在运行时更改父类,使其基于另一个类(可能名为 TmyBaseControl),该类继承自 "TComponent",就像 TControl 做的那样,但它不会有 TControl 的所有内存开销,只有 THTMLBaseControl 所需的属性和方法。
我真的没有 GUI 在 rutime 是一个仅提供 HTML 的 Web 服务器,这是 intraweb 和 Raudus 所做的事情,但问题始终是所有基于 TControl,因此必须在运行时创建并生成大量不使用的内存和处理开销。也许有一种解决方案,使在运行时实例化的任何 THTMlBaseControl 子类都将继承自 TmyBaseControl 的所有属性和方法,而不是从 TControl 继承。
我已经看到有一些方法可以破解 VMT,但也许还有其他解决方案,我还没有看到。我已经完成了更改 NewInstance、ClassParent 和 TnstanceSize 类方法,但我必须指定从哪个类开始,并且显然,我必须为每个继承的 THTMLBaseControl 类执行相同的步骤。
为了大家的利益:
这只是一个疑问,我需要组件像 TEdit、TPanel 那样成为控件,并且可以由设计 IDE 可见和可编辑。我甚至可以创建自己的 TControl 类,但我只是在想是否可以重用已经存在的代码。
谢谢
TComponent
派生类的属性会显示在设计器中吗? - David Heffernan