Hi Marco,
Zitat von
MarcoWarm:
es gibt die Möglichkeit eine Volltextsuche im IHxSession durchführen IHxSession.Query
entweder im kompletten Artikeltext mittels des NavDataMonikers '!DefaultFullTextSearch'
oder nur in den Keywords mittels '!DefaultKeywordIndex'
. Ersteres ist bereits eingebaut... letzteres bringt manchmal weniger Resultate als das suchen über den Slot.
ich habe in der Zwischenzeit noch viel ausprobiert. Die Dokumentation zu den Schnittstellen des Hilfesystems ist ja leider sehr spärlich
Nach langem Rumprobieren und Studieren des Quellcodes der HelpIntf.pas habe ich viel hinbekommen:
- Das Standard-Hilfesystem funktioniert nicht richtig, wenn ein anderer HelpSelector aktiv ist. Aufrufe an ms-help-URLs gehen ins leere, weil die Implementierung nicht die spezialisierte Methode IExtendedHelpViewer.DisplayTopic aufgerufen wird. Das wird durch CustomHelp behoben.
- Das Durchreichen von Ergebnissen aus anderen Hilfe-Providern ist jetzt möglich. madExcept hat z.B. auch einen ICustomHelpViewer der die Hilfeseiten im IE aufruft.
- Insbesondere können dadurch Fundstellen der MSHelp2 von anderen Providern durchgereicht werden. Das RAD Studio findet ja irgendwie doch mehr Ergebnisse, als die reine Schlüsselwortsuche
Das größte Problem war dabei die Ermittlung des Titels und der Beschreibung eines Topics anhand der URL, damit das Ganze in der Suchübersicht auch vernünftig aussieht. Da gibt es leider keine direkte Funktion in den MSHelp2-Interfaces Durch intensives Debugging habe ich aber einen Weg gefunden 8) Man muss sich das Interface IHxHierarchy analog zu dem Index besorgen. Da kann man dann die Funktion GetSyncInfo verwenden, um an das Topic (IHxTopic) mit allen benötigten Informationen heranzukommen.
Ohne vernünftige Dokumentation ist das ziemlich mühsam, das alles herauszufinden
Anbei gibt es den Patch für die aktuelle Revision (R343). Ich würde mich freuen, wenn man das in CustomHelp übernehmen würde.
Nachfolgend die Änderungen/Erweiterungen im Einzelnen:
- Vollständiges Durchreichen der anderen Hilfe-Provider (ICustomHelpViewer, z.B. madExcept, BDS Standardsuche)
- Anzeige der Standard-Suchergebnisse des BDS.
- Möglichkeit zum Ermitteln von Titel und Beschreibung von MSHelp2-URLs.
- Möglichkeit zum Umleiten von beliebigen Protokollen (z.B. file://, http://) auf die Willkommens-Seite.
- Verallgemeinerung der Pfade in der Projektdatei ($BDS), $(BDSCOMMONDIR)
- Debuggen der IDE in der IDE durch Verwendung der Option -r, damit sich die IDE-Instanzen nicht in die Quere kommen.
- Verlagerung einiger Funktion aus TMyViewer in TCustomHelp, teilw. Umwandlung in Klassenmethoden
- Verbesserung des Verhaltens, wenn das Package wieder entladen wird (HelpSelector wird dann ungültig).
- Neuer Standard-Suchprovider: MSDN Online
- Verbessertes Fehlerverhalten bei "kaputten" Namespaces (Alle Fehler werden in der Übersicht angezeigt).
- Layoutverbesserung in der Ergebnisanzeige: Nur 1/3 der Breite für die Beschreibung.
- Usability: Der erste Eintrag in den Suchergebnissen wird automatisch selektiert.