Delphi-PRAXiS
Seite 2 von 2     12   

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)

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 19:05 Uhr.
Seite 2 von 2     12   

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