AW: HTML-Hilfedatei, keine Kontentanzeige
Hallo,
hier ruft sich die OnHelp wohl selber auf. @Es scheint eine echte Herausforderung zu sein ein Hilfesythem aufzubauen. |
AW: HTML-Hilfedatei, keine Kontentanzeige
Wo hast'n das
Delphi-Quellcode:
aufgerufen?
Application.HelpKeyword('Glossar');
Könnest du einfach mal den stacktrace kopieren, nach der exception? Ja ist es. Wir hatte da am Ende bestimmt 2-3 Monate lang immer mal wieder dran gesessen und versucht rauszufinden was nun wieder knallt, bis es dann bei allen großen Kunden mal lief. Aktuell hab ich das OnHelp selbst implementiert, da wir die Hilfeeinträge live aus der Datenbank ziehen und dort hinterlegt haben welches Control/Fenster mit welcher Hilfeseite verlinkt ist. * Hilfe = eine der HTML-Dateien vom Help&Manual, inkl. eines optionalen Anchor oder eine direkte URL * Die Tabelle ist auch in der Synchronisation, so daß man die Hilfe problemlos und voallem unabhängig von Programmupdates erweitern kann. Das Ganze wird standardmäßig an den Standardbrowser geschickt, kann aber auch Programmintern in einem Fenster mit TWebBrowser angezeigt werden. (ein alternatives Programmfenster mit Chromium war auch mal mit drin, aber ist dann doch wieder rausgeflogen, obwohl der TWebBrowser vorallem in Serverumgebungen mit Netzwerkpfaden nicht funktioniert) Und ein paar Anpassungen am JavaScript/CSS des Help&Manual waran damals auch nötig, weil der TWebBrowser damit nicht zurecht gekommen ist, bzw. diese Funktionen einfach "sperrte". Und dann läuft die Verbreitung mit über einen AppServer im Intranet, wo ich via TidHTTPServer die Hilfedateien freigebe. Die Dateien könnten aber auch via externem HTTP-Server oder Netzwerkfreigabe (file:) geladen werden. Und theoretisch kann man HTML-Dateien auch direkt aus den Resourcen einer EXE/DLL via RES:-Protokoll vom Windows streamen lassen. |
AW: HTML-Hilfedatei, keine Kontentanzeige
Hallo,
vielen Dank für die Unterstützung. ich Rufe Application.HelpKeyword('Glossar') im Form.onhelp auf. Ich betreibe die Programmierung als "Hobby", für meinen eigenen kleinen Betrieb, niuchts kommerzielles, und glaube jetzt meine Grenzen erreicht zu haben. wenn hier Profis 2-3 Monate zur Umsetzung benötigen will ich nicht abschätzen wie viel Zeit ich investieren muss. Wenn dies wirklich so kompliziert ist, dann werde ich wohl eher auf ein Hilfesystem in meiner Anwendung verzichten, bzw. erstellen uns als externe, also nicht über F1 aufrufbare, Hilfe aufbauen. Habe gerade mal über Batch versucht, vielleicht bekomm ich es über Shellexecute auch hin. Dennoch, und mit dem Thema Trace habe ich mich noch nicht befasst, dieses Thema hatte ich noch nicht, wie kann man diesen Trace ziehen ? |
AW: HTML-Hilfedatei, keine Kontentanzeige
Im Debug-Layout (wird beim Debuggen eigentlich automatisch geladen) die wichtigstens Fenster:
* Aufruf-Stack > Liste das auktuell aufgerufenen Funktionen (meistens oben links, da wo im Standard-Layout der Struktur liegt) * Thread-Status > der aktive Thread und die vorhandene Threads (meistens unten, bei den Compiler-Meldungen) * Liste überwachter Ausdrücke * Haltepunkte (wenn nicht vorhanden, dann siehe Ansicht > Debugfenster) Wenn der Programmablauf angehalten ist, z.B. nach einer Exception, dann einfach in Aufruft-Stack gehen, alles markieren und Strg+C. Programm mit F9 starten und warten bis es knallt ... meistens sieht man dann im Stack-Strace wo man grade ist und vorallem von wo die aktuelle Funktion/Codestelle aufgerufen wurde. |
AW: HTML-Hilfedatei, keine Kontentanzeige
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Tag,
hab es ganz einfach gelöst.Hilfe erstellt als HTM mit Knoten. Diese komplett in einen Ordner"Hilfe" geworfen.
Delphi-Quellcode:
Siehe Abbildung.Vielleicht hilft das weiter...
procedure TForm1.FormCreate(Sender: TObject);
//Hilfe über Browser öffnen und Fehler unterdrücken Webbrowser1.Silent := true; webbrowser1.navigate(extractfilepath(application.exename)+ 'Html/Hilfe.htm'); |
AW: HTML-Hilfedatei, keine Kontentanzeige
Zitat:
|
AW: HTML-Hilfedatei, keine Kontentanzeige
Hallo,
anbei mein Aufrufstack, die ersten Aufrufe, welche sich unzählige male wiederholen habe ich nicht mit dabei getan. F_Wkorb.TWkorb.FormHelp(1,1002,True) Vcl.Forms.TApplication.DoOnHelp(1,1002,True) Vcl.Forms.TApplication.HelpContext(1002) F_Wkorb.TWkorb.FormHelp(1,1002,True) Vcl.Forms.TApplication.DoOnHelp(1,1002,True) Vcl.Forms.TApplication.HelpContext(1002) F_Wkorb.TWkorb.FormHelp(1,1002,True) Vcl.Forms.TApplication.DoOnHelp(1,1002,True) Vcl.Forms.TApplication.HelpContext(1002) F_Wkorb.TWkorb.FormHelp(1,1002,True) Vcl.Forms.TApplication.DoOnHelp(1,1002,True) Vcl.Forms.TApplication.HelpContext(1002) Vcl.Forms.TCustomForm.WMHelp((83, (), 0, $8ADF0, 0)) Vcl.Controls.TControl.WndProc((83, 0, 568816, 0, 0, 0, (), 44528, 8, (), 0, 0, ())) Vcl.Controls.TWinControl.WndProc((83, 0, 568816, 0, 0, 0, (), 44528, 8, (), 0, 0, ())) Vcl.Forms.TCustomForm.WndProc((83, 0, 568816, 0, 0, 0, (), 44528, 8, (), 0, 0, ())) Vcl.Controls.TWinControl.MainWndProc(???) System.Classes.StdWndProc(330554,83,0,568816) Vcl.Controls.TWinControl.DefaultHandler(???) |
AW: HTML-Hilfedatei, keine Kontentanzeige
Hilfe-Aufrufe werden erst an Application.OnHelp, bzw. TApplicationEvents.OnHelp geleitet und wenn sie dort nicht verarbeitet wurden, dann auch nochmal an ActiveForm.OnHelp und erst danach landet der Aufruf bei
Delphi-Quellcode:
HelpSystem.Hook(..., ActiveForm.HelpFile, {Hilfe-Index/Context}...) // wenn eine Hilfe-Datei bei ActiveForm.HelpFile angegeben wurde
und wenn nicht vorhanden oder es False lieferte, dann bei
Delphi-Quellcode:
HelpSystem.Hook(..., Application.HelpFile, {Hilfe-Index/Context}...) // wenn eine Hilfe-Datei bei Application.HelpFile angegeben wurde
und wenn es das auch nicht gibt, oder es ebenfalls False lieferte, dann bei CM_INVOKEHELP
Delphi-Quellcode:
PostMessage(..., CM_INVOKEHELP, {Hilfe-Index/Context}...);
Wenn man also in einem dieser OnHelp die Hilfe nochmals aufruft, dann landet man natürlich in einer Endlosschleife, außer man verlässt diese Hilfestruktur, verarbeitet den Aufruf selber oder gibt den Aufruf direkt an das HelpSystem oder CM_INVOKEHELP weiter (und sagt natürlich Result:=True und CallHelp:=False). Wenn die Parameter Command und Data richtig sind und man nichts "Anderes" aufrufen will, dann kann man mit Result:=True und CallHelp:=True der Hilfestruktur sagen, daß es das selber an HelpSystem oder CM_INVOKEHELP weitergeben soll, ohne andere OnHelp auszulösen. |
AW: HTML-Hilfedatei, keine Kontentanzeige
Hallo,
vielen Dank, klingt alles plausibel, ich habe nun meine Eintragungen im OnHelp gelöscht. Ich bin einen Schritt weiter, wenn ich über einen Button die Hilfe mit Application.HelpCommand(HELP_CONTEXT,1002) aufrufe funktioniert es. So, nun läuft es. Ich habe nun im OnShow Application.HelpFile := ExtractFilePath(Application.ExeName) + 'LHelp.chm'; angegeben und nun läuft es. (bisher hatte ich diese im OnCreate ...) Vielen Dank für die Unterstützung mich auf den weg zu bringen.... |
AW: HTML-Hilfedatei, keine Kontentanzeige
Zitat:
genau so möchte ich das auch bauen. Dabei gibt es das Problem, dass der ANCHOR nicht gefunden wird. Wie hast Du die Verknüpfung zu Bildern und anderen Webseiten innerhalb der Datenbank gelöst? Gibt es da eventuell ein kleines Beispiel-Project? Viele Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 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