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上で右クリックするとポップアップが入れ替わっている。
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上で右クリックするとポップアップが入れ替わっている。