Einzelnen Beitrag anzeigen

Jelen

Registriert seit: 5. Nov 2003
45 Beiträge
 
#12

AW: Styles und Hilfe im chm-Format

  Alt 3. Mai 2017, 09:06
Hallo!
@Luckie: Danke für deinen "zurück zum Thema" Einwurf !
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 !
  Mit Zitat antworten Zitat