8 Accessデータベースからのヘルプ表示

ここまでは、HTMLヘルプファイル(.CHM)自体の作り方について説明してきました。これで、エクスプローラなどからHTMLヘルプファイルを直接開いて、ヘルプを表示させることができます。しかし、ここまでできたら、Accessデータベースからも呼び出して使えるようにしたいものです。Accessのフォームには、ヘルプファイルをより簡便につかうためのプロパティが用意されています。「ヘルプファイル」プロパティ「ヘルプコンテキストID」プロパティです。この2つのプロパティを使って、今回作ったヘルプファイルをデータベースのフォームから直接表示できるようにしてみましょう。

まず、HTMLヘルプをAccessのフォームから呼び出して使うためには、ヘルプファイル側の設定が必要となります。プロジェクトに登録されたHTMLファイル個々に「ヘルプコンテキストID」を割り振らなければなりません。例えば、「tsdochelp_01.htm」の内容は「1」、「tsdochelp_02.htm」の内容は「2」というように、HTMLファイル名とユニークな任意の番号を関連付けするのです。それなら、

    tsdochelp_01.htm → 1
    tsdochelp_02.htm → 2
    tsdochelp_03.htm → 3
            ・
            ・

というようなデータを作ればよさそうですが、この関連付けは2段階で行わなければなりません。例えば次のようになります。ここでの「IDH_Topic・・・・」という部分(これを「トピックID」といいます)は適当な名前でかまいませんが、ユニークでなければなりません。

    tsdochelp_01.htm → IDH_Topic1→ 1
    tsdochelp_02.htm → IDH_Topic2→ 2
    tsdochelp_03.htm → IDH_Topic3→ 3
            ・
            ・

これらの2段階の関連付けは、それぞれ別に設定を行います。

まず、「IDH_Topic1→ 1」の関係は「マップ」と呼ばれ、事前にテキストファイルとして用意しておかなければなりません。一方、「tsdochelp_01.htm → IDH_Topic1」の部分の関係は「エイリアス」と呼ばれ、HHWで個々に設定していくことができます。しかし、これについても外部のテキストファイルを読み込んで設定することができますので、ここではマップとエイリアス両方をテキストファイルとして作成しておきます。以下にそれぞれの内容を示します。どちらも同じように2つの値を関連付けするのですが、エイリアスの方は「=」を使い、マップの方は「#define」という識別子を用います。以下の例では、最終的に、tsdochelp_00.htm に「2000」というコンテキストIDが割り振られることになります。
【エイリアス】・・・・・ファイル名を"Alias.h"としました。

    IDH_Topic00=tsdochelp_00.htm
    IDH_Topic01=tsdochelp_01.htm
    IDH_Topic02=tsdochelp_02.htm
    IDH_Topic03=tsdochelp_03.htm
    IDH_Topic04=tsdochelp_04.htm
    IDH_Topic05=tsdochelp_05.htm
            ・
            ・
【マップ】・・・・・ファイル名を"Map.h"としました。

    #define IDH_Topic00 2000
    #define IDH_Topic01 2001
    #define IDH_Topic02 2002
    #define IDH_Topic03 2003
    #define IDH_Topic04 2004
    #define IDH_Topic05 2005
            ・
            ・


2つのファイルの準備ができたら、次のような手順でそれらをHHWのプロジェクトに追加します。
  1. [Project]タブの上から4つ目のボタン[HtmlHelp API information]をクリックします。

  2. ダイアログが表示されると、[Map]タブが初期表示されていますので、先ほど作ったマップファイル"Map.h"をまず取り込んでみます。[Header file…]ボタンをクリックして"Map.h"を指定します。




  3. 続いて、同じダイアログの[Alias]タブを選択します。今度は[Include…]ボタンをクリックして"Alias.h"を指定します。



これで、正常にコンパイルが完了すれば、HTMLヘルプファイル側の準備は完了です。

最後に、Accessのフォーム側の設定を行います。「ヘルプファイル」プロパティには、今回作成したヘルプファイル名"TsDoc2000.CHM"を、また「ヘルプコンテキストID」プロパティには、エイリアスおよびマッピングを参考し、そのフォームに関連したトピックID番号を指定します。



フォームが"フォームビュー"や"データシートビュー"で表示されている状態で、F1キーを押してみてください。F1キーはWindows既定のヘルプ表示用のファンクションキーです。これによって指定したヘルプのトピックが表示されるはずです。

ところが、実際にこれを実行してみると、オリジナルのヘルプの目次ならびにトピックは正しく表示されるのですが、ウィンドウのタイトルは「Microsoft Access のヘルプ」です。キーワードの検索の内容もAccessのものになっています。これは、今回取り上げなかったHHWのオプションで何らかの項目が不足しているのか、あるいは「ヘルプファイル」プロパティに何かをさらに追加指定しなければならないのか、原因は不明です。ただし、"hhctrl.ocx"に含まれる「HtmlHelp」関数をAPI呼び出しによって呼び出すことによってヘルプを表示させる方法を用いれば、この問題は解決されるようです。これについては、マニュアルの内容をここに載せるわけにはいきませんので、「Microsoft(R) Office2000/Visual Basic プログラマーズガイド」を参照してみてください。Office2000 Developer CD ROMの「ODETools\V9\SAmples\OPG\Samples\CH13」には、そのサンプルコードも収められています。

最後に.....
今回取り上げたHTMLの内容やHHWの機能は、ほんの一握りの機能に過ぎません。HTMLという言語体系自体にもさまざまな機能や拡張仕様がありますし、HTMLヘルプファイルとしてもさまざまな技法が存在します。これらは凝ればきりがないのですが、今回のAccess Studyの内容をベースに、みなさんのソフトにもぜひ付加価値の高い「ヘルプ」機能を装備してみてください。


| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved