IExtendedHelpViewer の実装
ヘルプ システムのインターフェイス への移動
System.HelpIntfs.ICustomHelpViewer では、キーワード ベースのヘルプのみを直接サポートしています。一部のヘルプ システム(特に HTMLHelp など)では、ヘルプ システムの内部で(したがって、アプリケーションからは見えない形で)番号(コンテキスト ID)とヘルプ トピックを関連付けることにより動作します。このようなヘルプ システムの場合、アプリケーションでコンテキスト ベースのヘルプがサポートされている必要があります。このヘルプでは、アプリケーションが、キーワード文字列ではなくコンテキスト ID 番号でヘルプ システムを呼び出し、ヘルプ システムがそのコンテキスト ID 番号そのものをヘルプに変換します。
アプリケーションでは、ICustomHelpViewer を実装するオブジェクトを System.HelpIntfs.IExtendedHelpViewer も実装するように拡張することにより、コンテキストベースのヘルプを必要としているシステムと通信できます。IExtendedHelpViewer では、ユーザーがキーワード検索を使用するのではなく概要トピックに直接ジャンプできるヘルプ システムとの通信もサポートしています。
IExtendedHelpViewer では次の 4 つの関数を公開しています。
- UnderstandsContext と DisplayHelpByContext はコンテキストベース ヘルプのサポートに使用されます。
- UnderstandsTopic と DisplayTopic はトピックのサポートに使用されます。
アプリケーションのユーザーが F1 キーを押すと、ヘルプ マネージャは次の関数を呼び出し、
UnderstandsContext(const ContextID: Integer; const HelpFileName: String): Boolean
int __fastcall UnderstandsContext(const int ContextID, UnicodeString HelpFileName)
現在アクティブになっているコントロールは、キーワードベースではなくコンテキストベースのヘルプをサポートします。ICustomHelpViewer.UnderstandsKeyword の場合と同様に、ヘルプ マネージャは登録済みのすべてのヘルプ ビューアに順次問い合わせます。ただし、ICustomHelpViewer.UnderstandsKeyword の場合とは異なり、指定されたコンテキストをサポートしているビューアが複数存在する場合は、そのうちの最初に登録されたビューアが呼び出されます。
ヘルプ マネージャは次の関数を、
DisplayHelpByContext(const ContextID: Integer; const HelpFileName: String)
void __fastcall DisplayHelpByContext(const int ContextID, UnicodeString HelpFileName)
登録済みのヘルプ ビューアをポーリングしたあとに呼び出します。
トピックをサポートする関数も同じように動作します。
UnderstandsTopic(const Topic: String): Boolean
bool __fastcall UnderstandsTopic(const UnicodeString Topic)
この関数は、ヘルプ ビューアを順次ポーリングし、指定の Topic 文字列と一致するトピック名をサポートしているかどうかを問い合わせるのに使用されます。
DisplayTopic(const Topic: String)
void __fastcall DisplayTopic(const UnicodeString Topic)
この関数は、指定された Topic と一致するトピック名のヘルプ トピックを提供できると最初に報告してきた登録済みビューアを呼び出すのに使用されます。