3

から派生した独自のコントロールがあり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フォーカスをキャプチャします。

設計時に子コントロールを完全に無効にする方法は?

マウス/キーボードメッセージへの応答を停止してほしい。デザイン時にそれらをクリックするときに、親コントロールを選択してドラッグする必要があります。

4

1 に答える 1

6

Self編集コンストラクターの所有者として使用して、パネルの編集サブコンポーネントを作成し、パネルにその破棄を処理させます。また、サブコンポーネントごとにパラメータをTrueに設定しSetSubComponentて関数を呼び出し、パネルコントロールを構造ペインに1つとして表示します。IsSubComponent

constructor TMyControl.Create(AOwner: TComponent);
begin
  ...
  FEditor := TEdit.Create(Self);
  FEditor.SetSubComponent(True);
  FEditor.Parent := Self;
  ...
end;
于 2012-06-26T14:52:17.920 に答える