繁体   English   中英

如何在Delphi XE中使用A-links和A-keywords与CHM帮助文件?

[英]How to use A-links and A-keywords with CHM help file in Delphi XE?

A-links和A-keywords中的“A”代表“关联”。 这是因为A-link关键字实际上不是关键字。 它们更像是链接或跳跃目标(在H&M中称为锚点)。 它们永远不会像索引关键字那样对用户可见。 它们被称为“联想”,因为它们不是绝对的目标。

如何在Delphi XE中通过A-keyword调用CHM帮助?

我在helpintfs中看不到任何支持。

我用D2006 / FPC尝试过一次,并将结果提交给FPC:

你需要单位“htmlhelp”

http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/packages/winunits-base/src/htmlhelp.pp?view=co

并在该文件中执行一些ansi-> unicode转换(例如将所有pchar更改为pansichar,使用native(u)int等替换所有pc(u)int)

此文件具有常量HH_ALINK_LOOKUP,afaik可用于查找alink和关键字。

这可以传递给htmlhelp函数。 下面的代码来自Free Pascal并使用ansistrings,但它可能在Delphi中类似

{$apptype console}
Uses HTMLHelp;

var
   keyword      : ansistring;
   HelpfileName : AnsiString;
   htmltopic    : AnsiString;
   res          : Integer;
   ah           : PHH_AKLINK ;

Begin
  Helpfilename:='rtl.chm';
  keyword:='Sysutils' ;

  New(ah);
  fillchar(ah^,sizeof(ah^),#0);
  ah.cbstruct:=sizeof(tagHH_AKLINK);
  ah.fReserved   := FALSE ;
  ah.pszKeywords :=pansichar(keyword);
  ah.pszUrl      := NIL ;
  ah.pszMsgText  :='Text succes' ;
  ah.pszMsgTitle :='Text fail';
  ah.pszWindow   := NIL ;
  ah.fIndexOnFail:= false;


  Res:=HtmlHelpA(0,pansichar(helpfilename) ,HH_DISPLAY_INDEX,PTRUINT(PAnsiChar(Keyword)));

  // keyword search seems to have same effect.
  Res:=HtmlHelpA(0,pansichar(helpfilename) ,HH_ALINK_LOOKUP,PTRUINT(AH));
  writeln(ah.pszkeywords);
  writeln(ah.pszurl);
  writeln(ah.pszmsgtext);
  writeln(ah.pszmsgtitle);
  writeln(ah.pszwindow);
  writeln(res);

 readln;
end.

Windows API函数HTMLHelp可直接在Windows单元中使用。 您需要HH_ALINK_LOOKUP命令。

如果你正在使用HelpInfts的帮助系统,HtmlHelpViewer单元包含THtmlHelpViewer,它包含处理ALinks的各种方法 - 特别是LookupALink。 不幸的是,似乎没有类型的文档,所以你必须自己深入了解源代码(这很简单,所以你不应该有太多麻烦)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM