OZの部屋

なんでも日記です

TWebBrowser のポップアップメニューを入れ替える

2006-11-13 18:09:35 | プログラム
TWebBrowser を使ってポップアップメニューをカスタマイズする方法がわからなかった。
popupmenuプロパティに設定しても何の変化もなし。


やっぱり探せばあるもんだ。
ちゃんと解決方法を公開しているのがありました。
http://www.delphidabbler.com/articles?article=18&part=1

ここのPart6の中ほどにDownload the demo codeがあるので、サンプルを落として
Phase2 フォルダのなかの
IntfDocHostUIHandler.pas
UContainer.pas
IntfDocHostUIHandler.pas
を自分のコンパイルしたいプロジェクトにおいて
UsesにUContainerを追加


適当にpopupmenu を作る。(あとでこの中身が問題になるけど)
TWebBrowser のプロパティ
popupMenu に作成したpopupmenu を指定する。

フォームクラスの private に
fWBContainer: TWBContainer;

FormCreateで
procedure TForm1.FormCreate(Sender: TObject);
begin
fWBContainer := TWBContainer.Create(WebBrowser1);
fWBContainer.UseCustomCtxMenu := True; // use our popup menu
fWBContainer.Show3DBorder := False; // no border
fWBContainer.ShowScrollBars := False; // no scroll bars
fWBContainer.AllowTextSelection := False; // no text selection (**)
// fWBContainer.CSS := FmtCSS; // CSS to be used
サンプルではCSS使っているが。


FormDestroyでは
procedure TForm1.FormDestroy(Sender: TObject);
begin
fWBContainer.Free; // free the container pbject


これでコンパイル、実行。
WebBrowser上で右クリックするとポップアップが入れ替わっている。