HTMLヘルプを作るには通常HTML Help Workshopを使うが、状況依存型のヘルプを作る場合、以下のような手順が必要になる。
[ALIAS]
IDH_MAINWINDOW=mainwindow.html
IDH_OPTIONDIALOG=option.html
#define IDH_MAINWINDOW 100
#define IDH_OPTIONDIALOG 200
[MAP]
#include helptest.h
C/C++なら、"helptest.h"をインクルードすれば以下のように呼び出せるようだ。
HtmlHelp(Handle, HelpFileName,
HH_DISPLAY_TEXT_POPUP, IDH_MAINWINDOW);
しかし、Delphiではヘッダファイルを以下のように書き直さなければならない。
unit helpdef;
interface
const
HLP_IDH_MAINWINDOW = 100;
HLP_IDH_OPTIONDIALOG = 200;
はっきり言ってこんなこと、手作業でやるのはばかばかしい。プログラムにやらせればいいのだ。そのために作ったのがmap2unitだ。
map2unitの遣い方は以下の通り。ちなみにmap2unitはコマンドプロンプトで動くコンソールアプリだ。
map2unit 変換元ヘッダファイル名 変換先ユニットファイル名
コンソールアプリにした理由は、私の自動ビルドプログラムで動かすのに都合がいいからだった。ただ、ラッキーなことに、Delphi2007になってビルドシステムがMS-Buildに変更され、ビルド前と後に任意のコマンドを実行できるようになった。私はビルド前にmap2unitを実行し、helpdef.pasを最新の状態にしてからコンパイルしている。このおかげでヘルプファイルに手を加えても、Delphiプロジェクトでは一切気にする必要がなくなった。