首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Delphi :跳到XE2中的锚?

Delphi :跳到XE2中的锚?
EN

Stack Overflow用户
提问于 2012-09-05 20:33:38
回答 1查看 1.8K关注 0票数 6

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

代码语言:javascript
运行
复制
<a name="my_anchor_id"></a>

我尝试了以下几种方法:

代码语言:javascript
运行
复制
Application.HelpJump('MyTopicName.htm#my_anchor_id');

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-15 11:01:31

跳转到CHM中的锚点

使用Delphi2010 - DelphiXE2 - Windows XP进行测试

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

是,可以使用HtmlHelp()命令跳转到锚点。

<a name="my_anchor"></a>

代码语言:javascript
运行
复制
 HtmlHelp(0,hpPath+'::/Overview.htm#UsingtheMenus>main',HH_DISPLAY_TOPIC,DWORD(nil));

中的链接: Overview.htm

  • 注:此链接是不需要通过跳转到的程序

锚。(仅用于测试)。

Overview.htm

代码语言:javascript
运行
复制
<!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>
[...]

在: Overview.htm中锚点

代码语言:javascript
运行
复制
[...]
<A NAME="UsingtheMenus" </A>
<P><STRONG>Using the Menus and Toolbars</STRONG>
[...]

如果有人想尝试的话请使用。

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

运行Project1.exe并选择不带

Unit1.pas /命令

代码语言:javascript
运行
复制
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项目。

现在让我们测试一下另外两个按钮

代码语言:javascript
运行
复制
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被插入到搜索字段中。不跳转到锚点!

单击按钮HelpContext(IDH_UsingtheMenus)')

除了搜索框为空外,其他结果相同。

在这里演示最后两次点击::

在文件HelpFile2\sample.chm中没有可用的密钥ID或关键字。

现在,我们将帮助文件更改为,这样除了Overview.htm#UsingtheMenus之外,其他两种方法都会成功。

  • 再次关闭应用程序'Project.exe`
  • Run的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

代码语言:javascript
运行
复制
<!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

代码语言:javascript
运行
复制
<!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')

结果是:

打开帮助文件并显示FirstTopic.htm。文本UsingtheMenus被插入到搜索字段中。文本UsingtheMenus在列表框中处于选中状态

如果单击Show

是跳到了锚上。

单击按钮HelpContext(IDH_UsingtheMenus)')

结果是:

打开帮助文件并显示overview.htm。是跳到了锚上。

单击按钮Overview.htm#UsingtheMenus,单击

结果是:

与上面的结果相同。

打开帮助文件并显示overview.htm。是跳到了锚上。

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

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

明天会继续进行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12281543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档