Announcement

Collapse
No announcement yet.

Aufruf Online-Hilfe in Anwendungen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Aufruf Online-Hilfe in Anwendungen

    Hallo.

    habe eine Anwendung mit einen Aufruf von Online-Hilfe mit Application.HelpCommand(HELPF_FINDER,0). Die Hilfedatei xxx.hlp ist über Projektoptionen/Anwendung mit Pfad eingebunden.

    Unter Delphi 7 wird das kompiliert und der o.a. Aufruf funktioniert einwandfrei. Der Inhalts-Bildschirm der Hilfe wird angezeigt

    Kompiliert man die gleiche Anwendung mit Delphi 2007, wird das Kompilieren ebenfalls anstandslos ausgeführt. Wird die Anwendung dann gestartet, passiert bei dem o.a. Kommando nichts.

    Habe dann beides mal mit Debug-DCUs durchgetackert. Offenbar läuft das in der Unit HelpIntfs.pas unter Delphi 2007 anders. Ich konnte aber nicht klären, woran das liegt.

    Kann da irgendjemand helfen?

    Mit freundlichem Gruß und Dank im Vorraus

    Hans Grigull

  • #2
    Unterstützt Delphi 2007 eh nur CHM-Hilfedateien?

    Comment


    • #3
      Hallo Bernhard,

      habe es grade mit einer chm-Hilfedatei probiert. Funktioniert in beiden Delphi-Versionen nicht. Die verwendete Methode TApplication.HelpCommand ist offenbar nur für die alte Windows-Hilfe zuständig.

      Gruß Hans

      Comment


      • #4
        Hallo Bernhard,

        hier noch eine Ergänzung:

        Der folgende Code funktioniert unter Delphi 7 nicht, aber unter Delphi 2007:

        uses HelpIntfs;

        procedure TForm1.Button1Click(Sender: TObject);
        var AHelpSystem: IHelpSystem;
        bOk: boolean; // Delphi 2007
        i: integer; // Delphi 7
        begin
        i := GetHelpSystem(AHelpSystem); // Delphi 7
        bOk := GetHelpSystem(AHelpSystem); // Delphi 2007
        AHelpSystem.ShowTopicHelp('Inhalt','EFPM.hlp');
        end;

        In Delphi 2007 wird in Unit HelpIntfs.pas in (Zeile 578) eine Fehlermeldung produziert. Hier das Code-Schnipsel aus HelpIntfs.pas für Delphi 2007:

        if HelpFileName <> '' then
        HelpFile := HelpFileName;

        { if nobody handles context-sensitive help, then bail. }
        if FExtendedViewerList.Count = 0 then // hier knallt es
        raise EHelpSystemException.CreateRes(@hNoContext)

        FExtendedViewerList.Count ist 0. Warum, das konnte ich nicht ermitteln. Wieso funktioniert das in Delphi 7, aber nicht in Delphi 2007?????

        In Delphi 7 funktioniert der o.a. Code nur mit Hilfedateien der alten Windows-Hilfe, nicht jedoch mit CHM-Dateinen der HTML-Hilfe. Es kommt eine Meldung, wonach die Datei keine Windows-Hilfedatei sei.

        Ich frage mich langsam, was da los ist

        Gruß Hans

        Comment


        • #5
          Hallo,

          habe die Lösung in untenstehendem Artikel gefunden. Der Patch funktioniert. Die üblichen Kommandos für die alte Windows-Hilfe funktionieren jetzt auch unter Delphi 2007. Wie man HTML-Hilfe aufruft, weis ich aber noch nicht.

          Hans Grigull

          -------------------------------------------------------------------------------------

          Porting an application using Winhelp32 to BDS 2006/7 the HelpJump calls appear not to work.

          Abstract: In porting a Delphi or C++Builder application using a Winhelp32 help file to BDS 2006/7 you might find that calls to HelpJump refuse to work

          This is due to an issue in WinHelpViewer.pas, the issue has been reported and should be resolved in later versions. But by modifying WinHelpViewer.pas as follows and adding the unit to your Delphi or C++Builder project the problem should be resolved.

          This will of course only work for NONE package using applications.

          { TWinHelpViewer --- IExtendedHelpViewer }

          { UnderstandsTopic is called by the Help Manager to ask if the Viewer
          is capable of displaying a topic-based help query for a given topic.
          Its default behavior, like all default behaviors in this file, is
          opposite for Windows than it is for linux. }

          function TWinHelpViewer.UnderstandsTopic(const Topic: String): Boolean;
          begin
          { after setting the defaults, if there's a Tester, ask it. }
          if Assigned(WinHelpTester) then
          Result := WinHelpTester.CanShowTopic(Topic, HelpFile(''))
          else
          //****** Modified*************
          {$IFDEF MSWINDOWS}
          Result := True;
          {$ENDIF}
          {$IFDEF LINUX}
          Result := False;
          {$ENDIF}
          //****** Modified*************
          end;
          Author: Roy Nelson

          Published on: 8/15/2007 6:50:54 AM

          Comment


          • #6
            Hallo,

            jetzt habe ich auch die Lösung für das Einbinden von HTML-Hilfe gefunden. Bitte http://dn.codegear.com/article/27842 lesen.

            Gruß Hans Grigull

            Comment

            Working...
            X