how do I create a TCustomControl that will behave like Tpanel? eg My开发者_运维百科CustomComponent, that I can drop components in like labels, images etc.
The trick is this piece of code in TCustomPanel:
constructor TCustomPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := [csAcceptsControls {, ... } ];
//...
end;
There are many more VCL controls you can descend from that have csAcceptsControls
in their ControlStyle
property.
If you want to do this in your own controls, but do not descend from such a VCL control, then you should do something like this:
- Override the Create constructor
- Add
csAcceptsControls
to theControlStyle
property
Like this sample code:
//MMWIN:MEMBERSCOPY
unit _MM_Copy_Buffer_;
interface
type
TMyCustomControl = class(TSomeControl)
public
constructor Create(AOwner: TComponent); override;
end;
implementation
{ TMyCustomControl }
constructor TMyCustomControl.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle + [csAcceptsControls {, ...} ];
//...
end;
end.
--jeroen
精彩评论