喫茶XRAYトップページ

[スレッド全体
]

[7502] クラスの継承とコンポーネントの作成返信 削除
2014/4/18 (金) 20:44:51 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 の便利な機能です.是非活用したいものです.

上のコードの実行例

[7503] Re:クラスの継承とコンポーネントの作成返信 削除
2014/4/18 (金) 20:58:25 Mr.XRAY
> とか言う人は,この書き込みのタイトルを見て読んではくれないのでしょうね.

ということで,この続きはありません.

だって,日常会話にだってあるでしょう.
「いや,それは私にはちょっと」
と言われて,
「そんなこと言わずに,やれよ」
ということになったら,生徒や学生だったら「いじめ」になるかも知れないし.
社会人だったらねぇ.
相手が嫌がることを強制するのはよくありません!!


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82