为 Delphi 应用程序设置帮助

7

最佳方式设置Delphi应用程序的帮助(特别是HTML Help)是什么?我可以看到几个选项,但都有缺点。具体如下:

  1. 我可以在表单设计器中适当设置HelpContext,但这样我就必须跟踪数字而不是符号常量。
  2. 我可以以编程方式设置HelpContext。然后我可以使用符号常量,但我需要更多的代码进行跟踪,并且我不能轻松地检查DFM文本以查看哪些表单仍需要帮助。
  3. 我可以设置HelpKeyword,但由于它执行关键字查找(例如Application.HelpKeyword)而不是主题跳转(例如Application.HelpJump),因此我必须确保我的每个帮助页面都有一个唯一的、不变的顶级关键字;这似乎是额外的工作。(还有HelpKeyword相关的VCL错误,如thisthis。)
  4. 我可以设置HelpKeyword,设置一个Application.OnHelp处理程序将HelpKeyword请求转换为HelpJump请求,以便我可以按主题ID分配帮助,而不是关键字查找,并添加自己的帮助查看器的代码(基于HelpScribble's code),该查看器修复了VCL错误并使HelpJump与锚点一起工作。但到这个时候,我感觉我正在对抗VCL而不是与之合作。

你选择了哪种方法来开发你的应用程序?

4个回答

6
当我几年前开始研究如何做这件事时,首先从“Borland Delphi中的所有帮助文件”教程中获得了帮助:http://www.ec-software.com/support_tutorials.html。在该文档中,“为上下文相关帮助准备帮助文件”的部分(在我的版本中从第28页开始)描述了一个很好的编号方案,您可以使用它来将数字组织成部分,例如从100000开始为主表单,然后对于每个次要表单使用101000或110000等。
但是后来我想使用描述性字符串ID而不是数字来管理我的帮助主题。我开始使用THelpRouter,它是EC Software免费Help Suite的一部分,网址为:http://www.ec-software.com/downloads_delphi.html
但后来我选择了支持直接使用字符串ID的帮助工具(我使用Dr. Explain:http://www.drexplain.com/),因此现在我只需使用HelpJump,例如:

Application.HelpJump('UGQuickStart');

希望这能帮到您。

4
我们使用符号常量。是的,这需要更多的工作,但它会带来回报,特别是因为我们的一些对话框是动态构建的,有时需要不同的帮助ID。

1
我创建了帮助文件,获取帮助主题ID,然后遍历表单并将它们的HelpContext值设置为它们。由于维护所需的级别非常低 - 表单不太可能更改帮助文件上下文,除非发生重大事件 - 这种方法完全可行。

目前,我喜欢将我们的代码保持最少化,所以我接受这个解决方案,但其他答案也有很好的信息。 - Josh Kelley

1

我们使用Help&Manual - 这是一个非常好的工具,可以输出几乎任何格式的内容,如doc、rtf、html、pdf等,都来自同一源。它甚至可以读取(或从rtf(例如MSWord)中粘贴)。它使用主题ID(字符串),我只需将每个主题ID手动放入适合我的表单(或类)中。听起来很困难,但相信我,你会花更长的时间讨厌错误的创作工具。我花了多年时间才找到它! Brian


我们也在使用Help&Manual,但是您如何让表单使用主题ID?Delphi的HelpKeyword似乎不使用主题ID;您是否以编程方式将HelpContext设置为主题ID的编号,还是采取其他措施? - Josh Kelley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接