繁体   English   中英

Delphi XE2:跳转到CHM中的锚点?

[英]Delphi XE2: Jumping to an anchor in CHM?

在Delphi XE2程序中,如何跳转到CHM帮助文件主题中的锚点? 锚具有以下格式(从HTML HelpViewer中显示CHM文件的主题页面的源中提取):

<a name="my_anchor_id"></a>

我尝试了以下方法:

Application.HelpJump('MyTopicName.htm#my_anchor_id');

不幸的是,这不起作用:它确实跳到了这个主题,但只是跳到主题的顶部,而不是主题,这是几个向下滚动的页面。

跳到CHM的锚点
使用Delphi2010测试 - DelphiXE2 - Windows XP

如何使用Delphi跳转到chm文件(Compiled HTML Help)中的锚点

是的,可以使用HtmlHelp()命令跳转到锚点。
<a name="my_anchor"></a>

 HtmlHelp(0,hpPath+'::/Overview.htm#UsingtheMenus>main',HH_DISPLAY_TOPIC,DWORD(nil));

链接: Overview.htm

  • 注意:通过delphi程序跳转到不需要此链接
    锚点。(仅用于测试)。

Overview.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
[...]
<BODY bgColor=#f7f8e2>
<H1>Overview</H1>
<A HREF="Overview.htm#UsingtheMenus">Using the Menus</A>
[...]

ANCHOR在: Overview.htm

[...]
<A NAME="UsingtheMenus" </A>
<P><STRONG>Using the Menus and Toolbars</STRONG>
[...]

如果有人想尝试。

以下是更多信息和测试程序:

在此输入图像描述

运行Project1.exe并选择不:

在此输入图像描述

Unit1.pas /命令

procedure TForm1.Button2Click(Sender: TObject);
begin
    HtmlHelp(0,hpPath+'::/Overview.htm#UsingtheMenus>main',HH_DISPLAY_TOPIC,DWORD(nil));
end;
  • 单击按钮Overview.htm#UsingtheMenus

结果:

将打开帮助文件并显示overview.htm 它被跳到了锚点。

在此输入图像描述


下载源Project1.exe D2010和XE2。
下载源sample.chm HtmlHelp项目。

下载


现在让我们测试其他2个按钮

procedure TForm1.HelpKeywordClick(Sender: TObject);
begin
  Application.HelpKeyword('UsingtheMenus');
end;

procedure TForm1.HelpContextClick(Sender: TObject);
begin
  Application.HelpContext(IDH_UsingtheMenus);
end;
  • 单击Button HelpKeyword('UsingtheMenus')

结果:

将打开帮助文件并显示FirstTopic.htm 文本UsingtheMenus插入searchfield。 没有跳到锚!


  • 单击Button HelpContext(IDH_UsingtheMenus)')

除搜索框外,相同的结果为空。


最后2次点击演示如下:
HelpFile2 \\ sample.chm文件中没有秘密ID或关键字可用。


现在我们更改帮助文件,以便除了Overview.htm#UsingtheMenus ,其他两种方法也会成功。

  • 关闭App'Project.exe`
  • 再次运行'Project.exe`。
  • 确保with被选中。

现在我们在文件夹HelpFile中使用“sample.chm”
使用以下设置。

sample.h

#define IDH_Creating_Projects_and_Topics 1005
#define IDH_Overview 1003
#define IDH_UsingtheMenus 1009

sample.ali

IDH_Overview=Overview.htm
IDH_welcom=FirstTopic.htm
IDH_UsingtheMenus=Overview.htm#UsingtheMenus

sample.hcc

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
[...]
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="Using the Menus">
            <param name="Local" value="Overview.htm#UsingtheMenus">
        </OBJECT>   
[...]
</HTML>

sample.hhk

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
[...]
    <LI> <OBJECT type="text/sitemap">
        <param name="Name" value="Using the Menus">
        <param name="Name" value="Using the Menus">
        <param name="Local" value="Overview.htm#UsingtheMenus">
        </OBJECT>   
[...]
</HTML>

如果我们编译“sample.chm”,我们会收到一条错误消息。

HHC3015: Warning: An alias has been created to "Overview.htm#UsingtheMenus" but the file does not exist.

这是正常的,因为文件“Overview.htm#Using theMenus”并不存在!

我们来试试吧

不要忘记,尝试以下各项后的“帮助窗口”,再次关闭。 否则您无法跟踪不同的状态。

  • 单击Button HelpKeyword('UsingtheMenus')

在此输入图像描述

结果:
将打开帮助文件并显示FirstTopic.htm 文本UsingtheMenus插入searchfield。 在列表框中选择文本UsingtheMenus
如果单击“ Show
它被跳到了锚点。


  • 单击Button HelpContext(IDH_UsingtheMenus)')

结果:

将打开帮助文件并显示overview.htm 它被跳到了锚点。


  • 单击按钮Overview.htm#UsingtheMenus

结果:

与上述结果相同。
将打开帮助文件并显示overview.htm 它被跳到了锚点。


现在我们可以使用三种方法之一跳转到所需的标记。


如果有人对其他按钮的功能感兴趣,请继续阅读并获取更多信息。

将在明天继续。

暂无
暂无

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

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