![]() |
Styles und Hilfe im chm-Format
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
zu meinem Projekt (in Delphi 10.1 Berlin Update 2) gibt es eine Hilfedatei im CHM-Format. Vcl.HtmlHelpViewer der uses-Liste des Hauptformulars hinzugefügt und Application.HelpFile gesetzt. Ganz einfach, funktioniert auch. Bis zu dem Moment, wo ich dem Projekt einen Style verpasse (Projektoptionen -> Anwendung -> Erscheinungsbild). Jetzt versucht Windows, im Hilfefenster den Style zu übernehmen - zumindest Teilweise - und das geht gründlich in die Hose. Das Hilfekapitel wird zwar noch richtig angezeigt, aber die Leiste mit den Navigationssymbolen ist abgeschnitten und die linke Spalte Inhaltsverzeichnis / Index / Suche ist der Hintergrundfarbe des Styles zum Opfer gefallen - siehe angehängtes Bild. Hat jemand von Euch eine Ahnung, wie man das in den Griff bekommen kann :gruebel: ? |
AW: Styles und Hilfe im chm-Format
CHM ist ja eine ZIP mit HTML-Dateien drin, die dann in einem eingebetteten Internet Explorer angezeigt wird.
Wir haben bei unserer HTML-Hilfe (einzelne Dateien) auch Probleme, wenn es z.B. von einem Netzlaufwerk geladen wird. Der Internet Explorer stuft standardmäßig vieles als "gefährlich" ein und blockiert es. Besonders gern sperrt der CSS-Dateien, aber JavaScript-Dateien werden öfters problemlos geladen. Die einzige wirklich fast immer funktinierende Lösung war es, die Dateien über einen Webserver auszuliefern. TIdHTMLServer Der kann aus dem Netzwerk erreichbar sein oder lokal laufen. Denn für den IE ist alles aus dem Internet "sicherer", als etwas aus dem Intranet. :roll: |
AW: Styles und Hilfe im chm-Format
Hmm..
Oder Du setzt die Flags für die HtmlHilfe in der Registry richtig: [HKEY_LOCAL_MACHINE\Software\Microsoft\HTMLHelp\1.x \ItssRestrictions] "MaxAllowedZone"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x \HHRestrictions] "MaxAllowedZone"=dword:00000001 "EnableFrameNavigationInSafeMode"=dword:000000 01 Dadurch wird das "Lokale Intranet" für die HtmlHelp auf "zugelassen" gesetzt. Dies verwenden wir bei unserer auf dem Server liegenden Hilfe bei den Kunden.. .. und schwubs können diese die Hilfe wieder öffenen und lesen. |
AW: Styles und Hilfe im chm-Format
Mit den Tücken des IE bei der chm-Hilfe hab' ich auch schon gekämpft. Damit überhaupt was angezeigt wird, lasse ich die CHM beim Programmstart in ein lokales Temp-Verzeichnis kopieren und rufe sie von dort aus auf. Mein Problem ist aber nicht die prinzipielle Anzeige der Hilfe, sondern die durch Styles gestörte Anzeige.
Was mich bei diesem Anzeigeproblem nur wundert ist, woher der IE überhaupt die Style-Info nimmt :?:. Wenn ich es mit der eingebetteten Anzeige von PeterPanino versuche (siehe ![]() |
AW: Styles und Hilfe im chm-Format
Zitat:
|
AW: Styles und Hilfe im chm-Format
Zugegeben, das wäre die beste Lösung - und auch mein persönlicher Favorit - ich hatte nur gehofft, mit weniger Aufwand auszukommen 8-).
Schließlich ist ja eigentlich schon alles fertig, die Software beim Anwender im Testbetrieb, Bereitstellungstermin vorvorgestern, nur die blöde Hilfeanzeige zickt noch rum ... @HolgerX: Das mit den Registry-Einträgen habe ich zusätzlich mit drin - für die Anwender, die kein Schreibrecht auf Ihrer lokalen Festplatte mehr haben (ja, auch das gibt es schon :() - scheitert aber meistens an fehlenden Admin-Rechten ... |
AW: Styles und Hilfe im chm-Format
Einem Anwender diesen NonSense anzutun in der Registry rumfuchteln zu müssen bzw. das vorauszusetzen finde ich ist ein Unding.
Dann doch lieber ein eigenes HilfeSystem schnell erstellt. |
AW: Styles und Hilfe im chm-Format
Wer sagt denn, dass der Anwender hier was in der Registry rumfuchteln soll.
Sowas macht man mit dem Setup-Programm für die Softwareinstallation. Zitat:
Ja, es geht mit Zip-Dateien, nennt man auch EPub. Dazu 'nen HTTPServer ins Programm integriert, und dann geht das. Aber nicht mal eben schnell. Man muss dann nurnoch die einzelnen Seiten im EPub dem HelpContext der Komponenten im Programm zuordnen, F1 drücken, die passende Seite aus dem EPub laden und zur Anzeige bringen. |
AW: Styles und Hilfe im chm-Format
Hm..
Zitat:
Da unser Programm direkt von einem FileShare, ohne lokale Installation gestartet wird, scheidet hier die Verwendung eines Installprogrammes aus. Vor allem wegen der Verwendung auf TherminalServern ist dies notwendig. Optional kann dieses Konsolenprogramm auch über eine Batch vor dem Programmstart aufgerufen werden, so dass der Link auf dem Desktop nicht direkt die Applikation startet, sondern die Batch. Dann sind jedoch Admin Rechte notwendig. Einige Kunden haben ein solches Script oder eine Richtlinie bereits in ihren Defaults oder Installscripten für neue Arbeitsplätze enthalten. |
AW: Styles und Hilfe im chm-Format
Euch ist schon klar, dass sein Problem nicht das Aufrufen und anzeigen ist, sondern das vermurkste Aussehen?
|
AW: Styles und Hilfe im chm-Format
Aufrufen konnten wir auch, aber es sieht halt auch bissl vermugst aus, wenn das CSS nicht und JS nur teilweise geladen wird.
|
AW: Styles und Hilfe im chm-Format
Hallo!
@Luckie: Danke für deinen "zurück zum Thema" Einwurf :thumb:! Inzwischen hab' ich die Sache einigermaßen in den Griff bekommen - falls jemand von Euch vor demselben Problem steht, hier meine Lösung. Den Eintrag Vcl.HtmlHelpViewer habe ich aus der uses-Liste rausgenommen und statt dessen ein TApplicationEvents Objekt eingesetzt, um alle Hilfeaufrufe zentral abzufangen und die chm-Hilfedatei selbst aufzurufen:
Code:
Damit ist das CHM-Hilfefenster nun unabhängig von meiner Anwendung, d. h. keine Child / Parent Beziehung mehr, und schon reagiert es auch auf die Styles meiner Anwendung nicht mehr, die Anzeige im Fenster ist sauber.
function TForm1.ApplicationEventsHelp (Command: Word; Data: NativeInt;
var CallHelp: Boolean): Boolean; begin CloseHelpWnd; Result := ShellExecute(0,'open','hh.exe', PWideChar('-mapid '+IntToStr(Data) +' ms-its:'+Application.HelpFile), nil,SW_SHOW) = 32; CallHelp := false; end; Weil nun aber jeder Hilfeaufruf aber ein neues Fenster erzeugt, schieße ich ein evtl. bestehendes vorher ab:
Code:
Einen weiterer Aufruf von CloseHelpWnd im FormDestroy-Event sorgt dafür, dass ein evtl. bestehendes Hilfefenster zusammen mit der Anwendung geschlossen wird.
procedure TForm1.CloseHelpWnd;
const HelpTitle = 'Beispiel'; { <= Hier den Titel Eurer Hilfedatei einsetzen!! } var HlpWind: HWND; begin HlpWind := FindWindow('HH Parent',HelpTitle); if HlpWind <> 0 then PostMessage(HlpWind,WM_Close,0,0); end; Etwas unzufrieden bin ich noch mit dem Schließen und Neuöffnen des Hilfefensters, wenn nacheinander verschiedene Hilfethemen aufgerufen werden. Bestimmt gibt es eine Möglichkeit über Messages, das bestehende Hilfefenster zu überreden, einfach ein anderes Thema anzuzeigen - aber dazu konnte ich einfach nichts finden. Falls jemand von Euch dazu eine Lösung hat, bitte hier her damit :)! |
AW: Styles und Hilfe im chm-Format
|
AW: Styles und Hilfe im chm-Format
Zitat:
|
AW: Styles und Hilfe im chm-Format
HTML-Styles aka CSS? :angle:
|
AW: Styles und Hilfe im chm-Format
Hallo Sailor,
so weit ich weiß gibt es vom Delphi HH Kit keine aktuelle Version mehr. Ich hatte es ursprünglich sogar drin im Projekt, mit Delphi 2009, aber bei der Übernahme des Projektes in Delphi 10.1 Berlin musste ich es raus nehmen, weil irgendwas nicht passte. Empfand ich auch nicht als problematisch, schließlich kommt Delphi ja inzwischen mit hauseigener chm-Unterstützung daher (Vcl.HtmlHelpViewer). Nur, das diese eben allergisch auf die VCL Styles reagiert. |
AW: Styles und Hilfe im chm-Format
Gibt es hier mittlerweile Lösungen?
Ich stehe nun vor dem selben Problem in D10Sydney. Bin auch offen für andere Hilfe Aufrufe oder Komponenten (local - nicht im web). Eigentlich hoffte ich Delphi hätte die Styles nun im Griff, aber irgendwie scheint mir das leider noch nicht so. PS: Auch der Aufruf von HH.exe funktioniert bei mir nicht zumindest nicht mit -mapid. (HH geht nicht mal auf). |
AW: Styles und Hilfe im chm-Format
Auch ja, vielleicht weiß jemand, wie Embarcadero das für Delphi selbst löst? Delphi nutzt ja auch die Styles aber die Hilfe ist dort ok.
User69 |
AW: Styles und Hilfe im chm-Format
OK, nach nun etlichen probierereien habe ich wohl eine Lösung (noch nicht ganz 100% getestet): Die Hilfe muss aus einer "ungestylten" Form aufgerufen werden.
Also einfach eine neue Form der Anwendung hinzufügen. Bei dieser alle Style Element ausschalten: StyleElements := []; In der Mainform dann in FormCreate die Form erzeugen: HelpForm:= THelpForm.Create(Self); Bei dieser neuen Form einfach unten die Procedure einfügen, und aus FromHelp dann diese neue Procedure aufrufen: HelpForm.CallHelp(Data); um das kurze aufblinken der neuen From zu kaschieren, dann man die ja klein machen oder geschickt verstecken. procedure THelpForm.CallHelp(Data: Integer); begin MainForm.OnHelp:= nil; Application.HelpContext(Data); MainForm.OnHelp:= MainForm.FormHelp; end; Vielleicht hilft das ja auch anderen weiter. |
AW: Styles und Hilfe im chm-Format
Das Verwenden einer ungestylten Form scheint mit Delphi 11.3 nicht (mehr?) zu funktionieren; ebenso die Variante mit hh.exe.
Gibt es denn keine andere brauchbare Lösung? |
AW: Styles und Hilfe im chm-Format
Zu Antwort #3:
Zitat:
|
AW: Styles und Hilfe im chm-Format
Hmm
Zitat:
Diese haben eigentlich nichts mit Delphi zu tun, sondern nur mit HTMLHelp... Eventuell gibt es auf dem Server 2022 kein HTMLHelp mehr oder das RAD Studio 11.3 verwendet diese nicht mehr. Damit die Hilfe (.CHM vom Netzwerk) auf den Clients angezeigt werden, müssen dort (also auf dem Client) folgende Einträge gesetzt werden:
Code:
[HKEY_LOCAL_MACHINE\Software\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\HHRestrictions] "MaxAllowedZone"=dword:00000001 "EnableFrameNavigationInSafeMode"=dword:00000001 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz