Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Hilfe mit F1 aufrufen (https://www.delphipraxis.net/29102-hilfe-mit-f1-aufrufen.html)

Luckie 3. Sep 2004 23:39


Hilfe mit F1 aufrufen
 
Ich benutze chm-Hilfe Dateien in meinem Programm. Drückt man im Hautpfenster F1, so öffne ich eine betsimmte Seite in der Hilfe:
Delphi-Quellcode:
procedure TForm1.WndProc(var message: TMessage);
begin
  inherited;
  case message.Msg of
    WM_HELP:
      begin
        HtmlHelp(Handle, PChar(MYHELPFILE + '::\Programmoberfläche.html'),
          HH_DISPLAY_TOPIC, 0);
      end;
  end;
end;
Die Funktion Htmlhelp ist aus der entsprechenden Jedi Unit.

Jetzt habe ich folgenden Effekt:
Ruft man die Hilfe mit F1 auf und schliueßt man das Programm, kommt es zu einer AV. Ruft man die Hilfe nicht auf, geht alles ohne Problem. Der Fehler muss also im obigen Code sein.
Rufe ich die Hilfe per Button-Klick auf, geht auch alles wunderbar.

S - tefano 3. Sep 2004 23:43

Re: Hilfe mit F1 aufrufen
 
Wie sieht denn der Code aus, der die Hilfe auf Buttondruck auslöst?

Luckie 3. Sep 2004 23:47

Re: Hilfe mit F1 aufrufen
 
Identisch:
Delphi-Quellcode:
HtmlHelp(Handle, PChar(MYHELPFILE+'::\Interneteinstellungen.html'), HH_DISPLAY_TOPIC, 0);

S - tefano 4. Sep 2004 00:05

Re: Hilfe mit F1 aufrufen
 
Hmgrl. Weder JCL- noch JVCL Doku wollen mir jetzt irgendwas zu "HtmlHelp" sagen.
Hat beim Buttonklick keine andere Zeile was mit dem Hilfsaufruf zu tun?
Und: Ich kenn mich mit inherited nicht so gut aus, hab mir in der OH grad nur ein bisl Text überflogen. Kanns sein dass die WndProc die du "inheritierst" vielleicht selbst auch auf irgendeine Weise auf F1 reagiert und nicht überschrieben wird?

Luckie 4. Sep 2004 00:13

Re: Hilfe mit F1 aufrufen
 
Ich habs. Das dynamische Linken mag er nicht. Der Schalter in der zugehörigen Include-Datei muss deaktiviert sein:
Delphi-Quellcode:
{.$DEFINE HTMLHELP_DYNAMIC_LINK}

S - tefano 4. Sep 2004 00:16

Re: Hilfe mit F1 aufrufen
 
Ah, auf DelphiSource hab ich schonmal rausgefunden dass es die Unit da separat zu geben scheint und von einem Holländer stammt ;-)
Im Tut auf DS wird die Prozedur hier allerdings so verwendet, dass auf "::" ein Slash, und kein Backslash folgt.
Aber das tut ja nicht viel zur Sache, wenns beim Buttonklick trotzdem reibungslos klappt.

Hmhmhm. Doof is des

Luckie 4. Sep 2004 00:17

Re: Hilfe mit F1 aufrufen
 
Jupp, stammt von Marcel van Brakel, könnte mich eigentlich mal wieder bei ihm melden im ICQ. :?

S - tefano 4. Sep 2004 00:17

Re: Hilfe mit F1 aufrufen
 
hups :mrgreen:
öhm... Naja, also gern geschehen, war mir eine Freude dir wichtige Tipps zu geben die dich der Lösung näher gebracht haben :oops: :zwinker:

MathiasSimmack 4. Sep 2004 07:18

Re: Hilfe mit F1 aufrufen
 
Zitat:

Zitat von Luckie
Ich habs. Das dynamische Linken mag er nicht. Der Schalter in der zugehörigen Include-Datei muss deaktiviert sein:
Delphi-Quellcode:
{.$DEFINE HTMLHELP_DYNAMIC_LINK}

Ich habe keine Probleme mit diesem Weg. Bei mir stürzt nichts ab. Aber in deinem Fall kann es jetzt Probleme geben bei 95 und NT4, da diese ja noch nicht von Haus aus mit CHM ausgerüstet waren.

Luckie 4. Sep 2004 07:45

Re: Hilfe mit F1 aufrufen
 
Das weiß ich. Aber es liegt definitiv an dem dynamischen Laden. Was soll ich also anderes machen?

MathiasSimmack 4. Sep 2004 10:13

Re: Hilfe mit F1 aufrufen
 
Dass es am dynamischen Laden liegt, glaube ich nicht. Dann müsste ja auch der normale Aufruf via Button (den du erwähnt hast) Probleme bereiten. Eigentlich unterstützt Delphi doch HLP-Dateien von sich aus. Und dank "OnHelp"-Ereignis kannst du doch diese Kommandos für CHM umbauen. Ich glaube, ein Abfangen von WM_HELP ist damit eigentlich nicht notwendig.


PS: Ich bin ja schon froh, dass du nicht einfach nur "ShellExecute" benutzt. ;)

Pölzl 13. Sep 2004 10:50

Re: Hilfe mit F1 aufrufen
 
Hallo Luckie,
du schreibst, dass du deine .chm mit der F1 Taste aufrufst.
Wie hast du deine Datei in Delphi eingebunden?
Mit HelpContext, oder HelpKeyword?

Ich habe folgsende Files runtergeladen: das zip-File Delphikit mit dem Inhalt hh.pas, hh_funcs.pas und hh_doc.txt, sowie das zip-File D6OnHelpFix mit dem Inhalt Compilers_.inc, D6OnHelpFix.pas und Readme.txt

Die .pas Dateien und die .inc Datei kopierte ich in das Source Verzeichnis für die Units.

Dann bin ich nach diesem Tutorial vorgegengen:
http://www.delphi-source.de/tutorials/htmlhelp/

Darin findet man aber nur eine Beschreibung für die Einbindung der .chm über HelpContext, nicht über HelpKeyword.
Und auch in der Unit hh_funcs wird in der Funktion HelpHook der Klasse THookHelpSystem nur Help_Context, Help_SetPopup_Pos und Help_ContextPopup unterstützt.

Wie kann man die .chm also über HelpKeyword einbinden?

Luckie 13. Sep 2004 13:44

Re: Hilfe mit F1 aufrufen
 
Ich habe es über HelpContext gemacht. Guckt dir hier mal www.simmack.de die Dokus zu der HxS Hilfe an, da ist auch ausführlich die CHM-Hilfe beschrieben.

Pölzl 15. Sep 2004 16:52

Re: Hilfe mit F1 aufrufen
 
Danke...

Das ist doch mal ne tolle Doku... Ich werd mir das jetzt mal anschauen


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