![]() |
CHM-Datei im eigenen Formular anzeigen
Hallo,
ich habe zu meinem Programm eine Hilfedatei im CHM-Format geschrieben. Beim normalen Einbinden wird sie mit dem entsprechenden Programm von Microsoft angezeigt. Ich möchte sie aber in einem eigenen, zu meinem Programm gehörigen Formular anzeigen, damit sie den gleichen Style hat. Hier im Forum habe ich nichts Brauchbares dafür gefunden. Hat jemand eine Idee? joehoehal |
AW: CHM-Datei im eigenen Formular anzeigen
Hi,
bin beim googeln auf das gestoßen, vielleicht hilft es: ![]() Gruß Steku |
AW: CHM-Datei im eigenen Formular anzeigen
Ich denke, dass eine Lösung die Benutzung von HtmlHelp aus dem Windows-API ist (
![]() Dort steht Declare Function HtmlHelp Lib "HHCtrl.ocx" Alias "HtmlHelpA" _ (ByVal hwndCaller As Long, _ ByVal pszFile As String, _ ByVal uCommand As Long, _ dwData As Any) As Long und bei der Beschreibung der Parameter hwndCaller: A handle to an application window or Null. This window handle may be used as a parent, owner, or message recipient for HTML Help, depending on how it is used. In VBA, instead of setting this to vbNullString, set it to 0 (zero). Ich verstehe das so, dass dies der Handle des Windows ist, in dem die Hilfe angezeigt werden soll, und habe deshalb geschrieben: HtmlHelp(Form2.Handle,'d:\projekte\mc\help\multico llect.chm',HH_HELP_CONTEXT,22) ; Tatsächlich wird das gewünschte Topic angezeigt, aber nicht in Form2, sondern im Standard-Fenster. Woran kann das liegen? joehoehal |
AW: CHM-Datei im eigenen Formular anzeigen
Zitat:
Zitat:
|
AW: CHM-Datei im eigenen Formular anzeigen
Wie ich den "Parent ... umbiegen" soll, weiß ich nicht. Mit TWebBroser habe ich's schon versucht.
Wenn ich die CHM-Datei mit TWebBrowser.Navigate aufrufe, wird sie im Standard-Fenster und nicht in meinem Browser / Formular angezeigt. Ich habe auch keinen Parameter gefunden, mit dem ich das ändern könnte. Dagegen kann man die nicht-compilierte HTML-Hilfe gut mit TWebBrowser anzeigen. Wenn man in Navigate die zu einem bestimmten Topic gehörende HTML-Datei angibt, werden Topic, Inhaltsverzeichnis, Index usw. angezeigt, sodass man vollen Zugang zum gesamten Hilfesystem hat. Das löst prinzipiell mein Problem, ist aber nicht sehr konfortabel, weil man dann anstelle einer einzigen CHM-Datei ein ganzes Paket von HTMLs, Javascripts, Stylesheets usw. bereitstellen muss. joehoehal |
AW: CHM-Datei im eigenen Formular anzeigen
Guten Tag,
hast'e es schon mal mit " ![]() Dort man sich verschiedene Möglichkeiten aussuchen,um eine Hilfe zu erstellen. Ich benutze diese Software seit Jahren... Übrigens auch Webbrowser1.Navigate...:-D |
AW: CHM-Datei im eigenen Formular anzeigen
Das Erstellen der Hilfe ist nicht mein Problem. Ich benutze dazu HelpnDoc (
![]() joehoehal |
AW: CHM-Datei im eigenen Formular anzeigen
Parent umbiegen, mal ganz grob:
Delphi-Quellcode:
Feintunen könnte man das vermutlich, indem man erstmal das Handle des Inhaltes rausholt, um nicht das ganze Fenster umbiegen und anzeigen zu müssen. Auch muss man bei Resize natürlich anpassen.
procedure TForm1.bn1Click(Sender: TObject);
var h: THandle; begin Application.HelpShowTableOfContents; h := FindWindow('HH Parent', 'der titel meiner hilfe'); if h > 0 then begin Windows.SetParent(h, panel2.Handle); Windows.SetWindowPos(h, 0, 0, 0, panel2.ClientWidth, panel2.ClientHeight, 0); end; end; Ist sicherlich auch nicht die schönste Methode, aber schnell umgesetzt. |
AW: CHM-Datei im eigenen Formular anzeigen
Hallo CCRDude,
danke für den Tipp. Das hat mich schon weiter gebracht, aber leider noch nicht ans Ziel. Ich kann mit deinem Code das Hilfe-Fenster im Client-Bereich meines Formulars anzeigen. Allerdings sehe ich dann immer noch den Rahmen, der nicht zu meinem Style passt. Ich habe versucht, die störenden Bereiche mit Panels abzudecken. Das funktionert mit BringToFront auch. Aber sobald ich einmal außerhalb des Hilfe-Bereichs und dann wieder zurück klicke, kommen die abgedeckten Bereiche wieder zum Vorschein. Ich kann die Panels auch nicht wieder nach vorn bringen, weil ich kein Ereignis finde, das beim Klicken auf den Hilfe-Bereich ausgelöst wird. Am besten wäre es, wenn man nicht das gesamte Hilfe-Fenster, sondern nur den Client-Bereich in ein ein anderes Formular einfügen könnte. Dafür habe ich aber weder in SetWindow einen geeigneten Parameter noch sonst eine brauchbare Prozedur gefunden. Gruß! joehoehal |
AW: CHM-Datei im eigenen Formular anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
Das mit dem Client-Bereich meinte ich mit dem "Inhalt rausholen" :)
Mal kurz zwei Ansätze skizziert:
Nutzung in meinem Beispielprojekt:
Delphi-Quellcode:
Hab's mal angehängt :)
procedure TForm1.bn1Click(Sender: TObject);
begin Application.HelpShowTableOfContents; FHelper.Control := panel2; FHelper.Attach('titel meiner hilfedatei'); end; procedure TForm1.FormCreate(Sender: TObject); begin FHelper := THTMLHelpViewerHelper.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin FHelper.Free; end; procedure TForm1.panel2Resize(Sender: TObject); begin FHelper.ReAlign; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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