为Delphi制作可编辑的设计时组件

时间:2011-12-20 16:57:00

标签: delphi components pascal design-time

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

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

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

1 个答案:

答案 0 :(得分:2)

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

就祖先而言,父母必须来自TWinControl,而子女必须来自TControl。在实践中,你很少直接从这些类派生出来,而是从他们的一个后代中派生出来。如果我没记错的话,另一个因素是父控件必须在ControlStyle中包含csAcceptsControls

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

我真的不熟悉TImage32,也不知道它是否可以作为父母。我怀疑它不是设计用作容器。如果是这种情况,那么您可以将csAcceptsControls添加到派生类的构造函数中的ControlStyle,并将控件作为父级。

我怀疑如果TImage32不包含csAcceptsControls,那么这是设计的,并且图像控件不应该作为父级。 < / p>

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

至于您问题中的其他控件,TBitmap32不是来自TControl,也不能是儿童控件。