In diesem "Tutorial" geht es um das Thema Hilfedateien auf der Basis des Rtf-Formats (also noch nicht HTML) selber erstellen. Gerade Visual Basic-Programme, die alle Möglichkeiten zur Benutzergestaltung bieten, sollten nicht nur über eine Hilfe verfügen, sie sollten vor allem über eine gut gemachte und attraktive Hilfe verfügen. Zwar verfügt Visual Basic über keine direkten Hilfsmittel zur Erstellung von Hilfedateien, doch lassen sich auch mit dem Hilfe-Workshop der Visual Basic-CD im Zusammenspiel mit einem RTF-fähigen Textverarbeitungsprogramm (bereits Word 6 ist dafür hervorragend geeignet) einfache Dateien erstellen. Wer mehr Komfort sucht, wird bei den zahlreichen Shareware-Tools mit Sicherheit fündig.
In diesem Tutorial lernen Sie unter anderem
Allgemeines zur Hilfe
Die Hilfe gehört zum festen Bestandteil moderner Programme. Unter der vergangenen Zeit der DOS-Programmierung bestand die Hilfe oft nur aus einer zusätzlichen Datei, welche so einfallsreichen Bezeichnungen wie
READ.ME, README.TXT oder gar HILFE.TXT trug. Um zu einer Hilfebeschreibung des jeweiligen Programmes zu gelangen, mußte man sich die Hilfedatei vor dem Programmstart genau durchlesen oder diese in Form eines Manuals ausdrucken. Was fehlte war eine Hilfe, die auf Tastendruck kontextbezogen während des Programmablaufes zur Verfügung steht.Jeder Windows-Anwender hat sich schon längst an den vertrauten Stil der Windows-Hilfe gewöhnt. Jede Hilfe besteht aus einem oder mehreren Themen. Ein Thema (engl. "topic") ist nichts anderes als ein Kapitel der Hilfe, die wiederum aus Unterkapiteln bis hin zum eigentlichen erklärenden Text besteht. Verlangt es doch nur mit der Maus dasjenige Element auf dem Monitor zu markieren worauf ein Druck auf die [F1]-Taste die gewünschte Hilfe zum jweiligen Thema anzeigt. Ist die Hilfe erst einmal geöffnet, kann zwischen der Auflistung des gesamten Inhalts zur Hilfe, der Suchen nach einem Index oder die Suche nach einem bestimmten Ausdruck erfolgen. Diese Browser-Eigenschaft der Windows-Hilfen macht das Bedienen auch eines komplizierten Programmes zu einer einfachen Sache.
Neben der gezielten Suche gibt es auch noch die Möglichkeit von einem Thema zum anderen über sogenannte Hyperlinks zu gelangen. Sie stellen in einem Text bestimmte Stellen dar (Hypertext), die Abkürzungen zu oder Verweise auf andere Themen ermöglichen. Diese Textstellen sind bei der Windows-Hilfe allgemein grün markiert und offenbaren sich weiter dadurch, daß sich der Mauszeiger beim herüberfahren zu einer Hand verändert. Ein solches Vorgehen erlaubt es, sich ohne Aufwand über einen Themenkomplex innerhalb der Hilfe vertraut zu machen.
Für Visual Basic-Programmierer gehört das Erstellen von Hilfedateien inzwischen zum Arbeitsalltag. Wie immer gibt es eine gute und eine schlechte Nachricht. Die gute ist, das Erstellen einer Hilfedatei ist relativ simpel. Die schlechte, da Visual Basic selber über keinen eingebauten Hilfe-Editor verfügt, muß man auf Zusatztools ausweichen. Hilfedateien werden grundsätzlich im RTF-Format erstellt. Ein spezieller Kompiler, der Hilfecompiler, der in Gestalt der Datei
HC.EXE vorliegt, setzt die RTF-Datei (*.RTF) in die eigentliche Hilfe-Datei (*.HLP) um. Angezeigt wird die Hilfe-Datei mit dem Programm WinHelp (WINHELP.EXE).Was ist eine RTF-Datei und wozu ist sie notwendig
Bevor es zur Kopilierung einer Hilfedatei geht, ist es notwendig, sich mit dem RTF-Format zu befassen. Die Grundlage für eine Hilfedatei, die von WinHelp dargestellt werden kann, ist eine Textdatei, die in einem speziellen Format vorliegen muß. Dieses Format wird als "Rich Text File"-Format, kurz RTF-Format, bezeichnet. Das Besondere am RTF-Format ist, daß es sich um ein Textformat handelt, bei dem sämtliche Formatierungsinformationen, wie zum Beispiel Fettschrift, die Schriftgröße oder eine Hintergrundfarbe, über spezielle Formatierungszeichen oder Befehle implementiert werden. Auch die sogenannten Hyperlinks werden über spezielle Formatierungszeichen oder Befehle definiert und gesteuert. Ein typischer RTF-Sequenz sieht folgendermaßen aus:
{\footnote <
Wortsequenz>}{\v <LinkName>}Diese Zeile ist übrigens schon ein Hyperlink. Näheres aber erst später.
Wer sich ein wenig mit LaTex auskennt, der ist auf gewohntem Terrain und sollte mit dem Ablauf der Erstellung einer Hilfe jetzt schon wenig Probleme haben. Aber am Ende dieses kleinen Tutorial gilt dieses wohl für alle.
Wie werden RTF-Dateien denn erstellt?
Für den schnellen Einstieg reicht dafür ein ganz normaler Texteditor aus. Benutzen Sie z.B. den Windows eigenen Editor (
NOTPAD.EXE). Mit ihm lassen sich ohne Probleme kleine RTF-Dateien erzeugen. Dazu schreiben Sie im Textformat einen Hilfetext, der RTF-Befehle enthält. Abgespeichert wird das Ergebnis mit der Erweiterung .RTF. Lange währt die Freude des einfachen Einstiegs nicht, denn der so entstehende Text ist mit den vielen RTF-Befehlen oder Formatierungsanweisungen bald sehr unübersichtlich. Außerdem werden Sie später beim Kompilieren feststellen, daß der Kompiler ihnen das Leben sehr schwer macht, sobald Sie einen Fehler im RTF-Text haben. Fehler gehören nun mal zum Alltag eines Programmierers. Der Kompiler gibt in den meisten Fällen nur ziemlich uneindeutige Fehlermeldungen aus, so daß es Ihnen passieren kann, daß Sie den gesamten Text Zeile für Zeile durchsuchen müssen, um am Ende festzustellen, daß Sie eine der zahlreichen geschweiften Klammern vergessen haben zu schließen. Gibt es dafür keine Abhilfe?Eine komfortablere und sichere Methode RTF-Dateien zu erstellen ermöglichen Editoren, die über ein RTF-Dateiformat verfügen. Solche Editoren sind z.B. Word (ab Version 6) und WordPad (
WORDPAD.EXE) unter Windows. Hier brauchen Sie nicht umzudenken und sich in die Syntax der RTF-Befehle einarbeiten. Es reicht völlig aus, den Hilfe-Text in Prosa einzugeben und diesen z.B. unter Word als RTF-Datei abspeichern. Dazu muß aber gesagt werden, daß diese Vorgehensweise, wie sollte es auch anders sein auch Nachteile mit sich bringt. So fügt jeder RTF-fähiger Editor seinen eigenen Formatierungsballast mit sich. Daß heißt im unseren Falle, daß neben dem eigentlichen RTF-Hilfetext viele überflüssige Zusatzanweisungen in den RTF-Text eingefügt werden, die ein nachträgliches per Hand-Editieren fast unmöglich macht. Darum soll im weiteren Verlauf der Lektion der kurze aber harte Weg genommen werdenFür spätere professionelle Anwendungen können Sie auf zahlreiche Help Add-Ons zurückgreifen von denen am Ende des Tutorials noch näher eingegangen wird. Sie bieten neben mehr Komfort als wesentliches Merkmal das Einbinden von vielen "special effects"" Zu vor seien aber Tools wie HelpMagician von Software Interphase, RoboHelp von Blue Sky oder das Shareware-Programm Visual Help erwähnt.
Der Aufbau einer Hilfedatei
Jede Hilfedatei besteht aus einem oder mehreren Themen. Ein Thema (engl. "topic") ist nichts anderes als ein Kapitel der Online-Hilfe, der von WinHelp als zusammenhängender Bereich betrachtet wird. Im einfachensten Fall besteht ein Thema aus einem Textblock, der keinerlei Formatierungsinformationen oder Befehle enthalten muß. Nur wozu benötigen Sie dann einen Hilfe-Text, der als RTF-Datei anschließend noch kompiliert wird, um dann erst eine Hilfe zu sein. Der Aufwand lohnte sich nicht, man hätte nur eine Hilfe, die der oben erwähnten
README.TXT Datei entspräche und von der man sich nun endlich gelöst haben sollte. Nein, fangen wir erst so gar nicht an.Richtig interessant wird es erst, wenn die einzelnen Themen selektiv angesteuert werden können. Noch besser wird es, wenn sich die einzelnen Themen durch Hyperlinks zu einer hilfreichen Struktur verbinden lassen. Ein Hyperlink ist in diesem Zusammenhang nichts anderes als ein besonders markiertes Textelement, nach dessen Zusammenhang nichts anderes zu einem anderen Thema gesprungen oder ein internes Makro aufgerufen wird. Letzteres bietet innerhalb der Hilfe kleine festgelegte Aktionen durchzuführen, die z.B. das Starten eines kleines Programm-Beispiels, das Abspielen einer Video-Sequenz in Form einer AVI-Datei oder gar eine kleine Übung umfassen können. So gelangt man schnell zu einer multimedialen Hilfe. Als sei auf die Hilfe vor Microsoft Office-Produkten hingewiesen. Der Aufbau des Hilfefensters ist stets gleich (rufen Sie sich dazu am besten einmal eine Hilfedatei auf). In jedem Fenster befindet sich eine Menüleiste mit den Schaltflächen
Inhalt, Suchen, Zurück, Bisher und Index. Diese Menüleiste ist fester Bestandteil einer Windows-Hilfe, die stets eingebunden wird, auch wenn man nicht mehr macht, als eine leere RTF-Datei zu kompilieren und abschließend aufruft. Weiter noch belegt WinHelp die Schaltflächen zu Beginn mit einer Funktionalität. Alle Wörter, die mit der RTF-SequenzK{\footnote <
Begriff>}markiert sind, werden automatisch in den Suchindex übernommen. Nach Betätigen der Schaltfläche
Suchen stehen alle auf diese Weise markierten Begriffe im Suchfenster zur Verfügung. Eine Implementierung eines eigenen Suchalgorithmus ist nicht nötig. Auch wenn man unbedingt wollte, programmieren im herkömmlichen Sinne läßt sich unter dem RTF-Format nicht.Hinweis
Sie erinnern sich bestimmt noch an die
Sort-Eigenschaft des Listenfeldes, die genau so eine Funktionalität ohne Zusatzaufwand bereitstellt? Schlagen Sie besser noch einmal nach.Diese sicherlich auf der einen Seite vorteilhafte Standardisierung der Hilfe ( sie war nötig) hat auch ihre Nachteile. Möchte man WinHelp zum Realisieren von Multimedia-Präsentationen, elektronischen Bücher oder Spielen verwenden, so ist die Freude über den Standard bald dahin, es sieht alles so gleich aus, jeder erkennt die Handschrift von WinHelp. Also, der Standard sollte sich in der äußeren Erscheinung wohl modifizieren lassen. Dies auch bei WinHelp möglich. Durch Einbinden eigener Schaltflächen kann das Aussehen der Hilfe schon verändern. Ein ganz anderes Outfit kann der Hilfe sogar gegeben werden. Das entscheidende Werkzeug dazu ist ein
sekundäres Fenster. Hierbei handelt es sich um ein unabhängiges Hilfefenster, in dem ein Thema auf die gleiche Weise dargestellt werden kann wie in einem primären Hilfefenster. Der Unterschied besteht darin, daß ein sekundäres Hilfefenster über keine Menüleiste verfügt und sich daher optisch nahezu beliebig gestalten läßt. Da es möglich ist, die Größe der sekundären Fenster auf die des primären zu setzen, wird eine völlig neue Arbeitsfläche geschaffen, die die alte völlig verdeckt. Wer also sekundäre Fenster verwendet hat freie Hand zur individuellen Gestaltung der Hilfe.Zur Umsetzung - oder was braucht der WinHelp-Kompiler?
Zu einem WinHelp-Projekt gehören die folgenden Komponenten
Die RTF-Datei stellt dabei den Quell-Text und die Projektdatei die Steuerungs-Datei für den Hilfekompiler dar. Die Bilddatei beinhaltet als zusätzliche Ressource die Bildinformation einzubindender Grafiken.
Ein paar Worte zur Projektdatei
Einen denkbar einfachen Aufbau hat die Projektdatei. Um die nötigsten Informationen zu beinhalten, reicht es aus in ihr lediglich die folgenden zwei Zeilen einzutragen.
[FILES]
<Name des Hilfetextes>
.RTFDer Aufbau der Projektdatei gestaltet sich in Analogie zur INI-Datei. Auch sie ist in verschiedenen Sektionen unterteilt. Der Name jeder Sektion wird in eckige Klammern notiert. Jede Projektdatei muß mindestens eine [Files]-Sektion besitzen, über die jene RTF-Dateien (es können auch mehrere sein) namentlich festgelegt werden, aus denen die Hilfe-Datei (HLP-Datei) zusammengesetzt wird.
Neben dieser notwendigen Sektion sind weitere zugelassen. Die nächst wichtige ist die [OPTION]-Sektion. In ihr werden eine Reihe von Optionen, welche z.B. den Titel der Hilfe-Datei oder die Art der Komplierung und deren Feedback festlegen. So hat der Eintrag
[OPTIONS]
Report=On
zu Folge, daß der Hilfekompiler einen ausführlicheren Tätigkeitsbericht ausgibt. Verwenden Sie deshalb diesen Eintrag in jeder Projektdatei. Als weitere Sektionen gibt es noch die [MAP]-Sektion, die [WINDOWS]- und [CONFIG]-Sektion. In der erst genannten werden sogenannte Kontext-Zeichenketten, die in Zusammen für die noch zu behandelnde
HelpContextID-Eigenschaft wichtig ist. Die letztere legt die Größe, die Plazierung und die Default-Farbgebung für das primäre Hilfe-Fenster fest. Doch dazu mehr später.Eine Reihe von Optionen zu Beeinflussung der Arbeitsweise von WinHelp können auch in der Sektion [Windows Help] von
Win.INI eingestellt werden. Beispielsweise lassen sich die Farbübergänge des Logos von WinHelp über die Einstellungen LogoStart und LogoEnd variieren.Die Rolle des Hilfekompilers
Nachdem diskutiert ist, was alles zum Kompilieren notwendig ist, soll natürlich auch besprochen werden, welcher Hilfekompiler verwendet werden muß oder kann. Ohne weiter auf die allgemeine Funktion eines Kompilers einzugehen, dieser war ja bis zur Version 5.0 einem Visual Basic-Projekt eher fremd, soll seine Handling zum Erzeugen einer Hilfe-Datei erläutert werden.
Was für Varianten des Hilfekompilers gibt es?
Der Hilfekompiler gibt es unter der Bezeichnung
HCW.EXE als Bestandteil des Help-Workshops auf der Visual Basic-CD. Arbeiten Sie nicht mit älteren Versionen, Sie vermeiden so unnötige Probleme.Der Weg zur ersten Hilfedatei
Schritt 1
Starten Sie einen einfachen Texteditor z.B. WordPad.
Schritt 2
Geben Sie folgende Zeilen ein:
{\rtf1\ansi {\fonttbl{\fo\fnil;}}
Meine erste Windows-Hilfe!
}
Speichern Sie die Datei unter dem Namen MEINEHLP.RTF in dem Arbeitsverzeichnis des Hilfekompilers ab.
Schritt 3
Öffnen Sie eine neue Datei und geben ein:
[Files]
MEINEHLP.RTF
Speichern Sie diese dann unter dem Namen
MEINEHLP.HPJ ab.Schritt 4
Danach gehen Sie ins DOS-Fenster (der Pfad zum Hilfekompiler ist hoffentlich gelegt) und geben ein:
HC MEINEHLP
Schritt 5
Rufen Sie die nun vorhandene Datei MEINEHLP.HLP unter Windows auf, indem Sie entweder zuerst WinHelp aufrufen und danach die Datei MEINEHLP.HLP über das Datei-Menü laden, oder durch direktes Öffnen der Datei MEINEHLP.HLP im Windows-Explorer.
Was ist zu sehen?
Vielmehr als ein bekanntes Windows-Hilfe-Fenster mit der Zeile "Meine erste Windows-Hilfe" bekommen Sie nicht zu sehen. Die Menüleiste ist auch ohne Funktion. Um jetzt diese Hilfe nicht ohne Bezug zu erweitern, ist es hier sinnvoll auf eine konkrete Anwendung überzugehen. Dazu stellen Sie sich vor, sie haben ein Dateitransferprogramm geschrieben und wollen dem Anwender Ihres Programms eine Hilfedatei zur seriellen Schnittstelle mitgeben. Es soll eine Hilfe generiert werden, die alle grundlegenden Elemente der Hilfe enthält.
Wie ist die erste Zeile zu verstehen?
Was bedeutet die erste Zeile? Die erste Zeile bildet die Kopfzeile. Grundsätzlich wird der Hilfetexte in geschweifte Klammern gesetzt. Achten Sie deshalb darauf, daß stets zu Beginn und am Ende eine geschweifte Klammer steht. Die Anweisung \rtf1 teilt dem Kompiler mit, daß es sich hier um ein im RTF-Format geschriebenen Hilfe-Text handelt. Steht irgend ein Zeichen vor diese Anweisung meldet der Kompiler einen Fehler. Sie ist die einzige Anweisung, die in der Kopfzeile zu stehen hat und das am Anfang. Der Rest ist optional.
Optional wird der zu verwendende Zeichensatz angegeben. Mit \fonttbl richtet eine Zeichentabelle an, die mit {\f0\fnil;} gefüllt wird. Die Anweisung \fn setzt den aktuellen Zeichensatz mit der Nummer n, wobei n größer oder gleich 0 ist und fortlaufend gewählt wird, je nach Anzahl der Einträge. Anschließend wird der Familienname und dann der Name des Zeichensatzes angegeben, der zur Auswahl stehen soll und einer der üblichen Zeichensätze unter Windows entsprechen muß. Der Familienname kann Werte nach Tabelle 1 annehmen.
Familienname |
Bedeutung |
fnil |
Unbekannter oder Deafult-Zeichensatz (z.B. System) |
froman |
Roman, Familie der proportionalen Serif-Schriften (z.B. MS Serif, Palatino und Time New Roman) |
fswiss |
Swiss, Roman, Familie der proportionalen Sans Serif-Schriften (z.B. Swiss, Arial und Ms Sans Serif) |
fmodern |
Nicht proportionale Serif und Sans Serif-Schriften (z.B. Courier, Elite und Pica) |
fscript |
Scrip-Schriften (z.B. Cursive) |
fdecor |
Dekor-Schriften (z.B. Old English und ITC Zapf Cancery) |
ftech |
Symbol-Schriften (z.B. Symbol) |
Tabelle 1: Mögliche Werte des Familiennamens.
Die Angabe des Familiennamens veranlaßt WinHelp bei Nichtvorhandensein eines Zeichensatzes innerhalb der Familie nach Ersatz zu schauen.
Eine Anwendung bekommt eine Hilfe
Was soll im einzelnen passieren?
Die erste Ausbaustufe der Hilfe
Zu der ersten Erweiterung gehört das Erstellen eines Inhaltsverzeichnisses. Dazu wird das primäre Hilfe-Fenster in zwei Bereiche unterteilt. Der eine Bereich markiert den nicht scrollbaren Teil, der andere den scrollbaren. In dem ersten Bereich wird der Text "Inhaltsverzeichnis" plaziert, der beim Scrollen des Inhaltsverzeichnisses seine Position beibehalte soll. Ergänzen
Schritt
Sie dazu den Hilfe-Text zu:
{\rtf1\ansi\deff0\fs20 {\fonttbl{\f0\fnil;}}
\keepn
\line {\b\fs30 Inhaltsverzeichnis}
\line
#{\footnote Inhaltsverzeichnis}
${\footnote Inhaltsverzeichnis}
\par\pard
}
Die Anweisung \
keep markiert den Beginn des nicht scrollbaren Bereichs. Wichtig ist, daß dieser mit der Anweisung \pard wieder beendet wird. Die Anweisung \par kennzeichnet den Beginn eines neuen Abschnittes oder Paragraphen. Dabei wird ein Zeilenumbruch mit einer Lehrzeile erzwungen.Die fast wichtigste Anweisung ist \
footnote. Sie übernimmt alle arten der Navigation innerhalb des Hilfetextes. Mit#{\footnote Inhaltsverzeichnis}
wird ein Thema mit einem Namen versehen, der z.B. als Sprungmarke für ein Hyperlink verwendet werden kann. Erst wenn ein Thema einem Namen besitzt, der in diesem Zusammenhang auch als Kontextstring bezeichnet wird, kann es von anderen Stellen der Hilfe aus angesprungen werden.
Eine etwas andere Funktion hat die Anweisung
${\footnote Inhaltsverzeichnis}
Diese gibt einem Thema einen Titel. Alle auf diese Weise markierten Titel erscheinen z.B. nach Betätigen der
Suche-Schaltfläche in der Themenliste, nachdem ein Suchwort markiert wurde. Natürlich erscheinen auch nur zur Verfügung stehenden Suchwörter nicht automatisch in der Suchbox. Sie müssen über eine spezielle RTF-Anweisung gekennzeichnet werden. Wie dieses geht, zeigt unter anderem die nächste Erweiterung.Die Anweisung \
line ist selbsterklärend und entspricht einem Zeilenumbruch.Schritt
Ergänzen Sie den Hilfetext um:
\line
{\uldb Menuepunkt Parameter}{\v MParameter}\line
\line
{\uldb Menuepunkt Uebertragen}{\v MUebertragen}\line
\line
{\uldb MSComm.VBX}{\v MSComm}\line
\page
#{\footnote MParameter}
${\footnote Menue Parameter}
K{\footnote Menue Parameter;Einstellungen}
{\b\fs24 Menuepunkt Parameter}\line\line
Dieses Menue oeffnet das Fenster zum Einstellen der Uebertragungsparameter.\line
Es stehen zwei Ordner zur Verfuegung.\line\line
Anschluss einstellen\line
Anschluss auswaehlen\line
\page
#{\footnote MUebertragen}
${\footnote Menue Uebertragen}
K{\footnote Menue Uebertragen;Terminal;Dateien uebertragen}
{\b\fs24 Menuepunkt Uebertragen}
\line\line
Menueunterpunkt Terminal\line
Menueunterpunkt Datei uebertragen\line
\line
Es stehen zwei Uebertragungsmoeglichkeiten zur Verfuegung.
Es stehen zwei Uebertragungsmoeglichkeiten zur Verfuegung.
\line Die erste Übertragung geschieht mittels eines {\ul Terminals}{\v Terminal}.\line
Die zweite gestattet Dateien von einem Pc zu einem anderen zu schicken.
\page
#{\footnote MSComm}
${\footnote MSComm.VBX}
K{\footnote MSComm.VBX;Eigenschaften;Methoden;Ereignisse}
{\b\fs24 MSComm.VBX}
\page
\page
#{\footnote Terminal}
K{\footnote Terminal}
{\b\fs24 Terminal}\line\line
Ein Terminal ist ein meist primitives, nicht intelligentes Ein-/ und Ausgabegeraet,
\line welches minimal ueber eine Tastatur, einen Monitor und eine genormte Schnittstelle
\line zur Wieterleitung und Empfangen von Daten verfuegt. Ein PC ist ein intelligentes
\line Terminal.
Die Abbildung 7 zeigt das Menü der Hilfe.
Abbildung 1: Das Menü der Hilfe.
Der erste Hyperlink
Die erste neue Zeile stellt auch schon den ersten Hyperlink vor. Ein Hyperlink bezeichnet einen bestimmte grünen und gleichzeitig unterstrichenen Textabschnitt innerhalb der Hilfe über dem sich der Mauszeiger zu einer Hand verändert. Ein Anklicken bewirkt einen Sprung zu einer bestimmten anderen Stelle innerhalb der Hilfe oder das Ausführen eines Makros. Der Hilfekompiler benötigt zum Erkennen eines solchen Hyperlinks die Anweisung
\uldb. Diese formatiert den Textabschnitt innerhalb der geschweiften Klammern als doppelt unterstrichen. Genau diese Formatierung setzt der Hilfe-Kompiler zu dem oben beschriebenen Hyperlink-Format um (grün und unterstrichen). Allerdings reicht dieses noch nicht zum vollständigen Einfügen eines Hyperlinks aus. Natürlich muß auch noch ein Verweis angegeben werden, der angibt welche Aktion folgen soll. Bei einem Sprung folgt in geschweiften Klammer (Diese geben übrigens den Bereich an, innerhalb dessen eine Anweisung gültig ist.) die Anweisung \v zusammen mit einer Sprungmarke. Die Zeile{\uldb Menuepunkt Parameter}{\v MParameter}\line
besagt also: Markiere den Text "Menuepunkt Parameter" als Hyperlink und springe gegebenenfalls zu der Marke mit der Bezeichnung "MParameter".
Diese Marke wird durch die Zeilen
\page
#{\footnote MParameter}
angelegt. wichtig ist, daß Hyperlink und Springmarke durch eine \
page-Anweisung voneinander getrennt sind. Diese Springmarke wird einfach durch eine Themenmarkierung mittels der \footnote-Anweisung gesetzt (oben wurde schon darauf hingewiesen).Mit der Einführung von Hyperlinks in Verbindung mit Sprungmarken haben Sie schon den entscheidenden Schritt zu einer funktionierenden Hilfe geschafft.
So markieren Sie Suchbegriffe
Für eine Suche müssen neben Themen notwendigerweise auch Suchbegriffe angeben werden. In Analogie zum Festlegen von Themen ergibt sich:
K{\footnote Menue Parameter;Parameter;Einstellungen}
Dabei gilt die allgemeine Syntax
K{\footnote <Suchbegriff>[;<Suchbegriff>...]}
Nach Auswählen des Suchbegriffes innerhalb der Liste aller aufgefühten Suchbegriffe springt WinHelp dann zu dem dazugehörigen Thema.
Zusammenfassend ergeben sich drei Varianten der
\footnote-Anweisung, die hier besprochen werden (ja, es gibt noch weitere; sie werden aber hier nicht besprochen). Es gilt die Schreibweise:Syntax n{\footnote <text>}
wobei n die Art, die Tabelle 2 zeigt.
Art |
Eigenschaft |
Beispiel |
# |
Weist einem Thema einen Kontextstring zu, der z.B. als Springmarke für ein Hyperlink verwendet werden kann. |
#{\footnote Surfen} |
$ |
Gibt dem Hilfethema einen Titel |
${\footnote Surfen für Anfänger} |
K |
Kennzeichnet einen oder mehrere Suchbegriffe zu |
K{\footnote Surfboard; Segel} |
+ |
Fügt ein Thema in eine Themenkette ein |
+{\footnote Surfzubehör:001} |
Tabelle 2: Der Parameter n und seine möglichen Werte.
WIN 3.1
Die Menüleiste unter Windows 3.1 hat die Schaltflächen Inhalt, Suchen, Zurück und Drucken. Durch Einführung von Themen und Suchbegriffen haben die Schaltflächen Suchen und Inhalt jetzt eine Funktion. Drücken Sie die Schaltfläche Suchen, so erscheint ein Dialogfeld. Dort werden die im Hilfetext extra angegeben Suchbegriffe aufgelistet. Wählt man einen aus, so kann durch Betätigen der Schaltfläche Themen ausflisten das dazugehörige Thema (markiert durch einen Hyperlink) ausgewählt und über die Schaltfläche Anzeigen angezeigt werden.
Über die Schaltfläche Inhalt gelangt man zur Titelseite
WIN 95/98
Im Gegensatz dazu öffnet sich unter Windows 95/98 folgendes gezeigte Register-Dialogfeld. Unter der Mappe Index werden alle Suchbegriffe angezeigt, die im Hilfetext speziell angegeben sind. Es werden nicht die Themen extra vorher aufgelistet. Erst nach dem Auswählen eines Begriffes werden die Themen in dem Fenster Gefundene Themen aufgelistet. Nach auswählen eines Themas und Betätigen der Schaltfläche Anzeigen erfolgt ein Sprung zum jeweiligen Thema.
Über die Schaltfläche Suchen gelangt man im Gegensatz zu Windows 3.1 zu einem Suchmappe, der neben den festgelegten Suchbegriffen noch viele weitere markante Begriffe aus dem Hilfetext anzeigt. Es wird zu jedem Begriff jeweils gleichzeitig das dazugehörige Hilfethema angezeigt. Auch hier erfolgt ein Sprung zum jeweiligen Thema über die Schaltfläche Anzeigen. Wird das Suchen zum erstenmal gestartet, werden Sie in einem Dialog gefragt, welche Art der Suche gewünscht ist. Nach Beantworten dieser Fragen, erscheint die entsprechende Mappe.
Die Abbildung 2 zeigt, wie Hyperlinks in der Hilfe aussehen.
Abbildung 2: Hyperlinks in der Hilfe.
Manchmal muß es ein PopUp sein
In gewissen Fällen braucht der Anwender innerhalb einer Hilfe Kurzinformationen zu einem Begriff, ohne das zur Zeit geöffnete Thema vermittelt durch einen Hyperlink zu verlassen. Er wünscht sich ein kleines Fenster, welches sich per Mausklick auf den jeweiligen Begriff öffnet und darin eine Kurzinformation gleich einer Notiz anzeigt. Auch diese Möglichkeit bietet WinHelp mit dem PopUp-Fenster.
Aufgrund der Verwandtschaft zum Hyperlink erfolgt der Aufruf so:
{\ul Terminals}{\v Terminal}
Im Gegensatz zur Hyperlink-Anweisung \
uldb, was der RTF-Formatierung zum doppeltem Unterstreichen entspricht, wird im Falle eines PopUps lediglich die Formatierung \ul verwendet, was ein einfaches Unterstreichen entspricht. Auch das Erscheinungsbild in der Hilfe ist entsprechend anders. Der innerhalb der geschweiften Klammern enthaltene Text wird in der Hilfe zwar auch grün angezeigt, diesmal jedoch mit einer gestrichelten Linie. Beim Anklicken mit der Maus öffnet sich ein PopUp-Fenster in der Größe, der dem Umfang des angezeigten Textes entspricht. Verwenden Sie deshalb gezielte Zeilenumbrüche mit der \line-Anweisung.Einschränkungen gegenüber einem Hyperlink gibt es auch. PopUp-Fenster sind in ihrer Größe auf eine Bildschirmgröße beschränkt. Dies liegt am Fehlen von Bildlaufleisten. So wird der Text abgeschnitten, der nicht mehr auf eine Bildschirmseite paßt. Setzen Sie PopUp-Fenster nur dann ein, wenn schnell Begriffe erklärt werden sollen.
Wie schaut das Ergebnis aus?
Schritt
Speichern Sie den neuen Hilfetext ab und kompilieren Sie ihn. Öffnen Sie danach die Hilfe.
Mit Hilfe der Hyperlinks gelangen Sie nun zu den Themen
Menue Parameter, Menue Uebertragen und MSComm.VBX. Innerhalb des Themas Menue Uebertragen können Sie über den Begriff "Terminal" in einem PopUp-Fenster mehr erfahren.Die zeigt den Begriff
Terminal als PopUp-Bereich.Abbildung 3: Der Beriff "Terminal" markiert eine PopUp-Bereich.
Erweitern der Menüleiste durch weitere Steuerflächen - ein einfacher Browser
Die Menüleiste läßt sich durch weitere Steuerflächen erweitern. Eine hilfreiche stellt das Hinzufügen sogenannter Browser-Schaltflächen, die als fertiges Makro vorliegen. Ein Browser stellt eine Kette zusammenhängender Themen dar, auf die durch Vor- und Rückbewegungen schnell angesteuert werden können. Wie lassen sich diese Browser-Schaltflächen hinzufügen?
In der Projektdatei
MEINEHLP.HPJ wird eine neue Zeile am Dateiende innerhalb der neuen Sektion [CONFIG] eingetragen.Schritt
Tragen Sie folgende Zeilen in der Projektdatei am Ende ein:
[CONFIG]
BrowseButton()
Dieser Eintrag fügt in der Menüleiste zwei Schaltflächen in Form eines Links- bzw. Rechtsdoppelpfeils an.
Zunächst haben sie noch keine Funktion. Dieses ändert sich jetzt.
Zuerst überlegt man sich, welche Themen zu einer Themenkette verbunden werden sollen, die dem Browser zur Verfügung stehen sollen. Hier sind es die Menü-Einträge, die eine Themenkette bilden sollen.
Schritt
Tragen sie als erste Zeile in die einzelnen Themenblöcke des Hilfetextes ein jeweils die folgenden Zeilen ein. Dabei wird nur eine der Zeilen je einem Themenblock (einer der Themenblöcke beginnt mit der Anweisung #{\footnote MParameter})
zugewiesen:
+{\footnote Menue:001}
+{\footnote Menue:002}
+{\footnote Menue:003}
Achten Sie auf eine sinnvolle Numerierung, welche die Reihenfolge innerhalb der Themenkette definiert.
Schritt
Speichern Sie den neuen Hilfetext ab und kompilieren Sie ihn. Öffnen Sie danach die Hilfe.
Springen Sie nun zu einem der drei Themen, die im Inhaltsverzeichnis angegeben sind, wird einer der beiden Browser-Schaltflächen aktiv. Sie können dann durch Klicken der jeweiligen Schaltfläche von einem zum anderen Thema blättern oder "browsen".
Ich will aber meine eigenen Schaltflächen hinzufügen!
Ein weiteres Makro, welchen der eben gestellten Forderung entspricht heißt
CreateButton("<ID-Schaltfläche>", "<Name>", "<Aktion(Makro)>")
Sofort folgt auch schon das Beispiel:
CreateButton("BtnTerminal", "&Terminal", "JumpID(`MEINHLP.HLP´,`Terminal´)")
Unter dem Parameter "ID-Schaltfläche" ist die interne Bezeichnung der Schaltfläche gemeint. Mit "Name" wird der Titel der Schaltfläche angegeben. "Aktion(Makro)" ist der Parameter, der die Aktion oder das Makro aufruft, welches nach Betätigen der Schaltfläche aufgerufen wird. In dem vorliegendem Beispiel ist die Aktion das Aufrufen des JumpID-Makros. Der erste Parameter
gibt an zu welcher Hilfe der Spring gehen soll. Der zweite Parameter spezifiziert das Ziel genauer durch Angabe der anvisierten Sprungmarke.
Wie Sie sehen, handelt es sich bei Ihrem ersten Makro-Aufruf gleich um einen verschachtelten Aufruf. Folgende Regeln sind beim Makro-Aufruf zu beachten:
CreateButton('BtnTerminal', '&Terminal','JumpID('MEINHLP.HLP','Terminal')')
oder
CreateButton('BtnTerminal', '&Terminal','JumpID('MEINHLP.HLP', 'Terminal')')
Schritt
Speichern Sie den neuen Hilfetext ab und komplieren Sie ihn. Öffnen Sie danach die Hilfe.
Schon ist eine Schaltfläche mit der Bezeichnung "Terminal in die Menüleiste eingefügt. Ein Klicken auf diese Schaltfläche zeigt den Text zum Thema "Terminal" im primären Fenster von WinHelp an, der sonst nur im PopUp-Fenster erscheint. Wem gefällt dieses etwa nicht?
WinHelp mit völlig neuem Outfit - das sekundäre Fenster
Eine stereotype Hilfe kann auf die Dauer recht trist wirken und motiviert vielleicht nicht zu einem längeren Verweilen in dieser. Auch für diesen Fall gibt es eine elegante und effektive Lösung. Mit Hilfe des sekundären Fensters können Sie der Hilfe ein völlig anderes Outfit verpassen. Oben wurde schon einmal angesprochen, das ein sekundäres Fenster nicht unbedingt über eine Menüleiste verfügen muß. Es verfügt erst einmal über fast nichts. Dieses macht es so interessant.
Wird das sekundäre Fenster auf Maximalgröße (Bildschirmgröße) vergrößert, verdeckt es alle übrigen Fenster und bietet so die Möglichkeit einer wirklich individuellen Oberflächengestaltung. Um mit einem sekundären Fenster arbeiten zu könne, muß als erstes die Projektdatei unterrichtet werden. Dies geschieht in der allgemeinen Form
FensterName in der Sektion [WINDOWS]<FensterName> = "<Titel>", (X, Y, Breite, Höhe)
Hier kann wie beim primären Fenster optional auch die Hintergrundfarbe des beweglichen und nicht scrollbaren Bereichs definiert werden kann.
Beachten Sie, daß es keine feste Zuordnung zwischen einem Thema und einem Fenster, in dem es dargestellt wird, gibt. Genau, wie ein beliebiges Thema in einem PopUp-Fenster angezeigt wird, ist auch die Ausgabe jederzeit in einem sekundären Fenster möglich.
Umgeleitet wird die Ausgabe zu dem sekundären Fenster mittels des Umleitugsoperators ">". Wie er zum Einsatz kommt sehen Sie am besten im Beispiel, was zugleich eine weitere Ergänzung zu der hier entstehenden " ist.
Schritt
In der Projektdatei tragen sie als neue Sektion ein:
[WINDOWS]
Fenster2="sekundäres Fenster",(653,102,360,600),20736,(r14876671),(r12632256),f3
Schritt
Um das neue Fenster auch zu nutzen ergänzen sie den Eintrag in der Sektion [CONFIG] zu
CreateButton('BtnTerminal', '&Terminal','JumpID('MEINHLP.HLP>Fenster2','Terminal')
Schritt
Speichern Sie den neuen Hilfetext ab und komplieren Sie ihn. Öffnen Sie danach die Hilfe.
Nur über den Umleitugsoperator wird die Ausgabe des Textes, welcher sonst nur im PopUp-Fenster erscheint, nun im sekundären Fenster ausgegeben.
Der künstlerischen Ausgestaltung des primären Fensters sind vielfältig. Versuchen Sie einfach ein paar Möglichkeiten aus!
Eine Hilfe ohne Bilder, das wäre doch trist und langweilig?
Für viele Dinge helfen Bilder zur Erklärung wesentlich weiter. Dieses ist im Zeitalter der Multimedia schon keine Weisheit mehr. Also bekommt die Beispiel-Hilfe ebenfalls ein Bild, um z.B. die COM-Übertragung zu zeigen.
Wie bekommt ein Bild in die Hilfe? Nun, auch hierfür gibt es eine Anweisung. Ihre Syntax ist (wie auch die übrigen) einfach. Ein Bild läßt sich allgemein in den Hilfetext einbinden durch:
\{bmx <Bild>\}
Die Formatierungsanweisung \
bm signalisiert, daß der nachfolgende Ausdruck eine Referenz auf ein Bild ist. Der Parameter x kann folgende Werte annehmen:Der Hilfekompiler sucht standardmäßig im Arbeitsverzeichnis nach dem Bild. Ist dieses nicht dort vorhanden müssen Sie dieses durch die entsprechen Pfadangabe in der Projektdatei anmerken. Diese Geschieht in der Sektion [Bitmaps]. Allgemein also
[BITMAPS]
<Path><Bild>
Schritt
In dem Hilfebeispiel tragen Sie einfach an einer geeigneten Stelle ein Bild ein. Beispielsweise tragen Sie in dem Abschnitt \footnote MSComm ein Bild ein, welches die Belegung eines Nullmodemkabels zeigt. Der Eintrag lautet etwa so:
\{bml NullMod.BMP\}
Die Path-Angabe in der Projektdatei kann sein:
[BITMAPS]
C:\MSComm\NullMod.BMP
Das Resultat zeigt Abbildung 4. So einfach ist das!
Abbildung 4: Eine Bitmap zur Nullmodembelegung in der Windows-Hilfe.
Neben dem Format BMP werden auch
DIB, WMF, SHG und MRB (ICO-Dateien müssen zuvor, z.B. mit dem sehr empfehlenswerten Tool MicroAngelo, in das BMP-Format umgewandelt werden) unterstützt. Beim "Multiple Resolution Bitmap"-Format (MRB) enthält die Datei mehrere Bitmaps für verschiedene Auflösungen. WinHelp sucht sich vor dem Darstellen der Grafik jenes Format heraus, das der aktuellen Auflösung am nächstem kommt. Auch mit dem SHG-Format hat es eine besondere Bewandtnis. Es steht für "Segmented Hyper Grafic" und erlaubt das Einfügen sogenannter Hotspots in eine beliebige Bitmap. Ein Hotspot sorgt dafür, daß Teile einer Bitmap auf das Anklicken mit der Maus reagieren können. Auch wenn es theoretisch möglich ist, Teile einer Bitmap direkt in einer RTF-Datei zu markieren (auch das direkte Einbinden einer Bitmap ist möglich), hat dieses Verfahren für die Praxis keinen Wert. Wozu gibt es denn schließlich den Hotspot-Editor?Wenn Bilder sprechen lernen- Der HotSpot-Editor
Auch wenn der Hotspot-Editor (
SHED.EXE) auf der Visual Basic-CD enthalten ist, ist er leider kein Werkzeug für den Visual Basic-Programmierer. Er ist einzig und alleine eine Unterstützung des Hilfekompilers. Viel besser in dieser Hinsicht geeignet ist das PicClip-Steuerelement.Die Aufgabe des Hotspot-Editors ist vielmehr , in eine beliebe Bitmap rechteckige Markierungen, die sogenannten Hotspots, einzutragen, nach deren Anklicken mit einer Maus ein Popup-Fenster geöffnet, ein Thema aufgerufen oder ein Makro ausgeführt wird. Die Bedienung des Hotspot-Editors ist kinderleicht und bedarf keiner tiefergehenden Erläuterungen (dieses ist schlecht für den Autor, so werden die Seiten niemals gefüllt!).
Was vor dem ersten Hotspot sollten Sie noch überlegen, welche Aktion oder Verweise mit einem Hotspot verbunden sein sollen. Als Beispiel dient das obige Bild zur Nullmodembelegung.
Schritt
Rufen Sie den Hotspot-Editor auf und laden Sie eine Bitmap z.B.
NULLMOD.BMP.Markieren Sie mit der Maus um den oberen Anschluß und einem Unteren Anschluß jeweils ein Rechteck. Klicken Sie dann auf das obere mit der rechten Maustaste.
Es öffnet sich ein kleines Dialogfeld, in der der Typ des Hotspots eingetragen wird. Die Koordinatenangaben machen deutlich, daß Sie beim Einzeichnen der Hotspots keine ruhige Hand beweisen müssen. Die Angabe der exakten Koordinaten lassen sich nachträglich festlegen und jederzeit wieder ändern. Die Angabe einer Kontext-ID ist nicht zwingend notwendig, denn dieser Wert dient nur dazu, einzelne Hotspots beim Arbeiten mit dem Hotspot-Editor leichter identifizieren zu können. Angaben werden muß dagegen ein Wert für den Kontextstring. Dieser legt bei einem Spring oder einem PopUp den Namen des anzuspringenden Themas oder den Namen des auszuführenden Makros fest (Sie kennen dies ja schon). Vergessen Sie nicht, die einzelnen Hotspots unsichtbar zu machen, denn ansonsten erscheinen später gestrichelte Umrandungen in der Bitmap. Das war bereits alles.
Schritt
Andern Sie den obigen Eintrag in dem Hilfetext um zu:
\{bml NullMod.SHG\}
Entsprechen in der Projektdatei:
[BITMAPS]
C:\MSComm\NullMod.SHG
Fügen Sie dann am Ende der Projektdatei folgendes nach:
\page
#{\footnote Sender}
{\b\fs24 Sender bei COM-Uebertragung}
\page
#{\footnote Empfang}
Kompilieren Sie abschließend und starten Sie die Hilfe.
Der Mauszeiger wird zur Hand, wenn er die Hotspot-Bereiche überfährt. Klicken Sie mit der Maus auf einen der beiden Hotpsots.
Zur Überleitung die letzen Ergänzungen- Abrunden der Sache
Um zum nächsten Paragraphen zu gelangen sollten Sie noch einige Zeilen in ihrem Hilfetext anfügen.
Schritt
Fügen Sie die jetzt aufgeführten Zeilen Ihrem Hilfetext hinzu, welche nichts beinhalten, was Sie nicht jetzt schon wüßten:
\page
#{\footnote MTerminal}
${\footnote Menue Terminal}
K{\footnote Menue Terminal;Echo}
{\b\fs24 Menueunterpunkt Terminal}\line\line
Nach Betaetigen des dieses Menuepunktes oeffnet sich das Terminal-Fenster.\line
Es besteht aus einem Texfeld, in dem die Eingabe der Zeichen erfolgt.\line
Durch Klicken der Befehlschaltflaeche mit der Bezeichnung "Terminaluebertragung starten"\line
wird der vorher definierte {\uldb COM-Port}{\v MSComm} geoeffnet. Erneutes Klicken\line
schliesst den Port wieder und die Terminaluebertragung ist beendet.\line
Die Optionen "Echo on" und "Echo off" bewirken, dass ein eingegebes Zeichen in dem\line
Textfeld gleichzeitig angezeigt wird oder nicht
\page
#{\footnote MDatei}
${\footnote Menuepunkt Dateien uebertragen}
K{\footnote Menuepunkt Dateien uebertragen;XModem-Protokoll}
{\b\fs24 Menueunterpunkt Datei uebertragen}
\page
#{\footnote OrdEinstellen}
${\footnote Mappe Anschluss einstellen}
K{\footnote Mappe Anschluss einstellen}
{\b\fs24 Mappe Anschluss einstellen}\line\line
{\uldb Liste Bits pro Sekunde (Baud)}{\v LBaud}\line
{\uldb Liste DatenBits }{\v LDBits}\line
{\uldb Liste Paritaet }{\v LParitaet}\line
{\uldb Liste StopBits }{\v LSBits}\line
\page
#{\footnote OrdAuswaehlen}
${\footnote Mappe Anschluss auswaehlen}
K{\footnote Mappe Anschluss auswaehlen}
{\b\fs24 Mappe Anschluss auswaehlen}\line\line
\page
#{\footnote LBaud}
K{\footnote Liste Baud auswaehlen}
{\b\fs24 Liste Baud auswaehlen}\line\line
In dieser Liste wird die Baud-Rate eingestellt,\line
d.h. die Anzahl der Bits pro Sekunde
\page
#{\footnote LDBits}
K{\footnote Liste DatenBits auswaehlen}
{\b\fs24 Liste DatenBits auswaehlen}\line\line
In dieser Liste wird die Anzahl der uebertragenden Datenbits angegeben\line
Es kann zwischen einer Uebertragung von 7-Bits oder 8-Bits ausgewaehlt werden.
\page
#{\footnote LParitaet}
K{\footnote Liste LParitaet auswaehlen}
{\b\fs24 Liste LParitaet auswaehlen}\line\line
In dieser Liste wird die Paritaet der uebertragenden Datenbits angegeben\line
Die Dafault-Einstellung ist "keine Paritaet".
\page
#{\footnote LSBits}
K{\footnote Liste StopBits auswaehlen}
{\b\fs24 Liste StopBits auswaehlen}\line\line
In dieser Liste wird die Anzahl der uebertragenden Stopbits angegeben\line
Es kann zwischen einer Uebertragung von 1-Bit, 1.5 Bits oder 2-Bits ausgewaehlt werden.
Haben Sie auch auf alle Klammer geachtet? Auch die geschweiften Klammern, die den gesamten Hilfetext umschließen müssen? Nun, der Kompiler wird Sie schon unsanft darauf hinweisen.
Diese vielen Zeilen ergänzen die Hilfe nur um weitere Unterthemen, also nichts Neues!
An diesem Punkt drängt sich Ihnen sicherlich die Frage auf: Wo ist die Verbindung zu Visual Basic? Geduld.
Visual Basic bekommt eine kontextsensitive Hilfe
Für einen Anwender einer Visual Basic Applikation nütz eine Hilfe wirklich nur dann etwas, wenn sie kontextsensitiv ist. Dies bedeutet, daß durch Markieren per Maus eines beliebigen Steuerelementes oder eines anderen Elementes des laufenden Programmes mit anschließendem Betätigen der
F1-Taste ein Hilfe-Fenster zu diesem Punkt öffnet. Voraussetzung dabei ist es, daß das Visual Basic-Programm der dazugehörigen Hilfe sagt, um welches Element es sich gerade handelt. Die Hilfe kann dann an einer bestimmten Stelle geöffnet werden. Sie vermuten sicherlich schon so eine Art Hyperlink, oder?Dem Visual Basic-Programmierer stehen die Eigenschaften
HelpFile und HelpContextID, deren Aufgabe es ist, die Verbindung zwischen einem Visual Basic-Programm und einer Hilfedatei herstellen, zur Verfügung. Während die HelpFile-Eigenschaft des App-Objektes den Namen der Hilfedatei angibt (diese Festlegung kann auch in der Projektdatei geschehen), stellt die HelpKontextID-Eigenschaft, über die die meisten Steuerelemente verfügen, die Verbindung zu einem Thema im Hilfetext her.Was muß man sich unter dieser Verbindung vorstellen und wie wird diese konkret hergestellt?
Naheliegend wäre vielleicht die Verbindung über einen Kontextstrings zu vermuten. Die
HelpContextID-Eigenschaft ist allerdings vom Typ Long. Also läuft die Verbindung über eine Zahl oder besser gesagt einer Kontextnummer eines Themas. Diese wird aber nicht in der RTF-Datei, sondern in der Projektdatei zugeordnet. Hat die HelpContext-Eigenschaft den Wert 0 (Default) liegt keine Verbindung vor. Die Sektion [MAP] ist für das Aufnehmen der Verweise zuständig. Ein möglicher Eintrag ist:[MAP]
#define COM-Anschluß 21001
Im Klartext heißt dieser Eintrag: Das Thema mit dem Kontextstring
TrackNr erhält den Wert 21001. Der exakte Wert spielt keine Rolle, er darf innerhalb einer Hilfedatei allerdings nur einmal vergeben werden. Erhält die HelpContextID-Eigenschaft eines Steuerelements diesen Wert, führt das Betätigen der [F1]-Taste die Verbindung aus. Es wird das Thema mit dem Kontextstring COM-Anschluß immer dann aufgerufen, wenn der Eingabefokus bei dem Steuerelement liegt.Viel mehr ist zur Theorie nicht zu sagen. Es folgt die Praxis.
Schritt
Erweitern Sie die Projektdatei um die Einträge
[MAP]
#define MSComm 21002
#define LBaud 21002
#define LDBits 21003
#define LParitaet 21004
#define LSBits 21005
Schritt
Wie oben schon erklärt müssen jetzt die HelpContextID-Eigenschaften der betreffenden Steuerelemente innerhalb Ihres Programmes, daß zum Beispiel den Namen MSComm.VBP hat, entsprechend gesetzt werden. Dazu fügen Sie in dem Standardmodul Ihreres Projektes im dortigen Deklarationsteil hinzu:
'Konstanten für die Hilfe
Global Const WinCOM = 21001
Global Const WinBaud = 21002
Global Const WinDatenBits = 21003
Global Const WinParität = 21004
Global Const WinStopBits = 21005
In der
Form_Load-Prozedur des Formulars frmHaupt tragen Sie ein:' Hier wird die kontextsensitive Hilfe initialisiert
App.HelpFile = "c:\Hilfe\hlptest1.HLP"
frmEinstellung.cboCOMPort.HelpContextID = WinCOM
frmEinstellung.cboBps.HelpContextID = WinBaud
frmEinstellung.cboDBits.HelpContextID = WinDatenBits
frmEinstellung.cboParität.HelpContextID = WinParität
frmEinstellung.cboSBits.HelpContextID = WinStopBits
Das Formular, auf denen sich die betreffenden Steuerelemente befinden soll den Namen
frmEinstellungen haben. So dies war's schon.Schritt
Starten Sie Ihr Projekt und setzen Sie den Eingabefokus auf ein entsprechendes Steuerelement mit der. Drücken Sie dann die [F1]-Taste.
Hat man einen Fehler in den Zuweisungen gemacht, existiert gar in der Hilfe keine Hilfethema mit der in der
HelpContextID-Eigenschaft gesetzten Kontextnummer, gibt WinHelp die Meldung "Das Thema ist nicht vorhanden. Fordern Sie eine aktuelle Hilfedatei bei Ihrem Softwarehändler an. (129)" aus. Hat die HelpKontextID-Eigenschaft eines Steuerelement den Wert 0, so wird beim Drücken der [F1]-Taste die Titelseite (hier das Inhaltsverzeichnis) der Hilfe geöffnet.Die WinHelp stellt noch viele weitere Möglichkeiten zur Verfügung wie zum Beispiel die Suche mit Hilfe von Schlüsselwörtern. Das Standarddialog-Steuerelement (
Cmdialog32.ocx) unterstützt solche Möglichkeiten über die Eigenschaften HelpKey oder HelpCommand direkt. Für Formen und Steuerelemente hingegen erschöpft sich die eingebaute WinHelp-Unterstützung im bloßen Vergeben von Kontextnummern. Außerdem läßt sich die einmal aufgerufene Hilfe nicht so ohne Weiteres wieder von Visual Basic aus schließen. Fast könnte man sagen: Die Geister die ich rief... . Umständlich muß die Hilfe über Ihr Menü geschlossen werden (mit der [ESC]-Taste geht es natürlich auch schneller).Eine direktere und vielseitige Steuerung der Hilfe aus Visual Basic heraus erlaubt die API-Funktion
WinHelp(). Mehr dazu im nächsten Abschnitt.Mit der API-Funktion WinHelp() geht’s ans Eingemachte der Hilfe
Die API-Funktion
WinHelp() aktiviert bei ihrem Aufruf die Hilfe WinHelp.EXE. Als API-Funktion muß sie in einem Basic-Modul über das Declare-Statement explizit deklariert werden. Diese erfolgt auf folgende Weise:Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal _
hwnd As Long, ByVal lpHelpFile As String, ByVal wCommand As _
Long, ByVal dwData As String) As Long
Die vier zu übergebenen Parameter haben dabei hier nachfolgende Bedeutung:
Die möglichen Werte des Parameters
HlpCommand zeigt Tabelle 3.
Bezeichnung der Konstanten |
Auswirkung |
HELP_CONTEXT = &H1 |
Hilfethema anhand der Kontextnummer anzeigen |
HELP_QUIT = &H2 |
Hilfe beenden |
HELP_INDEX = &H3 HELP_CONTENTS = &H3 |
Hilfe-Index anzeigen (Inhaltsübersicht) |
HELP_HELPONHELP = &H4 |
Hilfe zur Hilfebutzung anzeigen |
HELP_SETINDEX = &H5 HELP_SETCONTENTS = &H5 |
Alternativer Index für Hilfedateien mit mehr als 1 Index |
HELP_KEY = &H101 |
Hilfethema anhand des Schlüsselwortes anpassen |
HELP_MULTIKEY = &H201 |
Schlüsselwort in anderer Tabelle suchen und Hilfethema anzeigen |
HELP_CONTEXTPOPUP = &H8 |
Hilfeseite in einem, PopUp-Fenster anzeigen |
HELP_FORCEFILE = &H9 |
Sicherstellen, daß die korrekte Hilfedatei angezeigt wird. |
HELP_COMMAND = &H102 |
Hilfe-Makro ausführen |
HELP_PARTIALKEY = &H105 |
In Schlüsselliste gefundenes Hilfethema anzeigen |
HELP_SETWINPOS = &H203 |
Hilfefenster positionieren und anzeigen |
Tabelle 3: Die möglichen Werte des Parameters
HlpCommand.Wie wenig und doch viel hinter all diesen Konstanten steckt zeigt ein Beispiel.
Die API läßt die Hilfe arbeiten
Schritt
Gestalten Sie ein Formular nach dem Vorbild in Abbildung 5.
Abbildung 5: Das Formular frmHaupt während der Entwurfsphase.
Fügen Sie folgenden Code zum Formular hinzu:
Private Sub Form_Load()
Me.Caption = "Hilfe-Test mit " & HlpFile
End Sub
Private Sub mnuEnde_Click()
End
End Sub
Private Sub mnuHEnde_Click()
Dim X As Long
X = WinHelp(Me.hwnd, HlpFile, HELP_QUIT, 0&)
End Sub
Private Sub mnuHilfe_Click()
Dim X As Long
X = WinHelp(Me.hwnd, HlpFile, HELP_INDEX, 0&)
End Sub
Für die Deklaration der API-Funktion
WinHelp und weiterer Konstanten erstellen Sie eine Modul mit dem Code:Option Explicit
Global Const HELP_QUIT = &H2
Global Const HELP_INDEX = &H3
Global Const HELP_HELPONHELP = &H4
Global Const HELP_KEY = &H101
Global Const HELP_PARTIALKEY = &H105
Global Const HlpFile$ = "C:\HILFE\HLPTEST1.HLP"
Declare Function WinHelp Lib "user32" Alias "WinHelpA" (ByVal hwnd As Long, ByVal lpHelpFile As String, ByVal wCommand As Long, ByVal dwData As Any) As Long
Starten Sie daß Programm und geben Sie als Suchbegriff beispielsweise "MSComm" ein. Das Ergebnis zeiget die und.
Abbildung 6: Der Suchbegriff wird eingegeben.
Abbildung 7: Das Ergebnis innerhalb der Hilfe.
Wie geht es genau?
Die hier entscheidenden Parameter sind HELP_INDEX, HELP_KEY und HELP_QUIT, welche die Hilfe steuern.
Über das Menü Hilfe öffnen Sie die Hilfe MEINHLP.HLP. Angezeigt wird die Titelseite. Nach erfolgtem Nutzen der Hilfe wird sie wieder über das Menü Hilfe beenden geschlossen.
In dem Textfeld geben Sie einen Suchbegriff ein.
Über den API-Aufruf
X = WinHelp(Me.hwnd, HlpFile, HELP_KEY, Dat)
öffnet das Fenster gefundene Themen. Wählt man ein Thema aus erfolgt der Sprung zu diesem.
Bei nicht Vorhandensein öffnet WinHelp nur die Register-Mappe
Index.Wo bleibt die Kontextsensitivität?
Genau so, wie die kontextsensitive Hilfe über die
HelpCommandID-Eigenschaft eines Steuelementes in Verbindung mit der Sektion [MAP9] der Projektdatei realisierbar ist, kann dieses mittels der API-Funktion WinHelp ablaufen. Dazu verwenden Sie z.B. dieses ZeileX = WinHelp(Me.hwnd, HlpFile, HELP_CONTEXTPOP, "21001")
Übergibt man die entsprechende Kontextnummer, welche für das jeweilige Steuerelement festzulegen ist, so kann über Abfragen des
KeyDown-Ereignisses nach Betätigen der [F1]-Taste für das jeweilige Steuerelement abgefragt werden, welches gerade den Eingabefokus besitzt. Zum Beispiel:Sub cboBps_KeyDown (KeyCode As Integer, Shift As Integer)
If Keycode = 112 Then
X = WinHelp(Me.hwnd, HlpFile, HELP_CONTEXTPOP, "21001")
End If
End Sub
Resultat: Es öffnet sich ein PopUp-Fenster mit der jeweiligen Hilfeseite, die der Kontextnummer entspricht.
Was ist mit den Makros?
So rufen Sie mit der API-Funktion
WinHelp Makros auf:X = WinHelp(Me.hwnd, HlpFile, HELP_COMMAND, Dat)
Der Parameter
Dat kann alle möglichen Makros enthalten. Für die Syntax ( besonders der verschachtelten Makro-Aufrufe) beachten Sie bitte die oben angeführten Regeln.Der Hilfekompiler Version 4.x - Help Workshop
Bereits Visual Basic 4 bot mit dem Help-Workshop einen völlig neuen Zugang zur Hilfeerstellung, den Sie auf der Visual Basic-CD im Tools-Verzeichnis finden. Mit ihm kann die Erstellung einer Hilfe innerhalb einer Mini-Entwicklungsumgebung erfolgen. Kompilieren und Editieren geschieht nun per Mausklick, wobei die RTF-Dateien am besten von Word erstellt werden. Da sich von der Theorie nichts ändert und die Handhabung prinzipiell bereits in Kapitel 24 des Visual Basic-Kompendiums kurz beschrieben wurde, soll es bei dem allgemeinen Hinweis bleiben.
Literatur
Eine ausführliche Beschreibung der Hilfedateien und allem, was damit zusammenhängt, enthält das folgende Buch.. Es bietet alle Informationen, die zum elektronischen Publizieren unter Windows 95/98 und Windows NT benötigt werden.
[1] Elektronisch publizieren mit dem Microsoft Help Workshop, Reinhard Engel, Microsoft Press, 1996