[Notes/Domino] HTMLを動的に表示する方法(2)
前回予告したとおり、今回は WebBrowser コントロール(いわゆるIEコンポーネント)を使用して、HTMLを動的に表示する手順を書いてみます。
実装方法
1. フォームを作成または開いて、WebBrowserコントロールを挿入したいところにカーソルを合わせ、「作成」メニュー → 「オブジェクト」を実行します。
2. 「オブジェクトの作成」ダイアログが表示されますので、「コントロール」を選択し、「オブジェクトの種類」から「Microsoft Web Browser」を選択して、「OK」をクリックします。
3. (省略可)挿入したオブジェクトをうまくフォーカスして、プロパティを表示すると、以下のようなプロパティが表示されます。
- 「名前」は、このオブジェクトにアクセスする際の名前です。
- 「オブジェクトをウィンドウサイズに合わせる」にすると、画面いっぱいに表示されます。
- 「文書の読み込み時にオブジェクトを実行する」にチェックを入れると、読み込みモードでもオブジェクトが有効になります。
4. (省略可)また、下のペインにはコントロールが持っているプロパティとイベントが表示されます。たとえば、プロパティで「Width」の値を変えると、横幅を変更できます。
5. オブジェクトをフォーカスした状態で、下のペインの Navigatecomplete2 に以下のようなスクリプトを記述します。(ここでは例として現在時刻を表示します。)
Source.Document.body.innerHTML = "<strong>" & Cstr(Now) & "</strong>"
6. 以下のようなスクリプトを記述したボタンを作成します。
Dim ws As New NotesUIWorkspace Dim objIE As Variant Set objIE = ws.CurrentDocument.GetObject("Microsoft Web Browser") Call objIE.Navigate2("about:blank")
以上で終了です。プレビューしてボタンをクリックし、現在時刻が動的に表示されることを確認してください。
※ ローカルにファイルを出力してもよいなら、HTMLファイル出力 → Navigate2 でそのファイルを表示(「file//~」を使用)のほうがシンプルでよいですね。また、上記の方法では、コントロール内で「最新の情報に更新」を実行されてしまうと、画面がクリアされてしまいます。それが嫌な場合も、ファイル出力する方法にしたほうがよいです。
サンプルDB
今回もサンプルDBを用意してみました。HTMLのフォームとノーツの文書とで、データをやり取りするサンプルもありますので、興味のある方は見てみてください。
html2.zip (サイズ = 約36KB。F-Secure Internet Security 2010 にてウイルスチェック済み)
留意事項
この方法では外部のコントロールを使用しますので、文書の読み込み速度が遅くなります。R8 のスタンダード版だと速い場合もあるようですが(会社のマシン(R8.0.2 FP2)だと違和感無いくらい速かったです)、基本的には速度は期待しないほうがよいでしょう。
また、当然のことながらレンダリングなどはIEに依存します。IEのバージョンが変わったら、いちいち検証しなければならないです。そういう意味で、あまりおすすめな方法ではありません。
ただ、IEでできることはほとんどできてしまいますから、ノーツクライアントでどうしてもリッチな表現をしたい場合や、内輪で使う程度のアプリでは有用かもしれません。
# あ、あとどうでもいいですが、前回のエントリのタイトルをこっそり変えておきました(^^;
コメント
コメントはありません
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。