我希望能够限制创建组件的位置。
例如,TMyChild可能是TButton,而TMyParent可能是TPanel, 当我将MyChild放到其他组件上时,我希望MyChild检查是否 它是在TMyParent / TPanel中创建的。
如果是,那么好吧,如果它不是在TMyParent / TPanel中创建的那么就取消它然后取消 TMyChild创建并显示一条消息,上面写着:“抱歉,MyChild需要在MyParent中创建!”。
谢谢!
答案 0 :(得分:9)
您必须覆盖Controls.TControl.SetParent方法。
TMyChild = class(TControl)
protected
procedure SetParent(AParent: TWinControl); override;
end;
procedure TMyChild.SetParent(AParent: TWinControl);
begin
if (AParent <> nil) then
begin
if not (AParent is TMyParent) then
raise Exception.CreateFmt('Sorry, MyChild needs to be created in MyParent!', [ClassName]);
end;
inherited;
end;