3
TCustomPanel
から派生したコンポーネントを定義しましたが、誤って他のコントロールを誤って追加することがありました。TCustomPanelから派生したコンポーネントにコントロールが追加されないようにするにはどうすればいいですか?
ランタイム:
TMyPanel = class(TCustomPanel)
public
//...
end;
設計時:
procedure Register();
begin
RegisterCustomModule(TCustomPanel, TCustomModule);
RegisterComponents('MyTestComponents', [
TMyPanel
]);
end;
私はインストールして、誤ってその中に他のコントロールを追加することができ、私のコンポーネントを使用しています誰がそれを望んでいません。 フォーム/フレームの直接子供の場合、コントロールがコンポーネントに追加されないようにするにはどうすればいいですか?
手順動作を再現する:
TMyPanel
が選択されている間に新しいフォームを作成し- は
に新しいコントロールを別のコントロールを追加し、TMyPanel
TPanelはコンテナなので、これは正常な動作です。このような状況であなたのパネルは何をしたいですか?設計時や実行時にサブコンポーネントを追加したくないと言っていますか? – Dsm
@Dsm:パネル自体をデザインする際に、パネル内に他のコントロールを配置したいと考えています。しかし、フォーム/フレーム内のコンポーネントとしてパネルを使用する場合、パネル内に他のコントロールを配置することはできません。 – ExDev
@ExDev:それは実際には意味がありません。パネルは設計時に常にフォーム/フレーム内にあります。パネルがフォーム/フレームの*直接*子であるときにコントロールを無視したいが、別のコントロールの子であるときにコントロールを受け入れることを希望しない限り、その場合は、1) 'SetParent()'メソッドをオーバーライドし、割り当てられている 'Parent'の型に基づいて' ControlStyle'プロパティの 'csAcceptsControls'フラグをトグルするか、または2) ValidateInsert() 'メソッドを呼び出し、現在の' Parent'がForm/Frameの場合は例外をスローします。 –