Hilfe datei in Projekt einbinden



  • Hallo,

    also ich habe mir eine Hilfe Datei für mein Programm geschrieben. Jetzt wüsste ich gerne wie ich es schaffen kann sie mi F1 oder aus einem Menü heraus aufzurufen.
    Ich habe sie unter optionen schon in mein Projekt eingebunden aber es zeigt keine Wirkung.
    Wer hat eine Idee???



  • Welches Format hat denn deine Hilfedatei?

    Der BCB unterstützt nur das alte (HLP) Format.
    Wenn du eine HTML-Hilfe (CHM) erstellt hast, dann brauchst du noch einen Zusatz, damit diese Hilfe angezeigt werden kann.



  • Die Datei ist im hlp format.



  • Beispielaufruf von einem Button:

    // stelle Pfad zur Hilfedatei her
    // kann auch im OI des Formulars bzw
    // unter den Projektoptionen eingestellt werden 
    Application->HelpFile = "PathToHelp.HLP";
    // zeige die Hilfedatei mit der Startseite an
    // (um Kontext-sensitive Hilfen zu erstellen,
    // muss für die entprechende Komponente der HelpContext
    // entsprechend gesetzt werden)
    Application->HelpCommand(HELP_CONTENTS, 0);
    


  • Und wie bindet man einen CHM-File ein?



  • ok danke das hilft mir weiter.
    Wie kann ich denn das aktuelle Arbeitsverzeichnis ermitteln in dem mein Prog gerade läuft. Also zb Desktop oder so?



  • Für HTML-Help-Dateien:

    Ich habe da erst ein entsprechendes Kit herunterladen müssen. Dieses stellt dann zwei Pascal-Units zur Verfügung, die man ins Projekt einbinden muss.
    Dann hat man Zugriff auf eine Klasse, die die API der HTML-Help kapselt.

    Den Link zu dem Kit findest du unter: http://www.helpware.net/delphi/index.html

    Hier musst du das Delphi-Kit herunter laden, und dann die LIB + 2 Pascal-Units einbinden.

    Danach kannst du den Zugriff im Code folgendermassen herstellen:

    //im Konstruktor z.B.
    
      // setze den Pfad zur Hilfedatei
      HilfePfad = ::ExtractFilePath(ParamStr(0)) + "ID-Hilfe.chm";
      HilfePfad = ::ExpandFileName(HilfePfad);
    
      // wenn Pfad zur Hilfedatei nicht korrekt
      if (!FileExists(HilfePfad))
      {
        // Variablendeklaration
        AnsiString Meldung = "Die Hilfe-Datei ("+HilfePfad;
        Meldung += ") wurde nicht gefunden!";
        Meldung += "\nBitte stellen Sie sicher, dass sich die Datei ";
        Meldung += "im Programmverzeichnis befindet!";
    
        // gib Meldung aus, dass Hilfedatei nicht gefunden wurde
        Application->MessageBox(Meldung.c_str(),
                                "Fehler bei Hilfe-Datei",
                                MB_OK + MB_ICONERROR);
      }
    
      // erzeuge Zugriff auf das Hilfe-System
      HilfeZugriff = new THookHelpSystem(HilfePfad, "", htHHAPI);
    
      // wenn Hilfe-System nicht geladen
      if (HHCtrlHandle == 0)
      {
        // gib Meldung aus, dass Hilfe-System nicht geladen ist
        Application->MessageBox("Die Hilfe konnte nicht geladen werden!",
                                "Fehler bei Zugriff auf Hilfe",
                                MB_OK + MB_ICONERROR);
      }
      // Hilfe-System wurde geladen
      else
      {
        // initialisiere Zugriff auf Hilfe
        HtmlHelp(NULL, NULL, HH_INITIALIZE, (DWORD)&Cookie);
      }
    
    // im Destruktor
      // lösche THelpSystemHook-Objekt (Hilfe-Zugriff)
      // und gib Speicher wieder frei
      delete HilfeZugriff;
      HilfeZugriff = NULL;
    
      // schliesse Verbindung zum Hilfe-System
      if (HHCtrlHandle != 0)
      {
        HtmlHelp(NULL, NULL, HH_UNINITIALIZE, (DWORD)Cookie);
      }
    

    Damit kannst du jetzt auch ganz normal den HelpContext und die F1-Funktionalität verwenden.

    Weitere Infos dazu: http://www.tutorials.delphi-source.de/htmlhelp/

    [ Dieser Beitrag wurde am 07.02.2003 um 15:32 Uhr von JeGr editiert. ]

    [ Dieser Beitrag wurde am 07.02.2003 um 15:37 Uhr von JeGr editiert. ]



  • Habe gerade mal geschaut, ist das nicht für Html Hilfedateien?
    Ich habe doch eine normale hlp Datei und das öffnen klappt auch schon, nur wenn ich das Programm auf dem desktop habe und von da aus starte dann sagt er das er das Help file nicht findet und beim Suchen ist das Start verzeichnis irgendwo nur nicht desktop.
    Aus anderen verzeichnissen heraus klappt es schon.



  • Danke für den Tip!


Anmelden zum Antworten