手続き・関数をメソッドにする方法

ども、Norimakiです。

ネットには色々と有益な情報を提供してくれるサイトが多数あります。
そんなサイトをNorimaki基準でピックアップしてみました。

今回のお役立ち情報はこちら。

らいなタンさんの「全力わはー」より

関数ポインタとメソッドポインタの相互代入のおはなし。
http://d.hatena.ne.jp/tales/20121205/1354636256

の、「手続き・関数をメソッドに」です。

ちょっと引用します。

コンソールアプリケーションで何らかのクラスにイベントハンドラを指定したい時などはTFormのようなメインクラスにあたるものがないので、

仕方なくTObjectを継承した即席クラスにメソッドを書いてそれを突っ込んでいるコードをたまに見ますが、これを使うとその必要がないのでちょっとだけ便利と言えば便利です。

まさにこれ。

コンソールアプリケーションではないんですが、
イベントハンドラに何らかの処理をさせたくて処理コードを書くんですが、
手続きで書いてるからイベントハンドラに指定できないと。

なもんで、ダミーのクラスを作って、
そこにメソッドとして書いてイベントハンドラに充てていると。

やってました。コレ。

これでうまいこと行きます。
ありがとうございました。

ということで、やり方ですが、
引用させていただきます。

procedure OnChange(Self: TObject; Sender: TEdit);
begin
ShowMessage(Sender.Text);
end;

var  method: TMethod;
begin
method.Code := @OnChange;
method.Data := nil;
Edit1.OnChange := TNotifyEvent(method);
end;

うむ。シンプル。

素晴らしいですな。

ではでは。
Norimakiでした。

※らいなタンさんって「らいな」さんだっていう話も耳にしたんですが。
 らいなさんの方がいいのかな?

シェアする

  • このエントリーをはてなブックマークに追加

フォローする