gpt4 book ai didi

德尔福XE2 : Jumping to an anchor in CHM?

转载 作者:行者123 更新时间:2023-12-03 15:01:56 31 4
gpt4 key购买 nike

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

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

我尝试了以下方法:

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

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

最佳答案

跳转到 CHM 中的 anchor
使用 Delphi2010 - DelphiXE2 - Windows XP 进行测试

如何使用 Delphi 跳转到 chm 文件(编译的 HTML 帮助)中的 anchor

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

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

链接: Overview.htm

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

概述.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>
[...]

如果有人想尝试的话。

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

enter image description here

运行 Project1.exe 并选择不带:

enter image description here

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出现。它跳到了 anchor 。

enter image description here

<小时/>

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

Download

<小时/>

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

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

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

结果:

帮助文件打开,FirstTopic.htm出现。文字UsingtheMenus被插入到搜索字段中。 禁止跳转到 anchor !

<小时/>
  • 点击按钮HelpContext(IDH_UsingtheMenus)')

结果相同,只是搜索框为空。

<小时/>

最后 2 次点击显示在此处:
文件 HelpFile2\sample.chm 中没有可用的 secret ID 或关键字

<小时/>

现在我们更改帮助文件,除了 Overview.htm#UsingtheMenus另外两种方法都成功。

  • 关闭应用程序“Project.exe”
  • 再次运行“Project.exe”。
  • 确保 with已选择。

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

样本.h

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

样本.ali

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

样本.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>

样本.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#UsingtheMenus”并不真正存在!

我们来试试

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

  • 点击按钮HelpKeyword('UsingtheMenus')

enter image description here

结果:
帮助文件打开,FirstTopic.htm出现。文字UsingtheMenus被插入到搜索字段中。文字UsingtheMenus在列表框中选择
如果您点击Show
跳到了 anchor 。

<小时/>
  • 点击按钮HelpContext(IDH_UsingtheMenus)')

结果:

帮助文件打开,overview.htm出现。它跳到了 anchor 。

<小时/>
  • 点击按钮Overview.htm#UsingtheMenus

结果:

与上面的结果相同。
帮助文件打开,overview.htm出现。它跳到了 anchor 。

<小时/>

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

<小时/>

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

明天继续。

关于德尔福XE2 : Jumping to an anchor in CHM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12281543/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com