Delphi 2007 で TSQLQuery を継承したクラスで AfterOpen イベントのコードを変更してみた

Delphi 2007 を利用したデータベースアプリケーションを作るため、いくつかコンポーネントを作っています。
この中で、TSQLQuery や TSQLTable を継承したクラスがあるのですが、 AfterOpen イベント内のコードを変更するプログラムをしてみました。

最初は、単純に新しいコンポーネントを作成して、AfterOpen 手続きを書けば良いと思っていました。

しかし、実際には AfterOpen 手続きは TSQLQuery などのクラスが直で公開しているメンバではありません。

ですので、publish 部で宣言して override; キーワードを付けると言う単純な方法では変更できません。

Delphi のイベントは、そのまま property の一種だと思っていたのが失敗でした。
イベントは、関数ポインタですからね。

知識として知っていたのに、実践が伴っていませんでした。

結局、新たにイベント処理用のメソッドを追加し、イベントプロパティに結びつけることで望んだ動作ができました。

コードはこんな感じです。

[code lang=’delphi’] type
TMySQLQuery = class(TSQLQuery)
procedure DoAfterOpen(DataSet: TDataSet);
public
constructor Create(AOwner:TComponent);override;
published
property AfterOpen;
end;

constructor TKOSQLQuery.Create(AOwner: TComponent);
begin
inherited Create(AOwner);

//AfterOpen イベントに DoAfterOpen メソッドを結びつける
AfterOpen := DoAfterOpen;
end;

procedure TKOSQLQuery.DoAfterOpen(DataSet: TDataSet);
begin
//やりたいこと
end;
[/code]

これまでコンポーネントを作る際、イベントについては触ってなかったんだなぁ、と初めて気づきました。

10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント

【最後まで読んでくれたあなたに】

あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?

私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。

それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。

しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。

そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。

・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!

という方は今すぐ無料でダウンロードしてください。

期間限定で、無料公開しています。

※登録後に表示される利用条件に沿ってご利用ください

コメントを残す