Hilfesystemobjekte registrieren

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Hilfesystem-Interfaces


Hilfesystemobjekte, die ICustomHelpViewer, IExtendedHelpViewer, ISpecialWinHelpViewer und IHelpSelector implementieren, müssen beim Hilfe-Manager registriert sein, damit der Hilfe-Manager mit diesen Objekten kommunizieren kann.

Um Hilfesystemobjekte beim Hilfe-Manager zu registrieren, gehen Sie wie folgt vor:

  • Registrieren Sie den Hilfe-Viewer.
  • Registrieren Sie den Hilfeselektor.

Registrieren von Hilfe-Viewern

Die Unit, die die Implementierung der Hilfesystemobjekte enthält, muss System.HelpIntfs verwenden. Eine Instanz des Objekts muss im var-Abschnitt der implementierenden Unit deklariert werden.

Im initialization-Abschnitt der implementierenden Unit muss die Instanzvariable zugewiesen und der Funktion System.HelpIntfs.RegisterViewer übergeben werden. RegisterViewer ist eine einfache, globale, von der Unit HelpIntfs exportierte Funktion, die als Argument einen ICustomHelpViewer übernimmt und einen System.HelpIntfs.IHelpManager zurückgibt. Der IHelpManager sollte für die künftige Verwendung gespeichert werden.

Beispielsweise enthält die VCL-Bibliothek die Unit Vcl.HtmlHelpViewer, die den Hilfe-Viewer auf Basis des Windows-Hilfe-Viewers HTMLHelp implementiert. (Informationen zur Funktion HTMLHelp finden Sie in der MSDN-Bibliothek.) Die Hilfe-Viewer-Instanz wird im initialization-Abschnitt der Unit Vcl.HtmlHelpViewer erstellt.

HelpViewer := THTMLHelpViewer.Create;

Hier erstellt der Konstruktor THTMLHelpViewer.Create intern das Hilfe-Viewer-Objekt HelpViewerIntf. Die Klasse THTMLHelpViewer wird intern im implementation-Abschnitt der Unit Vcl.HtmlHelpViewer definiert. Die Klasse THTMLHelpViewer implementiert alle für den Hilfe-Viewer erforderlichen Interfaces von HelpIntfs. Das erstellte Objekt wird in der Variable HelpViewer gespeichert. In der nächsten Zeile wird die globale Funktion System.HelpIntfs.RegisterViewer aufgerufen und das erstellte Hilfe-Viewer-Objekt HelpViewerIntf an diese Funktion übergeben:

HelpIntfs.RegisterViewer(HelpViewerIntf, HelpViewer.FHelpManager);

RegisterViewer registriert den erstellten Hilfe-Viewer und gibt den Hilfe-Manager HelpViewer.FHelpManager zurück. Später kann die globale Funktion System.HelpIntfs.GetHelpSystem aus anderen Units für den Zugriff auf Hilfemethoden des registrierten Hilfe-Viewers aufgerufen werden. Auf diese Weise können Sie auf Implementierungen aller in dem Interface System.HelpIntfs.ICustomHelpViewer (und in anderen Interfaces von HelpIntfs) deklarierten und in der Klasse THTMLHelpViewer implementierten Methoden zugreifen.

Der entsprechende C++-Code zum Registrieren des besprochenen Hilfe-Viewers kann folgendermaßen lauten:

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

Registrieren der Hilfeselektoren

Die Unit, die die Objektimplementierung enthält, muss VCL Forms verwenden. Eine Instanz des Objekts muss im var-Abschnitt der implementierenden Unit deklariert werden.

Der initialization-Abschnitt der implementierenden Unit muss den Hilfeselektor über die Eigenschaft HelpSystem des globalen Application-Objekts registrieren:

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

Diese Prozedur gibt keinen Wert zurück.

Siehe auch