名前 題名 ▼ Mr.XRAYさん > クラスの継承,コンポーネントの作成というのは, > Delphi の最大の特徴の1つです. > つまり,既存のクラス,あるいは,コンポーネントを拡張,あるいは,自分自身用 > に改変できるわけです. > > 実は,クラスの継承というのは,皆さんが普段やっています. > 新規にプロジェクトを作成すると, > > type > TForm1 = class(TForm) > private > { Private 宣言 } > public > { Public 宣言 } > end; > > というのができます. > TForm1 というのは,TForm を継承したクラスです. > 普通は,この継承した TForm1 というのを使うわけです. > 同じ考え方で,TButton を継承した TMybutton というクラスの定義を > 追加すると,例えば,次のようになります. > > type > TMyButton = class(TButton) > end; > > TForm1 = class(TForm) > Button1: TButton; > procedure Button1Click(Sender: TObject); > private > { Private 宣言 } > public > { Public 宣言 } > end; > > var > Form1: TForm1; > > implementation > > {$R *.dfm} > > procedure TForm1.Button1Click(Sender: TObject); > var > AButton : TMyButton; > begin > AButton := TMyButton.Create(Self); > AButton.Parent := Self; > end; > > と, TButton を継承した TMyButton というのを定義して, > Button1 をクリックすれば,そのボタンが作成され,フォームに表示されます. > この TMyButton こそが,TButton を継承したクラス,つまりコンポーネントなのです. > これだけなのです. > おそらく,多くの方が,ネット上のサンプルを使用して,同じ様なコードを > 利用しているハズです.気が付かない内に. > > ボタンクリックでは,新しいコンポーネントを実行時に作成しています. > つまり,コンポーネントの実行時生成です. > では,実行時に TButton を生成するのと何が違うのかというと, > > Type で定義した場合,ここに TForm1 と同じ様に,いろいろな変数, > 元の TButton にはないメソッドやプロパティが追加できるのです. > コンポーネントの作成とは,ただ,それだけなのです. > > ただし, > > (1) コンポーネントのパレットに登録して使用可能にするには, > 少しコードの追加が必要 > (2) オブジェクトインスペクタに,追加したプロパティを表示するには, > コードの書き方がある.でも,そんなに難しいことではない. > 難しい方法,手順もある > > もちろん,ネットで公開したりするとなれば,それなりに整備が必要かも知れません. > しかし,自分自身で利用するのであれば,その必要はありません. > > ここまで書いて思うのですが, > 「コンポーネントの作成なんて,ちょっと」とか > 「クラスの継承は,ちょっと」 > とか言う人は,この書き込みのタイトルを見て読んではくれないのでしょうね. > 折角の Delphi の便利な機能です.是非活用したいものです. > > 上のコードの実行例 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link