我已经定义了一个派生自TCustomPanel
的组件,但有时我不小心在其中添加了一些其他控件。
运行时:
TMyPanel = class(TCustomPanel)
public
//...
end;
设计时间:
procedure Register();
begin
RegisterCustomModule(TCustomPanel, TCustomModule);
RegisterComponents('MyTestComponents', [
TMyPanel
]);
end;
我不希望安装和使用我的组件的人不小心在其中添加其他控件。 当组件的直接子时,如何防止控件被添加到组件中?
重现行为的步骤:
TMyPanel
TMyPanel
时,添加其他控件新控件将添加到面板中。
答案 0 :(得分:4)
可能最简单的方法(可以覆盖)是在其构造函数中设置controlStyle元素,如下所示
interface
uses
VCL.ExtCtrls,
VCL.Controls,
System.Classes;
type
TMyPanel = class(TCustomPanel)
public
constructor Create(AOwner: TComponent); override;
end;
implementation
{ TMyPanel }
constructor TMyPanel.Create(AOwner: TComponent);
begin
inherited;
// ...
ControlStyle := ControlStyle - [ csAcceptsControls ];
end;
如果您希望能够在设计时更改此行为,您还可以发布ControlStyle属性。