如何将两个VCL组件合并在一起,以便我可以访问它们的两个属性?
例如,我想将TImage
和TPanel
合并为一个,我要求TPanel
是基本组件,因此TImage
将是子级到TPanel
。
是否可以这样做?
我一直试图通过Component>在Delphi 2010中做到这一点。新的VCL组件,但当我需要可视组件时,它会创建非可视组件。
我该怎么做才能改变这个?
答案 0 :(得分:5)
如果我理解正确,我认为您想要将两个组件合并在一起并公开两者的属性?
如果这是您正在寻找的,我问了一个类似的问题,一起加入TImage和TScrollBox,可以在这里找到:
Component Creation - Joining Components Together?
SetSubComponent是实现这一目标的关键,在阅读上述链接中的评论和答案时可能值得了解更多信息。
答案 1 :(得分:3)
你提出的建议听起来有点奇怪。 TPanel
和TImage
都有自己的视觉表面。我能想象的唯一合理的事情是你可以让TImage
成为TPanel
的孩子。从TPanel
派生一个新组件。该组件将创建并拥有TImage
。使TImage
子控件的父级成为面板。您希望在控件中显示的TImage
控件的任何属性和事件都必须手动完成。这是构成而不是继承。
答案 2 :(得分:1)
您可以使用TFrame
在设计时创建存在其他可视组件的组件,例如一个TPanel
,上面有TImage
。这可能不是您想要的:属性没有“合并”在一起,您必须设计自己的属性和方法,以使这个新创建的组件按照您的意愿运行。您需要的功能(根据鼠标的位置更改视觉功能)只需在框架中构建一次。