AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

F1 Hilfe (Framework?)

Ein Thema von Towmuz · begonnen am 5. Feb 2018 · letzter Beitrag vom 5. Feb 2018
Antwort Antwort
Towmuz

Registriert seit: 21. Sep 2016
Ort: Minden
127 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

F1 Hilfe (Framework?)

  Alt 5. Feb 2018, 14:41
Tach auch,

ich bin auf der Suche nach irgendwas, mit dem sich eine F1-Hilfe zu Programmen erstellen lässt.
Was schonmal ausfällt ist "Microsoft HTML Help", Win-XP Optik, sperrige Bedienung, sperriges Erstellen und darauf bin ich nicht angewiesen.

Bevor ich nun mein eigenes Html-Template oder dgl. erstelle...

Es muss nicht unbedingt Html sein.

Was nutzt ihr denn?
Thomas
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: F1 Hilfe (Framework?)

  Alt 5. Feb 2018, 14:49
Help'n Doc, HelpandManual, Doc-To-Help.....

Im Zweifelsfall einfach nach den Stichwörtern "Help Authoring" suchen
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Towmuz

Registriert seit: 21. Sep 2016
Ort: Minden
127 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: F1 Hilfe (Framework?)

  Alt 5. Feb 2018, 14:52
Im Zweifelsfall einfach nach den Stichwörtern "Help Authoring" suchen
Danke, ich hab immer nach "Create F1 Help" und sowas gesucht
Thomas
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: F1 Hilfe (Framework?)

  Alt 5. Feb 2018, 15: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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#5

AW: F1 Hilfe (Framework?)

  Alt 5. Feb 2018, 16:54
Viele der Hilfeformate nutzen intern HTML. Da mußt du aufpassen, dass sie auf Netzlaufwerken zu Problemen führen, da vor allem die Microsoft-Browser standardmäßig das Intranet&NetShare als böse ansehen und teilweise Funktionen sperren.

Wir nutzen Help and Manuel, erstellen damit die HTML-Hilfe, aber verteilen sie dann über einen eigenen lokalen HTTP-Server (TIdHttpServer ... Help&Manual bieten selber Einen an, aber der ist das, was man eine perfekte Sicherheitslücke nennen kann)
und zusätzlich verarbeiten wir die F1-Taste auch selber. (die Hilfelinks kommen aus einer Datenbank FormClass+Komponentenname -> Hilfeseite/Anker/...)

[Edit]
Jupp, wie der Vorgänger. Der Hilfekontext wird bei der Form auf 100 und htContext gesetzt, wenn nich nichts zugewiesen wurde (0).
Steht dann doch was im HelpContext/HelpKeyword, dann wird das verwendet und sonst wird in der DB nachgesehn, ob etwas für die Komponente oder ihre Parents (Panel, GroupBox, Frame oder Form) hinterlegt wurde.
Da kann dann die Hilfe in einem TWebBrowser oder in einem externen Browser geladen werden. Entweder die eigene Hilfe oder eine externe Webseite.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Feb 2018 um 17:02 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#6

AW: F1 Hilfe (Framework?)

  Alt 5. Feb 2018, 17:08
Die Idee mit dem eigenen HTTP-Server ist eigentlich gut.

Man kann dafür in die eigene Hilfe auch 'nen HTTP-Server einbauen, der muss ja nicht viel können, sondern nur die HTML-Seiten aus der ZIP, dem EPub ... holen und in der eigenen Anwendung an den TWebBrowser ... liefern. Oder halt die Hilfeseite aus 'ner Datenbank dynamisch erstellen.

Einziges Problem: Der Webserver muss sich einen freien Port suchen, da man den bei 'nem Framework, das mehrere Programme nutzen, nicht fest vorgeben kann (sonst bekommt man eventuell die falsche Hilfe angezeigt ). Da aber nur das eigene Programm zur Laufzeit diesen Port kennen muss, ist das kein Problem.

Funktioniert in meiner Hilfe schon seit Jahren
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#7

AW: F1 Hilfe (Framework?)

  Alt 5. Feb 2018, 17:48
Wir haben den in unserer Serveranwendung (zusammen DataSnap, unserem DMS usw.) und lassen ihn so im Intranet frei.

Unsere HTML-Dateien liegen zwar ganz normal in einem Verzeichnis, aber im Gegensatz zu der App von Help&Manual prüfe ich auch den Pfad. (bzw. bei uns nur den Dateinamen, da die ganzen Hilfedateien in einem Verzeichnis liegen)
Die von H&M nehmen nämlich den kompletten Pfad entgegen und geben so jede Datei im Netzwerk an jeden Raus, der danach fragt, aus allen VerzeichnissenNetzressourcen, auf die der kleine Hilfeserver Zugriff hat.
Ich habe aber auch noch ein bisschen mit MIME und Encoding rumgespielt und befülle den Header entsprechend, damit die Browser z.B. mit den "falsch" kodierten Index-Dateien von H&M zurecht kommen.
Denn aus einem Webrowser klappt es, aber der idHTTPServer macht das nicht automatisch und dann kommt z.B. dernen Javascript mit dem UTF-8 durcheinander und denkt es wäre ANSI, wenn man die Suchfunktion in der Hilfe benutzen will.

Aber ja, du kannst den HTTP-Server auch lokal in die eigene Anwendung einbauen.

Es ist aber auch möglich die Hilfedateien in die Programmressourcen einzubinden und extern aufzurufen. (theoretisch ... noch nicht ausprobiert)
https://msdn.microsoft.com/en-us/library/aa767740.aspx
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Feb 2018 um 17:57 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz