为Delphi制作可编辑的designtime组件

为Delphi制作可编辑的designtime组件,delphi,components,pascal,design-time,Delphi,Components,Pascal,Design Time,我一直在互联网上寻找答案,但我找不到答案 我想做的是创建一个组件,在设计时,我可以向其中添加组件,移动它们,右键单击它们以弹出菜单,更改它们的属性,等等 例如,我将我的组件“A”(基于Graphics32库中的TImage32),然后我希望能够将组件“B”(基于TBitmap32)放到A中,但是,由于B不是从标准VCL继承的,如TPanel我不知道如何制作设计时组件。您要搜索的是创建父/子关系的能力。父对象充当容器,子对象包含在容器的边界内。TPanel是容器的典型示例。任何可视组件都可以是子组

我一直在互联网上寻找答案,但我找不到答案

我想做的是创建一个组件,在设计时,我可以向其中添加组件,移动它们,右键单击它们以弹出菜单,更改它们的属性,等等


例如,我将我的组件“A”(基于Graphics32库中的
TImage32
),然后我希望能够将组件“B”(基于
TBitmap32
)放到A中,但是,由于B不是从标准VCL继承的,如
TPanel
我不知道如何制作设计时组件。

您要搜索的是创建父/子关系的能力。父对象充当容器,子对象包含在容器的边界内。
TPanel
是容器的典型示例。任何可视组件都可以是子组件

就祖先而言,父项必须从
TWinControl
派生,子项必须从
TControl
派生。实际上,您很少直接从这些类派生,而是从它们的后代派生。如果我没有记错的话,另一个因素是父控件必须在其内部包含
csAcceptsControls

现在,
TImage32
确实源自
TWinControl
,因此它可以充当容器。但是,我不确定
csAcceptsControls
是否包含在
TImage32
ControlStyle

我对TImage32真的不太熟悉,也不知道它是否可以充当家长。我怀疑它不是被设计成一个容器。如果是这种情况,则可以将
csAcceptsControls
添加到派生类的构造函数中的
ControlStyle
,并使该控件充当父控件

我怀疑如果
TImage32
不包括
csaccepts控件
,那么这是设计上的,图像控件不应充当父控件

显然,与VCL
TImage
不同,TImage 32确实能够充当其他控件的父控件


至于您问题中的另一个控件,
TBitmap32
不是从
TControl
派生的,不能是子控件。

a是从TcustomControl派生的,因此可以很好地充当容器。问题是B不是从TControl派生的,因此不适合OP想要做的事情。。。需要对你指出的事情做一些研究。@iamjoosy谢谢你。事实上,我怀疑它可能更复杂。我有一种感觉,TImage32不接受孩子。然而,有点像大卫说的。我想做的是在这个父对象中有一个父对象和子对象。我发现很难描述我的项目是什么,但简而言之,我制作了一个库,它允许你创建一个父项目并在其中包含子项目,但它都是在运行时完成的,我希望在设计时也能使用它。但是,在designtime中使用时,它不必实时运行,我只想让开发人员看到正在发生的事情的一个草稿示例。@xaid谁说过在
TImage32
?鼠标事件从何而来?您的问题似乎与父母/子女关系有关。我现在很困惑。你到底想要什么?1) 将“A”组件转换为类似TPanel的容器的变通方法,或2)将“A”组件功能扩展到embbed A(集合?“B”组件或3)编写高级组件编辑器?