Integration einer HTML-Hilfe

Zu einer kompletten Anwendung gehört auch eine Onlinehilfe. Mittlerweile gibt es am Markt eine Vielzahl von Tools, die das Erstellen einer Hilfedatei stark vereinfachen. Was jetzt noch fehlt, ist die Integration der Hilfe in Ihre Anwendung. Dieser Beitrag zeigt, wo und wie der Benutzer von Access aus auf die Hilfe zugreifen kann, wie Sie dies realisieren und welche Stolperfallen wie etwa Sicherheitseinstellungen dabei auftauchen können.

Welches Hilfe-Format ist das richtige

Mit Windows 95 wurde 1995 die Hilfe im Format WinHelp (*.hlp) ausgeliefert. Nachteilig an diesem Format ist die insgesamt unübersichtliche Navigation. Das Inhaltsverzeichnis wird in einem gesonderten Fenster dargestellt. Im Extremfall sind bis zu vier Fenster gleichzeitig geöffnet. Außerdem unterstützt Windows Vista dieses Format standardmäßig nicht mehr. Es wird zwar einen Viewer zum Herunterladen geben, Sie können aber nie sicher sein, dass dieser auch installiert ist. Das Standardhilfesystem für Windows ist seit 1997 die HTML-Hilfe (*.chm). Zur Erstellung fasst ein Compiler HTML-Dateien zu einer Hilfedatei zusammen und integriert ein Inhaltsverzeichnis und einen Index. Mit Visual Studio .NET wurde 2002 das teilweise XML-basierte Help 2.0-Format eingeführt. Es ist jedoch nicht geplant, Help 2.0 öffentlich freizugeben. Microsoft empfiehlt, weiterhin die HTML-Hilfe zu verwenden. Für eine aktuelle Onlinehilfe bietet sich also nur das HTML-Hilfe-Format an.

Technische Voraussetzungen

Um eine HTML-Hilfe einsetzen zu können, müssen folgende Voraussetzungen erfüllt sein:

  • MS Office 2000 oder höher
  • Internet Explorer 4.0 oder höher
  • Windows 98 oder Windows 2000 oder höher

Welche Tools gibt es

Es gibt eine Vielzahl von Tools, die Sie bei der Erstellung einer HTML-Hilfe unterstützen. Es sind Freeware- und Shareware-Tools, aber auch kommerzielle Anwendungen zu finden. Einen überblick finden Sie unter [1].

Fast alle Lösungen basieren auf dem HTML Help Workshop von Microsoft [2]. Eine Einführung in dieses Tool liefert der Beitrag Onlinehilfe mit dem HTML Help Workshop (86). Eine Schritt-für-Schritt-Anleitung, wie Sie mit dem HTML Help Workshop eine Hilfe erstellen, ist unter [3] zu finden.

Wer ein etwas komfortableres Tool sucht, ist etwa mit dem Vizacc HelpMaker gut bedient [4].

Hilfekontext-IDs

Damit die Hilfedatei nicht nur geöffnet wird, sondern auch gleich das passende Thema angezeigt werden kann, muss die Hilfedatei entsprechend vorbereitet werden. Sie müssen so genannte Hilfekontext-IDs definieren. Eine Hilfekontext-ID ist ein Zahlenwert, der eine bestimmte Seite in einer Hilfedatei repräsentiert.

Als Hilfekontext-ID können Sie jede beliebige Zahl vom Datentyp Long eintragen. Wie Sie solche Hilfekontext-IDs mit dem HTML Help Workshop definieren, erfahren Sie etwa im Beitrag Onlinehilfe mit Access (Shortlink 88). Mit anderen Tools ist dies weit weniger aufwändig, wie der Screenshot aus Bild 1 vom HelpMaker zeigt.

KontextIDs.gif

Bild 1: Die Bearbeitung der Hilfekontext-IDs mit dem Power-Editor des HelpMakers

Möglichkeiten der Integration

Microsoft beschreibt in [5] eine Vielzahl von Möglichkeiten, um eine Onlinehilfe in eine (Access-)Anwendung zu integrieren.

  • Hilfe an der Oberfläche: Formulare, Berichte und Steuerelemente können auf das Drücken der Taste F1 reagieren und die entsprechende kontextsensitive Hilfe anzeigen. Gleichzeitiges Drücken der Umschalttaste zeigt die Direkthilfe zu Formularen und Steuerelementen an. Auch Menüs können auf die Direkthilfe reagieren.
  • Hilfe im VBA-Code: Die MsgBox-Funktion und auch die InputBox-Funktion lassen sich durch optionale Parameter um eine Hilfeschaltfläche erweitern. Auf diesem Weg können Sie Ihren Anwendern durch zusätzliche Informationen in der Hilfe die richtige Antwort erleichtern. Auch die Raise-Methode des Err-Objekts liefert einen Parameter zur zusätzlichen Eingabe von Informationen zur Hilfe.
  • Hilfe im Objektkatalog: Im Objektkatalog besteht ebenfalls die Möglichkeit, eine individuelle Hilfe aufzurufen. Hilfe im Objektkatalog dürfte dann interessant sein, wenn Sie Code-Komponenten an Dritte weitergeben.
  • Kontextsensitive Hilfe: Die so genannte kontextsensitive Hilfe reagiert auf das Drücken der Taste F1 in Steuerelementen, Formularen und Berichten.

Implementierung

Wenn Sie Ihre Onlinehilfe erstellt und die entsprechenden Hilfekontext-IDs definiert haben, dann sind nur noch zwei Eingaben erforderlich. Wechseln Sie dazu in die Entwurfsansicht des jeweiligen Formulars oder Berichts und aktivieren Sie das Eigenschaftsfenster (F4). Füllen Sie auf der Registerseite Andere die Einträge für Hilfedatei und Hilfekontext-ID mit den entsprechenden Werten (siehe Bild 2). In einem Formular können Sie auch dafür sorgen, dass jedes Steuerelement seine eigene Hilfeseite öffnet. Dazu tragen Sie die jeweilige HilfekontextID in die Eigenschaft des jeweiligen Steuerelements ein.

EigenschaftenFormular.tif

Bild 2: Informationen zur Hilfedatei festlegen

Hilfe startet im Access-Hilfe-Fenster

Wenn Sie jetzt Ihre Anwendung starten und auf die Taste F1 drücken, dann wird Ihre Hilfedatei geöffnet und die gewünschte Seite angezeigt. Wenn Sie aber genauer hinsehen, dann stellen Sie fest, dass Ihre Hilfe im Hilfe-Fenster von Access geöffnet wurde (siehe Bild 3).

HilfeInAccessHilfe.gif

Bild 3: Hilfe wird im Fenster der Access-Hilfe angezeigt

Sie können wahrscheinlich damit leben, dass der Fenstertitel der Hilfe Microsoft Access-Hilfe lautet. Aber leider werden auch der Antwortassistent und der Index aus der Access-Hilfe verwendet. Dieses Verhalten wird von MS im KB-Artikel 275117 bestätigt. Wenn Sie wollen, dass Ihre Hilfe im eigenen Hilfefenster angezeigt wird, dann müssen Sie selbst tätig werden. Dazu müssen Sie die beiden folgenden Fragen klären:

  • Wie wollen Sie Ihre Hilfe aufrufen
  • Wie wollen Sie auf das Drücken der Taste F1 reagieren

Die Hilfe aufrufen

Grundsätzlich haben Sie zwei Möglichkeiten, um Ihre Hilfe aufzurufen – über die HTML-Help-API (s. Listing 1) oder über den Shell-Befehl (s. Listing 2). Der Aufruf der Hilfe über die HTML-Help-API hat den Nachteil, dass Access eventuell abstürzt, wenn man Access schließt und das Hilfe-Fenster noch geöffnet ist. Daher ist es empfehlenswert, den Code für den Aufruf in einem Klassenmodul unterzubringen, in dessen Terminate-Ereignis man eine Anweisung zum Schließen des Hilfefensters einbaut.

Listing 1: Hilfe anzeigen mit der HTML-Help-API

Private Declare Function HtmlHelp Lib "HHCtrl.ocx" Alias "HtmlHelpA" (ByVal hWndCaller As Long, _
     ByVal pszFile As String, ByVal uCommand As Long, dwData As Any) As Long
Public Sub HilfeAnzeigen(strHelpFile As String, lngID As Long)
     Dim hWnd As Long
     hWnd = HtmlHelp(Application.hWndAccessApp, strHelpFile, &HF, ByVal lngID)
End Sub

Listing 2: Hilfe anzeigen mit dem Shell-Befehl

Public Sub HilfeAnzeigen(strHelpFile As String, lngID As Long)
     Shell ("hh -mapid " & lngContextID & " " & strHelpFile), vbNormalFocus
End Sub

Der Aufruf Ihrer Hilfe über den Shell-Befehl hat den Nachteil, dass die Hilfedatei nicht an das Access-Fenster gebunden ist. Wenn Sie also das aufrufende Formular wieder aktivieren, verschwindet das Hilfefenster im Hintergrund. Außerdem wird die Hilfedatei bei jedem Aufruf in einem neuen Fenster angezeigt.

Auf das Drücken von F1 reagieren

Es gibt zwei Möglichkeiten, um auf das Drücken der Taste F1 zu reagieren: per Tastatur-Makro oder über das Ereignis Bei Taste ab der passenden Schaltfläche.

Wie Sie ein Makro erstellen, das auf die Taste F1 reagiert, können Sie im Artikel “Onlinehilfe mit Access” in der Ausgabe 6/2002 nachlesen (Shortlink 88).

Der Vorteil des Tastatur-Makros liegt darin, dass das Makro in der gesamten Anwendung funktioniert. Alternativ können Sie auch Code in das Ereignis Bei Taste ab des Formulars einfügen. (s. Listing 3). Damit Access Ihre Eingabe nicht an das aktive Steuerelement weiterleitet, sondern erst Ihren Code durchläuft, müssen Sie noch die Eigenschaft Tastenvorschau auf Ja einstellen.

Listing 3: Hilfe “Bei Taste ab” aufrufen

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
     Dim strHelpFile As String
     Dim lngContextID As Long
     If (KeyCode = vbKeyF1) And (Shift = 0) Then
         strHelpFile = Application.CurrentProject.Path & "\" & Me.HelpFile
         lngContextID = Me.HelpContextId
         Call HilfeAnzeigen(strHelpFile, lngContextID)
         KeyCode = 0
     End If
End Sub

In dieser Routine wird als Erstes geprüft, ob die Taste F1 gedrückt wurde. Als Nächstes werden die Eigenschaften Helpfile und HelpContextID aus den Eigenschaften des Formulars ausgelesen. Mit diesen Werten wird dann die Funktion zur Anzeige der Hilfe aufgerufen. Am Ende wird noch mit KeyCode = 0 die Tastatureingabe gelöscht.

Direkthilfe

Wenn Sie Shift + F1 drücken oder das Fragezeichen im Fenstertitel anklicken, erscheint neben dem Cursor ein kleines Fragezeichen. Wenn Sie jetzt auf ein Steuerelement klicken, wird Ihnen die so genannte Direkthilfe in einem Popup-Fenster angezeigt.

Implementierung

Um die Direkthilfe zu implementieren, muss in den Eigenschaften des Formulars die Hilfedatei eingetragen werden. Den Eigenschaften des jeweiligen Steuerelements weisen Sie die entsprechende Hilfekontext-ID zu. Außerdem sollte im Formular die Eigenschaft Schaltfläche Direkthilfe auf Ja eingestellt werden.

Kein Direkthilfe-Fenster in Access

Leider funktioniert die Direkthilfe in Access nicht wie erwartet. Wenn Sie die Direkthilfe aktivieren und dann ein Steuerelement anklicken, wird der Text für die Direkthilfe im Fenster der Access-Hilfe angezeigt.

Um die Direkthilfe trotzdem in einem Popup-Fenster anzuzeigen, besteht die Möglichkeit, in der HTML-Hilfe so genannte Text-Popups zu definieren und diese dann mit der HTML-Help-API aufzurufen. Ein Beispiel hierzu finden Sie in der Demo-Datenbank. Diese Textpopups lassen sich allerdings nicht formatieren. Außerdem gibt es pro Steuerelement nur eine Eigenschaft für die Hilfekontext-ID.

Sie können also entweder die kontextsensitive Hilfe (F1) oder die Direkthilfe (Shift + F1) verwenden, aber niemals beide gleichzeitig. Sie müssen auch beachten, dass die Darstellung der -Schaltfläche vom Systemmenüfeld und der MinMax-Schaltfläche abhängig ist.

Abschließend sei noch erwähnt, dass die Direkthilfe in Access 2007 nicht mehr verfügbar ist.

Fazit

Auf Grund der dargestellten Einschränkungen sollten Sie auf die Verwendung der Direkthilfe völlig verzichten. Stattdessen können Sie ein Formular mit all seinen Steuerelementen in der Hilfedatei ausführlich beschreiben.

Direkthilfe in Menüs

Auch zu Menüpunkten ist eine Direkthilfe verfügbar. Aktivieren Sie dazu den Fragezeichen-Cursor und klicken Sie dann auf den gewünschten Menüpunkt.

Implementierung

Zur Definition wählen Sie aus dem Menü Extras den Punkt Anpassen… Aktivieren Sie im Reiter Symbolleisten die entsprechende Menü- oder Symbolleiste.

Wählen Sie dann den gewünschten Eintrag in der Menü- oder Symbolleiste aus und aktivieren Sie im Kontextmenü (rechte Maustaste) den Punkt Eigenschaften. Im sich öffnenden Dialogfeld (siehe Bild 4) können Sie die Hilfedatei und die Hilfe-Kontext-ID festlegen.

DirekthilfeMenü.gif

Bild 4: Eigenschaften eines Menü-Punktes

Wenn Sie die beiden geöffneten Dialogfelder wieder schließen, werden Ihre Einstellungen gespeichert.

Nichts passiert

Wenn Sie so vorbereitet die Anwendung starten und den Fragezeichen-Cursor aktivieren, können Sie bei Access 2000 und Access 2002 den gewünschten Menüpunkt anklicken.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar