Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#4

AW: F1 Hilfe (Framework?)

  Alt 5. Feb 2018, 16:50
Mal nur ein bisserl hingesponnen:

TApplicationEvents aufs Hauptformular.
Das Ereignis OnHelp mit Inhalt befüllen.
CallHelp in der Routine auf False setzen.

Im Parameter Data steht der Wert aus HelpContext der Komponenten, die beim Betätigen von F1 den Focus hat, HelpType muss auf htContext stehen.

Mit der Info kannst Du in 'ner Datenbank nach 'nem Text suchen und den dann beliebig anzeigen oder eine Datei mit dem Hilfetext laden ...

Das kann man alles in 'nem eigenen Formular kapseln, für die Anzeige 'nen TWebBrowser, TRichEdit oder auch nur ein Memo nehmen.

Will man es etwas schöner haben, erstelle man sich für die Hilfe ein EBook im EPub-Format, das ist nichts weiter, als 'ne ZIP-Datei mit einem definierten inhaltlichen Aufbau für die Verwaltung des Inhaltes.

Die Texte sind einfaches HTML (mit all' seinen Freiheiten) die Verwaltung geht über XML-Dateien.

Technisch müsste Delphi alles mitbringen, was man da als Werkzeug benötigt.

Und ist einem EPub zu kompliziert: Man nehme eine ZIP-Datei und packe da für jede Hilfeseite eine HTML-Seite rein, deren Name einfach der Wert aus HelpContext der aufrufenden Komponente ist.
Beim Aufruf der Hilfe hole man die Datei aus dem ZIP und zeige es in 'nem TWebBrowser an.

Ist absolut unkomfortabel, was das Suchen angeht, weil es eine Suche so erstmal nicht gibt. Die kann man sich aber über eine Memorytabelle selber zusammenbauen.

Soll es eine Auswahl der Seiten per Treeview geben, lade man dort das Inhaltsverzeichnis des ZIPs hinein und hole beim Klick im Baum die entsprechende Seite in die Anzeigekomponente.

Technisch ist das eigentlich alles recht einfach, man muss nur halt klare Vorstellungen von dem haben, was man darstellen möchte und dann mal ein paar Tage in die Implementierung investieren. Gut gekapselt kann man das dann in alle Programme einbinden.

Statt vieler Seiten kann man auch ein ClientDataSet nehmen, das beim Programmstart seine Infos aus 'ner ZIP-Datei (oder so) liest. Etliche Software verwaltet sich heutzutage über SQLite-Datenbanken, warum nicht auch die Hilfe?
Zur Laufzeit kann man dann über den Wert aus HelpContext eine bestimmte Seite aufrufen. Für die allgemeine Suche hat man alle Möglichkeiten, die ein ClientDataSet oder SQLite bieten.

Man benötigt für jede Hilfeseite halt eine Spalte für HelpContext, eine für 'ne Seitenbeschreibung (Seitentitel z. B. der Hint der Komponente) und eine Memo/Blob für den Seiteninhalt. Damit kann man dann mit einem Programm die eigene Hilfe erstellen, verwalten und anzeigen. Auch hier gilt: Wenn gut gekapselt jederzeit in jedem Programm wiederverwendbar.

Vorteil: Man ist unabhängig davon, ob Microsoft mal wieder ein verändertes, anderes inkompatible, auf neuen Windowsen nicht mehr funktionsfähiges, formatverändertes ... Hilfesystem liefert.

Man hat was eigenes, was vermutlich dann auch noch auf jeder Plattform, für die man Software erstellt, einheitlich funktioniert.
  Mit Zitat antworten Zitat