ヘルプ システム オブジェクトの登録

提供: RAD Studio
移動先: 案内検索

アプリケーションでヘルプを使用可能にする への移動

ICustomHelpViewerIExtendedHelpViewerISpecialWinHelpViewerIHelpSelector を実装するヘルプ システム オブジェクトは、ヘルプ マネージャに登録されることで、ヘルプ マネージャが、これらヘルプ システム オブジェクトと通信することができるようになります。

ヘルプ システムオブジェクトをヘルプ マネージャに登録するには、以下の作業が必要です。

  • ヘルプ ビューアの登録
  • ヘルプ セレクタの登録

ヘルプ ビューアの登録

ヘルプ システム オブジェクトの実装を保有するユニットは、System.HelpIntfs を使用しなければなりません。実装ユニットの var セクションで、そのオブジェクトのインスタンスを宣言する必要があります。

実装ユニットの initialization セクションでは、インスタンス変数を割り当て、それを System.HelpIntfs.RegisterViewer 関数に渡さなければなりません。RegisterViewer は、HelpIntfs ユニットからエクスポートされた、フラットなグローバル関数で、ICustomHelpViewer を引数に取り、System.HelpIntfs.IHelpManager を返します。IHelpManager は、後で使用できるように保存しておきます。

たとえば、VCL ライブラリには、Windows の HTMLHelp ヘルプ ビューアをベースにヘルプ ビューアを実装した、Vcl.HtmlHelpViewer ユニットが提供されています。(HTMLHelp 関数については MSDN ライブラリを参照してください)。 Vcl.HtmlHelpViewer ユニットの initialization セクションでは、ヘルプ ビューア インスタンスを作成します。

HelpViewer := THTMLHelpViewer.Create;

ここで、THtmlHelpViewer.Create コンストラクタは HelpViewerIntf ヘルプ ビューア オブジェクトを内部的に生成します。 この THtmlHelpViewer クラスは Vcl.HtmlHelpViewer ユニットの implementation セクションの内部で定義されています。 THtmlHelpViewer クラスには、HelpIntfs に定義されている、ヘルプ ビューアに必要なインターフェイスがすべて実装されています。 生成されたオブジェクトは HelpViewer 変数に保存されます。 次の行では、グローバル関数 System.HelpIntfs.RegisterViewer を呼び出し、作成した HelpViewerIntf ヘルプ ビューア オブジェクトをこの関数に渡しています:

HelpIntfs.RegisterViewer(HelpViewerIntf, HelpViewer.FHelpManager);

RegisterViewer は、作成したヘルプ ビューアを登録し、ヘルプ マネージャ HelpViewer.FHelpManager を返します。 後から、グローバル関数 System.HelpIntfs.GetHelpSystem を他のユニットから呼び出して、登録されたヘルプ ビューアの Help メソッドにアクセスすることができます。 このようにすると、System.HelpIntfs.ICustomHelpViewer インターフェイス(や HelpIntfs の他のインターフェイス)で宣言され THtmlHelpViewer クラスで実装された、すべてのメソッドの実装にアクセスすることができます。

上記のヘルプ ビューアを登録する C++ コードは、たとえば、以下のようになります。

 void InitServices()
 {
     THelpImplementor GlobalClass;
     Global = dynamic_cast<ICustomHelpViewer*>(GlobalClass);
     Global->AddRef;
     HelpIntfs::RegisterViewer(Global, GlobalClass->Manager);
 }
 #pragma startup InitServices

ヘルプ セレクタの登録

オブジェクトの実装を保有するユニットは、VCL Forms を使用しなければなりません。 実装ユニットの var セクションで、そのオブジェクトのインスタンスを宣言する必要があります。

実装ユニットの initialization セクションでは、グローバルな Application オブジェクトの HelpSystem プロパティを介して、ヘルプ セレクタを登録する必要があります。

 Application.HelpSystem.AssignHelpSelector(myHelpSelectorInstance)
 Application->HelpSystem->AssignHelpSelector(myHelpSelectorInstance)

この手続きは値を返しません。

関連項目