掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TWebBrowserのイベントをどこに置くべきか解りません (ID:34490)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
別にイベント記述をどこか一つに限定する必要はありません。 適材適所で記述したほうが後々わかりやすいと思います。 イベントを横取りする方法は複数ありますので、 今回の例はあくまで私のサンプルです。 このようにするとNavigateComplete2を二か所で記述可能になります。 もっといい書き方があるかもしれませんが、 Delphiのイベントならどんなイベントでも同じ方法で記述可能です。 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw; type TMonaBrowser = class(TWebBrowser) private FOnNavigateCompleteEx2: TWebBrowserNavigateComplete2; property OnNavigateComplete2; protected procedure MonaBrowserNavigateComplete2(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); property OnNavigateComplete2Ex: TWebBrowserNavigateComplete2 read FOnNavigateCompleteEx2 write FOnNavigateCompleteEx2; constructor Create(AOwner: TComponent); override; end; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private 宣言 } WebBrowser1: TMonaBrowser; procedure WebBrowser1NavigateComplete2Ex(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} { TMonaBrowser } constructor TMonaBrowser.Create(AOwner: TComponent); begin inherited; //イベントをトラップ OnNavigateComplete2 := MonaBrowserNavigateComplete2; end; procedure TMonaBrowser.MonaBrowserNavigateComplete2(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin //共通動作が必要な場合ここに記述 ShowMessage('TMonaBrowser.MonaBrowserNavigateComplete2'); if Assigned(FOnNavigateCompleteEx2) then OnNavigateComplete2Ex(ASender,pDisp,URL); end; { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('http://www.google.co.jp/'); end; procedure TForm1.FormCreate(Sender: TObject); begin WebBrowser1 := TMonaBrowser.Create(self); WebBrowser1.SetBounds(0,0,200,200); WebBrowser1.SetParent(self); WebBrowser1.Show; //新しいNavigateComplete2Exイベント WebBrowser1.OnNavigateComplete2Ex := WebBrowser1NavigateComplete2Ex; end; procedure TForm1.WebBrowser1NavigateComplete2Ex(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin ShowMessage('TForm1.WebBrowser1NavigateComplete2Ex'); end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.