设置Delphi应用程序的帮助

时间:2009-03-18 13:11:25

标签: delphi

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

  1. 我可以在适当的时候在表单设计器中设置HelpContext,但是我不得不跟踪数字而不是符号常量。
  2. 我可以通过编程方式设置HelpContext。然后我可以使用符号常量,但是我有更多的代码可以跟上,我无法轻松检查文本DFM以查看哪些表单仍然需要帮助。
  3. 我可以设置HelpKeyword,但由于这样做了关键字查找(比如Application.HelpKeyword)而不是主题跳转(比如Application.HelpJump),我必须确保每个帮助页面都有一个唯一的,不变的顶级关键字;这似乎是额外的工作。 (还有与thisthis相关的与HelpKeyword相关的VCL错误。)
  4. 我可以设置HelpKeyword,设置Application.OnHelp处理程序,将HelpKeyword请求转换为HelpJump请求,这样我就可以按主题ID而不是关键字查找来分配帮助,并添加代码,例如我自己的帮助查看器(基于{{3修复VCL错误并让HelpJump与锚点一起工作。不过,到目前为止,我觉得我正在与VCL而不是VCL合作。
  5. 您为自己的应用选择了哪种方式?

4 个答案:

答案 0 :(得分:6)

几年前,当我第一次开始研究如何做到这一点时,我首先得到了“所有关于Borland Delphi的帮助文件”教程:http://www.ec-software.com/support_tutorials.html

在该文档中,“为上下文相关帮助准备帮助文件”一节(在我的文档版本中从第28页开始)。它描述了一个很好的编号方案,您可以使用它来将数字组织成部分,例如从主表单的100000开始,每个辅助表单继续使用101000或110000等。

但是我想在我的帮助主题中使用描述性字符串ID而不是数字。我开始使用THelpRouter,它是EC Software免费帮助套件的一部分:http://www.ec-software.com/downloads_delphi.html

但后来我选择了一个直接支持字符串ID的帮助工具(我使用Dr. Explain:http://www.drexplain.com/)所以现在我只使用HelpJump,例如:

  

Application.HelpJump( 'UGQuickStart');

我希望有所帮助。

答案 1 :(得分:4)

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

答案 2 :(得分:1)

我创建帮助文件,获取帮助主题ID,然后绕过表单并将HelpContext值设置为它们。由于所需的维护级别非常低 - 除非发生重大事件,否则表单不太可能改变帮助文件上下文 - 这样可以正常工作。

答案 3 :(得分:1)

我们使用帮助和手册 - 它是一个很棒的工具,输出几乎任何你想要的格式,doc,rtf,html,pdf - 所有这些都来自同一个来源。它甚至会读入(或从rtf粘贴(例如MSWord)。它使用主题ID(字符串),我只保留一个列表,我手动将每一个放入一个适合我的表格(或类)。听起来很难但是相信我,你会花更多的时间来讨厌错误的authouring工具。我花了多年时间找到它! 布赖恩