既存のコントロールの変更
コンポーネント作成の詳細:インデックス への移動
コンポーネントを作成する最も簡単な方法は,既存のコンポーネントをカスタマイズする方法です。新しいコンポーネントは,コンポーネントライブラリに提供されているどのコンポーネントからも派生させることができます。
リストボックスやグリッドのようなコントロールには,共通の基本的な機能を持ついくつかのバリエーションがあります。コンポーネントライブラリにはこれらに対応した抽象クラスがあります。抽象クラスは,新しくカスタマイズしたコンポーネントの派生元として使用できます。なお,VCL の抽象クラスの名前には,TCustomGrid のように「Custom」という文字列を入れます。
たとえば,標準の TListBox クラスのプロパティからいくつかを除いて,特別なリストボックスを作成するとします。上位クラスから継承したプロパティを除去する(隠蔽する)ことはできないので,TListBox より上位の階層のクラスからそのコンポーネントを派生させます。この場合,TWinControl クラスまで戻ってしまうと,リストボックスの機能を再びすべて作成しなければなりません。そのため,コンポーネントライブラリには,TCustomListBox が提供されています。この TCustomListBox には,リストボックスのためのプロパティがあります。ただし,そのすべてがパブリッシュに設定されているわけではありません。TCustomListBox などのような抽象クラスからコンポーネントを派生させる場合は,開発するコンポーネントで使用するプロパティだけをパブリッシュに設定し,その他のプロパティはプロテクト設定のまま残します。
継承プロパティをパブリッシュに設定する詳細については,「プロパティの作成」を参照してください。「既存のコンポーネントの変更」および「グリッドのカスタマイズ」には,既存のコントロールの変更例があります。