如何在设计时禁用子控件?(How to disable child controls at desi

2019-09-18 13:57发布

我有我自己的控制,来源于TCustomPanel 。 它有一个孩子( TEdit就可以了)。

type
  TMyControl = class(TCustomPanel)
  private
    FEditor: TEdit;
  public
    constructor Create(AOwner: TComponent);
    destructor Destroy(); override;
  end;

  constructor TMyControl.Create(AOwner: TComponent);
  begin
    FEditor := TEdit.Create(nil);
    FEditor.Parent := Self;
  end;

  destructor TMyControl.Destroy(); 
  begin
    FEditor.Free();
  end;

当我点击在设计时子控件,它作为运行时TEdit ,捕捉的焦点。

如何在设计时完全禁用子控件?

我希望他们停止接听鼠标/键盘消息。 当我点击他们在设计时,我想父控件被选定和拖曳。

Answer 1:

使用Self作为所有者在编辑构造, 使您的面板在编辑子组件,并让面板处理其破坏。 并调用SetSubComponent功能与IsSubComponent paremeter设置为True,每个子组件可看到您的面板控制为一体,在结构窗格。

constructor TMyControl.Create(AOwner: TComponent);
begin
  ...
  FEditor := TEdit.Create(Self);
  FEditor.SetSubComponent(True);
  FEditor.Parent := Self;
  ...
end;


文章来源: How to disable child controls at design-time?