Einzelnen Beitrag anzeigen

champagner

Registriert seit: 29. Apr 2008
46 Beiträge
 
Delphi XE6 Professional
 
#1

HtmlHelpViewer "HH_Help_Context called without a [MAP] section"

  Alt 9. Feb 2013, 15:24
Hallo,

ich habe folgendes Problem:

Ich habe eine ganz normale Hilfe erstellt (mit 6 Buttons) und die Units HTMLHelpViewer und HelpFile eingebunden.
Dann habe ich per "MS HTML Help Workshop" eine .chm erstellt.

Wenn ich jetzt das Programm laufen lasse:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, HTMLHelpViewer, HelpFile, pngimage, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Inhaltsverzeichnis: TButton;
    Stichwoerter: TButton;
    Thema_suchen: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure InhaltsverzeichnisClick(Sender: TObject);
    procedure StichwoerterClick(Sender: TObject);
    procedure Thema_suchenClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure buSetWinPosClick(Sender:TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.HelpFile := ExtractFilePath(Application.ExeName) +
    'HelpFile\HelpFile.chm';
  Label1.Caption:= Application.HelpFile;
end;


procedure TForm1.InhaltsverzeichnisClick(Sender: TObject);
begin
    HtmlHelp(0, Application.HelpFile, HH_DISPLAY_TOC, 0);
end;

procedure TForm1.StichwoerterClick(Sender: TObject);
begin
  HtmlHelp(0, Application.HelpFile, HH_DISPLAY_INDEX, DWORD(PWideChar('Test')));
end;

procedure TForm1.Thema_suchenClick(Sender: TObject);
var
  Query: THH_Fts_QueryW;
begin
  with Query do
  begin
    cbStruct:= SizeOf(THH_Fts_QueryW);
    fUniCodeStrings:= True;
    pszSearchQuery:= '';
    iProximity:= 0;
    fStemmedSearch:= True;
    fTitleOnly:= False;
    fExecute:= True;
    pszWindow:= nil;
  end;
  HtmlHelp(0, Application.HelpFile, HH_DISPLAY_SEARCH, DWORD(@Query));
end;



procedure TForm1.Button4Click(Sender: TObject);
begin
  Application.HelpContext(IDH_TOPIC30);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  Application.HelpContext(IDH_TOPIC40);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  Application.HelpKeyword('Test');
end;

end.

und ich eine spezielle Hilfeseite aufrufe (z.B. über den Button 4 die # 30), kommt die Meldung "HH_Help_Context called without a [MAP] section".

Wenn ich es aber richtig sehr, dann enthält mein "HelpFile.pas" doch wohl die MAP, oder (?):

Delphi-Quellcode:
unit HelpFile;

interface

const
  IDH_TOPIC10 = 10;
  IDH_TOPIC20 = 20;
  IDH_TOPIC30 = 30;
  IDH_TOPIC40 = 40;
  IDH_TOPIC50 = 50;

implementation

end.

Im "MS HTML Help Workshop" habe ich der Nr. 30 eine .htm-Seite zugewiesen. Ich habe also im "MS HTML Help Workshop" keine alias-Datei included, sondern unter alias per "add" folgendes eingegeben: "30=Seite_1.htm". Eine MAP habe ich auch nicht eingebunden; die ist ja wohl(???) die HelpFile.pas.

Oder muss ich die alias-Daten (Zuweisung der Nummer zu einer bestimmten Hilfe) in die HelpFile.pas einpflegen oder eine gesonderte Datei?


Freundlichsten Dank!
  Mit Zitat antworten Zitat