|
Internet ExplorerのActiveX。このTWebBrowserだが、恐ろしいほど使いにくい。今回はこのTWebBrowserを使ってみる。
|
|
いきなりだが、使うのはTWebBrowserではなく、TUIWebBrowserだ。ここで手に入る。これは由木尾 晃氏が作成したコンポーネントで、TWebBrowserの不具合を修正し、大きく拡張されたブラウザコンポーネントだ。TWebBrowserのフォーカス関連やキー入力関連の問題も修復してある。
では、早速以下の問題を解決してみることにする。
|
|
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という名前にしたと仮定する。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