Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Styles und Hilfe im chm-Format (https://www.delphipraxis.net/192481-styles-und-hilfe-im-chm-format.html)

Jelen 21. Apr 2017 18:15

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: ?

himitsu 21. Apr 2017 18:47

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:

HolgerX 21. Apr 2017 19:18

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.

Jelen 21. Apr 2017 19:21

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 hier), kann ich Styles verwenden wie ich will, ohne dass sie die Anzeige beeinflussen.

a.def 21. Apr 2017 19:26

AW: Styles und Hilfe im chm-Format
 
Zitat:

Damit überhaupt was angezeigt wird, lasse ich die CHM beim Programmstart in ein lokales Temp-Verzeichnis kopieren und rufe sie von dort aus auf.
Oder man schreibt sich sein eigenes Mini-Framework mit dem THTMLViewer :stupid:

Jelen 21. Apr 2017 21:07

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 ...

a.def 21. Apr 2017 21:12

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.

nahpets 21. Apr 2017 21:35

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:

Zitat von a.def
Dann doch lieber ein eigenes HilfeSystem schnell erstellt.

Dass das mal eben schnell geht, halte ich für 'ne vernünftige, kontextsemsitive, Hilfe für ein Gerücht.

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.

HolgerX 22. Apr 2017 05:15

AW: Styles und Hilfe im chm-Format
 
Hm..

Zitat:

Zitat von Jelen (Beitrag 1368636)
@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 ...

Wir haben hier ein kleines Konsolentool gebastelt, welches bei Einrichtung eines neuen PCs/TerminalServer von einem Admin 1x Aufgerufen wird.

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.

Luckie 22. Apr 2017 19:25

AW: Styles und Hilfe im chm-Format
 
Euch ist schon klar, dass sein Problem nicht das Aufrufen und anzeigen ist, sondern das vermurkste Aussehen?

himitsu 22. Apr 2017 19:42

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.

Jelen 3. Mai 2017 09:06

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:
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;
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.
Weil nun aber jeder Hilfeaufruf aber ein neues Fenster erzeugt, schieße ich ein evtl. bestehendes vorher ab:
Code:
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;
Einen weiterer Aufruf von CloseHelpWnd im FormDestroy-Event sorgt dafür, dass ein evtl. bestehendes Hilfefenster zusammen mit der Anwendung geschlossen wird.

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 :)!

Sailor 3. Mai 2017 11:05

AW: Styles und Hilfe im chm-Format
 
Ich benutze schon ewig das hier:

http://kb.helpwaregroup.com/code/delphi-hh-kit

Klappt einwandfrei.

Uwe Raabe 3. Mai 2017 12:20

AW: Styles und Hilfe im chm-Format
 
Zitat:

Zitat von Sailor (Beitrag 1369992)
Klappt einwandfrei.

Auch mit aktiven VCL-Styles? Darum geht es ja hier gerade.

himitsu 3. Mai 2017 12:23

AW: Styles und Hilfe im chm-Format
 
HTML-Styles aka CSS? :angle:

Jelen 3. Mai 2017 13:19

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.

user69 8. Jul 2020 21:13

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).

user69 9. Jul 2020 17:08

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

user69 12. Jul 2020 22:11

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.

vpohlers 7. Aug 2023 15:15

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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:43 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