Takenoff Labs

Lotus Notes/Domino に関する Tips や、クラシックの名曲などを紹介します

[Notes/Domino] HTMLを動的に表示する方法(2)

前回予告したとおり、今回は WebBrowser コントロール(いわゆるIEコンポーネント)を使用して、HTMLを動的に表示する手順を書いてみます。

実装方法

1. フォームを作成または開いて、WebBrowserコントロールを挿入したいところにカーソルを合わせ、「作成」メニュー → 「オブジェクト」を実行します。

2. 「オブジェクトの作成」ダイアログが表示されますので、「コントロール」を選択し、「オブジェクトの種類」から「Microsoft Web Browser」を選択して、「OK」をクリックします。

オブジェクトの作成ダイアログ

3. (省略可)挿入したオブジェクトをうまくフォーカスして、プロパティを表示すると、以下のようなプロパティが表示されます。

アプレットのプロパティ

  • 「名前」は、このオブジェクトにアクセスする際の名前です。
  • 「オブジェクトをウィンドウサイズに合わせる」にすると、画面いっぱいに表示されます。
  • 「文書の読み込み時にオブジェクトを実行する」にチェックを入れると、読み込みモードでもオブジェクトが有効になります。

4. (省略可)また、下のペインにはコントロールが持っているプロパティとイベントが表示されます。たとえば、プロパティで「Width」の値を変えると、横幅を変更できます。

WebBrowserコントロールのプロパティ

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でできることはほとんどできてしまいますから、ノーツクライアントでどうしてもリッチな表現をしたい場合や、内輪で使う程度のアプリでは有用かもしれません。

# あ、あとどうでもいいですが、前回のエントリのタイトルをこっそり変えておきました(^^;

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
読み込み中...

トラックバック

トラックバックはありません

コメント

コメントはありません

※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。





(以下のタグが使えます)
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

For spam filtering purposes, please copy the number 5710 to the field below:

^
×