|
Aufbau eines Node-Eintrags |
[ Top ] |
Um die Eigenschaften eines Knotens zu definieren,
werden diverse Angaben - durch Komma getrennt - in eine Zeile
geschrieben.
|
Syntax: <Title>[,<HelpID>,<CloseIcon>,<OpenIcon>,<Document>]
|
Außer dem Titel sind alle Parameter optional; sollen z.B. nur Title und
Document verwendet werden, müssen die Kommata für Title,
HelpID, CloseIcon und OpenIcon gesetzt sein, damit
der Document-Parameter als solcher identifiziert werden kann.
|
Die Bedeutung der Parameter im Detail:
|
|
Name |
|
Bedeutung |
|
Beispiel |
Title |
|
Anzuzeigender Knoten-Titel; wird in die .Text-Eigenschaft des Nodes eingetragen. |
|
Die Druckfunktion |
HelpID |
|
Long-ID zum direkten Ansprechen eines Knotens. Normalerweise
die WhatsThisHelpID-Eigenschaft eines Controls, auf das sich
der Hilfe-Text bezieht; wird in die .Key-Eigenschaft des Nodes eingetragen
(deshalb ist darauf zu achten, daß dieser Wert eindeutig ist,
d.h. er darf nicht für mehr als einen Knoten eingetragen werden). |
|
1002 |
CloseIcon |
|
Key für das normale Node-Image. Dieser String korrespondiert
mit der .Key-Eigenschaft eines Bildes
der ImageList imlHelp (in frmBrowseHelp.frm). |
|
sheet |
OpenIcon |
|
Key für das Image eines geöffneten (expanded) Nodes. Dieser
String korrespondiert mit der .Key-Eigenschaft eines Bildes der ImageList
imlHelp. |
|
bookopen |
Document |
|
Name einer (in der Regel lokalen HTML-)Datei. Sobald man im
TreeView ein kinderloses Element anklickt, wird der angegebene
Dateiname mit dem RootPath ergänzt und an das
WebBrowser-Control übergeben. Der RootPath ist der
Basis-Ordner, in dem sich alle Hilfe-Dokumente befinden. Er wird dem
HtmlHelp-Modul über die Sub Init (in
frmBrowseHelp.frm) mitgeteilt. Der Document-String wird in
die .Tag-Eigenschaft des Nodes
eingetragen. |
|
printdoc.htm |
|
|
Falls sich die Datei in einem Unterordner des RootPaths
befindet, muss der Ordnername mit angegeben werden. |
|
printhelp\printdoc.html |
|
|
Man kann RootPath-Unterordner auch im Document-Parameter
von Parent-Knoten hinterlegen; die Dateinamen der Kinder
beginnen dann mit einem Backslash ('\'), wenn sie von diesem Pfad
Gebrauch machen. |
|
\printdoc.html |
|
|
Bei HTML-Dateien ist auch die Verwendung von Ankern
(Sprungziele innerhalb des Dokumententextes) erlaubt. |
|
printdoc.html#paperbin |
|
|
Bei einer ausschließlichen Anker-Angabe wird der Name der
zugehörigen HTML-Datei im Document-Parameter des
Parent-Knotens erwartet. |
|
#paperbin |
|
|
Externe Dokumente müssen mit http://
kenntlich gemacht werden. |
|
http://www.vbpc.de |
|
|
Auch bei externen Dokumenten können Pfadangaben im
Document-Parameter von Parent-Knoten hinterlegt
werden; die Dateinamen der Kinder beginnen dann mit einem Slash
('/'). |
|
/printdoc.html |
|
|
Die Ebene des jeweiligen Elements wird durch Kommata definiert, welche der
Zeile vorangestellt werden. Beispiel für einen Buch-Knoten mit 2
Dokumenten plus SubFolder (Ordner 'Anhang'):
|
|
|
Kapitel 1,,book,bookopen
, Einleitung,,sheet,,einleit.html
, Adressenmaske,1043,sheet,,adrmask.html
, Anhang,,book,bookopen
, , Anhang A (Tabellen),,sheet,,anh_a.html
, , Anhang B (unterstützte Formate),,sheet,,anh_b.html
|
|
|
Hinweis: Wenn der Titel ein Komma enthält, muss er in Anführungszeichen gesetzt werden, damit das enthaltene Komma
nicht als Separator fehlinterpretiert wird. Beispiel:
|
|
|
, , "Eingabe von Name, Adresse und Info",112,sheet,,input.html
|
|
|
Beispiel für den Zugriff auf externe Dokumente:
|
|
|
Interessante Seiten,,book,bookopen
, VBPC,,manual,manopen,www.vbpc.de
, , Home,,page,,/home.html
, , Source,,page,,/source.html
, , Mitgliederliste,,page,,/members.html
, , Newsletter-Archiv,,page,,/arv/index.html
, Microsoft,,manual,manopen,http://www.microsoft.com
, , Home,,page,,/ms.htm
, , Downloads,,page,,/downloads/search.asp?
, , Chat,,page,,http://webchat.msn.com
|
|
|
An Zusatzinformationen können noch die
Namen von einer Startseite (DEFAULTDOC) und
einer Fehlermeldungs-Seite (BROKENLINKDOC),
welche im Falle einer nicht auffindbaren lokalen Datei gezeigt wird,
angegeben werden. Beispiel:
|
|
|
DEFAULTDOC = welcome.html
BROKENLINKDOC = broken.html
|
|
|
So sieht übrigens die im
Demoprojekt verwendete Steuerdatei aus:
|
|
|
;
; Projekt: HtmlHelpDemo
;
; Struktur der Baumansicht im Hilfe-Fenster
;
DEFAULTDOC = welcome.html
BROKENLINKDOC = broken.html
;###################################################### MENU START
Willkommen,,info,,welcome.html
HtmlHelpDemo Dokumentation,,books
;-----------------------------------------------------------
, Hilfesystem,,book,bookopen
, , Der Browser,,sheet,,browser.html
, , Die Steuerdatei,,sheet,,indexfile.html
, , Steuerdatei 'index.dat',,page,,index.dat
, , Implementierung,,sheet,,implement.html
;-----------------------------------------------------------
, Beispiel-Applikation,,book,bookopen
, , HtmlHelpDemo,,sheet,,appInfo.html
, , Menü,,manual,manopen,mnuMenu.html
, , , Menü: 'Datei',,page,,mnuMenu.html
, , , 'Beenden',,item,,#mnuDB
, , , Menü: '?' (Hilfe),,page,,#mnuH
, , , 'Hilfe',,item,,#mnuHH
, , , 'Info',,item,,#mnuHI
, , Euro-Rechner,,manual,manopen
, , , Euro-Rechner,,page,,eurocalc.html
, , , DM-Faktor,1000,item,,eurocalc.html#faktor
, , , Eingabe DM,1001,item,,eurocalc.html#dm
, , , Eingabe Euro,1002,item,,eurocalc.html#euro
;-----------------------------------------------------------
;######################################################## MENU END
|
|
|
Die komplette Anleitung zur Benutzung von HtmlHelp findest du
übrigens auch im beigefügten Demoprojekt, wo sie Teil der angezeigten
Hilfedokumentation ist.
|
Um mit dem Windows-CHM-Viewer konform zu bleiben, könnte man in den
TreeView-Bereich ein TabStrip-Control mit 3 Registern setzen - eines wie
gehabt für den TreeView (Inhalt), eines für eine Index-Seite
(Liste mit allen relevanten Stichwörtern) und eines für eine
Suchen-Seite.
|
Für die Stichwortliste müsste man zur
Entwicklungszeit eine Tabelle mit allen wichtigen Begriffen und Verweisen
auf die jeweiligen Dokumente erstellen; die Suchen-Funktion müsste
alle die
Hilfe betreffenden HTML-Seiten durchscannen und eine Trefferliste
generieren können.
|
Diese Features zu realisieren ist zwar kein
Hexenwerk, der Aufwand lohnt sich jedoch erst für Projekte, die um ein
vielfaches umfangreicher sind als - wie in unserem Fall - ein simpler
Eurorechner.
|
Falls auch nicht-lokale Dateien (die etwa auf einem
Netzwerk- oder Internetserver liegen) eingebunden werden sollen,
muss unter
Umständen mit längeren Ladezeiten gerechnet werden, so dass
der Benutzer
mit Hilfe einer Fortschrittsanzeige darüber informiert werden sollte,
dass etwas passiert.
|
Hier wäre es angebracht, z.B. in einer Statuszeile ein ProgressBar oder ein
Prozent-Label unterzubringen. Im Code habe ich dafür im ProgressChange-Ereignis des WebBrowser-Controls
schon Vorbereitungen getroffen; aus den übergebenen Parametern wird ein
aktueller Prozentwert errechnet, der die Menge des übertragenen
Datenvolumens widerspiegelt. Diesen Wert kannst du in geeigneter Weise für
eine Fortschrittsanzeige verwenden.
|
|
|