アプリケーションでヘルプを使用可能にする
アプリケーション、コンポーネント、ライブラリの構築:インデックス への移動
- メモ: このセクションで説明されているヘルプ機能のほぼすべてが、Delphi アプリケーションと C++ アプリケーションの両方で、ほとんど同じ方法で使用することができます。
VCL アプリケーションでは、複数ある外部ヘルプ ビューアのいずれかにヘルプ要求を渡すためのオブジェクトベースのメカニズムを使ってヘルプを表示することができます。 そのためには、System.HelpIntfs.ICustomHelpViewer インターフェイス(および必要であればそこから派生したヘルプ システムのインターフェイスの 1 つ)を実装し、自身をグローバルなヘルプ マネージャに登録するクラスを、アプリケーションでインクルードする必要があります。
VCL ライブラリには、Vcl.HtmlHelpViewer ユニットがあります。このユニットの implementation セクションでは内部クラス THtmlHelpViewer を定義していて、そのクラスでこのすべてのインターフェイスが実装され、アプリケーションと Windows の HTMLHelp ヘルプ ビューアとのリンク付けがされます (HTMLHelp 関数については MSDN ライブラリを参照してください)。 Vcl.HtmlHelpViewer ユニットの initialization セクションでは、次のように THtmlHelpViewer クラスのインスタンスを作成しています。
HelpViewer := THTMLHelpViewer.Create; HelpIntfs.RegisterViewer(HelpViewerIntf, HelpViewer.FHelpManager);
この THtmlHelpViewer.Create というコンストラクタの内部では、THtmlHelpViewer
クラスの HelpViewerIntf というヘルプ ビューア オブジェクトが作成されます。 2 行目では、このヘルプ ビューア オブジェクトをグローバル関数 System.HelpIntfs.RegisterViewer に渡しています。この関数は、1 行目で作成したヘルプ ビューアを登録し、HelpViewer.FHelpManager
ヘルプ マネージャを返します。 グローバル関数 System.HelpIntfs.GetHelpSystem を他のユニットから呼び出して、登録されたヘルプ ビューアの Help メソッドにアクセスすることができます。 このようにすると、System.HelpIntfs.ICustomHelpViewer インターフェイス(や HelpIntfs の他のインターフェイス)で宣言され THtmlHelpViewer クラスで実装された、すべてのメソッドの実装にアクセスすることができます。
Delphi および C++ の要件
- Delphi アプリケーションで HTMLHelp ヘルプ ビューアを使用したい場合には、Vcl.HtmlHelpViewer ユニットを、アプリケーションの
uses
句に入れる必要があります。 - C++ アプリケーションでは、
#include Vcl.HtmlHelpViewer.hpp
指令を追加します。
ヘルプ マネージャでは、登録されたビューアのリストを保持し、2 段階の処理でビューアに要求を渡します。 つまり、まず、特定のヘルプ キーワードやコンテキスト ID をサポートできるかを登録されたヘルプ ビューアそれぞれに尋ね、その後、サポートできると回答したヘルプ ビューアにヘルプ要求を渡します。