« WindowsにAptana PydevでDjangoの開発環境を構築する | メイン | ScreenTipsPopupを試してみる »

Delphiのインターセプタークラス(フォームに配置したコントロールに対して機能を拡張する方法)

インターセプタークラス(interceptor class)というおもしろいテクニックが、DELPHI 2009 HANDBOOKで紹介されていました。

このテクニックを使うと、フォームに配置したコントロールに対して機能を拡張することができます。

Buttonなどの既存のコントロールをちょっと拡張したい、
拡張したコントロールは、IDEのフォーム上で配置したい、
でも、わざわざIDEに拡張したコントロールをインストールすることはやりたくない、
そんな悩みを解決します。

方法は簡単です。

例えばTButtonを拡張する場合の方法です。

ベースクラスであるTButtonと同じ名前を持つ派生クラスをフォームユニットに作成します。
ベースクラスは完全名(ユニット名.クラス名)で指定します。

// interceptor class
TButton = class (StdCtrls.TButton)
  //なんらかの拡張をします
end;

TFormAnonButton = class(TForm)
  btnInvoke: TButton;  //拡張したTButtonが使用されます
  …

手軽にできますから、ちょっとした拡張にはとても便利です。

インターセプタークラスがフォームユニットではなく、別のユニットにある場合は、注意が必要です。

インターセプタークラスの定義が別のユニットになる場合、そのユニットは、use文で、ベースクラスを定義しているユニットの後ろに列挙されなければならない

DELPHI 2009 HANDBOOK

インターセプタークラスはおそらく古いDelphiでも使えるテクニックだと思います。

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/946

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2009年04月08日 21:48に投稿されたエントリーのページです。

ひとつ前の投稿は「WindowsにAptana PydevでDjangoの開発環境を構築する」です。

次の投稿は「ScreenTipsPopupを試してみる」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35