创建时约束组件父级

时间:2012-02-28 06:33:25

标签: delphi components parent creation

我希望能够限制创建组件的位置。

例如,TMyChild可能是TButton,而TMyParent可能是TPanel, 当我将MyChild放到其他组件上时,我希望MyChild检查是否 它是在TMyParent / TPanel中创建的。

如果是,那么好吧,如果它不是在TMyParent / TPanel中创建的那么就取消它然后取消 TMyChild创建并显示一条消息,上面写着:“抱歉,MyChild需要在MyParent中创建!”。

谢谢!

1 个答案:

答案 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;