A-links和A-keywords中的“A”代表“关联”。这是因为A-link关键字实际上不是关键字。它们更像是链接或跳跃目标(在H& M中称为锚点)。它们永远不会像索引关键字那样对用户可见。它们被称为“联想”,因为它们不是绝对的目标。
如何在Delphi XE中通过A-keyword调用CHM帮助?
答案 0 :(得分:1)
我在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等替换ptr(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.
答案 1 :(得分:1)
Windows单元中可以直接使用Windows API函数HTMLHelp
。您需要HH_ALINK_LOOKUP命令。
如果你正在使用HelpInfts的帮助系统,HtmlHelpViewer单元包含THtmlHelpViewer,它包含处理ALinks的各种方法 - 特别是LookupALink。不幸的是,似乎没有类型的文档,所以你必须自己深入了解源代码(这很简单,所以你不应该有太多的麻烦)。