如何将两个 VCL 组件合并在一起,以便我可以访问它们的两个属性?
例如,我想将 aTImage
和 a合并TPanel
为一个,我要求 theTPanel
是基本组件,因此TImage
将是TPanel
.
是否有可能做到这一点?
我一直在尝试通过 Component > New VCL Component 在 Delphi 2010 中执行此操作,但是当我需要可视组件时它会创建非可视组件。
我能做些什么来改变这一点?
如何将两个 VCL 组件合并在一起,以便我可以访问它们的两个属性?
例如,我想将 aTImage
和 a合并TPanel
为一个,我要求 theTPanel
是基本组件,因此TImage
将是TPanel
.
是否有可能做到这一点?
我一直在尝试通过 Component > New VCL Component 在 Delphi 2010 中执行此操作,但是当我需要可视组件时它会创建非可视组件。
我能做些什么来改变这一点?
如果我理解正确,我认为您想将两个组件合并在一起并公开两者的属性?
如果这是您正在寻找的,我问了一个类似的问题,将 TImage 和 TScrollBox 连接在一起,可以在这里找到:
SetSubComponent 是实现这一目标的关键,可能值得阅读上面链接中的评论和答案以了解更多信息。
Delphi语言不支持实现的多重继承,只支持接口的多重继承。因此,您不能以您希望的方式简单地将两个类合并在一起。
无论如何,您提出的建议听起来有点奇怪。两者TPanel
都有TImage
自己的视觉表面。我能想象的唯一合理的事情是你可以TImage
让TPanel
. 从 派生一个新组件TPanel
。该组件将创建并拥有一个TImage
. 使TImage
子控件的父级成为面板。TImage
您想要在控件中显示的控件的任何属性和事件都必须手动完成。这是组合而不是继承。
您可以使用 aTFrame
创建一个在设计时存在于其他可视组件中的组件,例如TPanel
带有 a 的 a TImage
。这可能不是您想要的:属性没有“合并”在一起,您必须设计自己的属性和方法,以使这个新创建的组件按您希望的方式运行。您想要的功能(根据鼠标的位置改变视觉特征)只需在框架中构建一次。