TWebBrowser
 Internet ExplorerのActiveX。このTWebBrowserだが、恐ろしいほど使いにくい。今回はこのTWebBrowserを使ってみる。
○TUIWebBrowser
 いきなりだが、使うのはTWebBrowserではなく、TUIWebBrowserだ。ここで手に入る。これは由木尾 晃氏が作成したコンポーネントで、TWebBrowserの不具合を修正し、大きく拡張されたブラウザコンポーネントだ。TWebBrowserのフォーカス関連やキー入力関連の問題も修復してある。
 では、早速以下の問題を解決してみることにする。
Windows XPのLunaスタイルに対応する
 TWebBrowserおよびTUIWebBrowserは、*.manifestファイルを作成しただけではLunaスタイルになることはない。余談だが、TGroupBoxなどもオーナードローしているので、Lunaスタイルにはならない。この問題はここVCLXPCtrlsを使えば解決できる。WebBrowser系のコンポーネントは、こういったことが出来ないので、自分で修正する他ない。では、Lunaスタイルに対応する方法を以下に紹介する。  資料によると、DOCHOSTUIFLAG_THEMEというのをテーマ適用すればいいらしい。まずはこのDOCHOSTUIFLAG_THEMEを定義する。UIWebBrowserフォルダに「ieconst.pas」があるはずだ。このファイルの75行目あたりに「DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE = $4000;」というのがあるはずだ。その下に、以下の定数を追加する。

DOCHOSTUIFLAG_THEME = $40000;

 これを定義する。あとは保存して閉じてよい。次にUIWebBrowser.pasだが、160行目あたりに「FIeAutoComplete :boolean;」というのがある。この下に

FIeLunaStyle:Boolean;

 名前は何でもかまわない。今回はこのFIeLunaStyleという名前にしたと仮定する。380行目あたりに

property IeAutoComplete :boolean read FIeAutoComplete write FIeAutoComplete;

 というプロパティの定義があるから、その下に同じようにプロパティを書く。

property IeLunaStyle :boolean read FIeLunaStyle write FIeLunaStyle;

 こうだ。そして最後に、950〜960行目に「if〜」がたくさんある部分で、「if FIeAutoComplete then〜」の下に、以下のように加える。

if FIeLunaStyle then flag:=flag or DOCHOSTUIFLAG_THEME;

 これで終わり。あとはTForm1.FormCreateなどで「UIWebBrowser1.LunaStyle = True;」と書けば、Lunaスタイルになる。

 たまに例外エラーが発生することがある。これについては原因がよくわかっていない。もしわかる方がいたら、メールで知らせて欲しい。


Back
Copyright©2004-2005 gabyou All Rights Reserved.
NOTES Software