用HtmlHelp组件在Delphi应用程序中实现Html帮助

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 dreamaway 的 blog

 

    一个对用户友好的应用程序是应该有完善的在线帮助的。.hlp格式的帮助文件作为windows平台的标准帮助文件格式而得到了广泛的应用,同时也受到很多应用程序开发环境,比如delphi等的良好支持。随着微软从windows98开始支持.chm(已编译的 html 帮助文件)格式的帮助文件以来,这一界面更加友好的帮助文件格式得到了越来越广泛的应用。

    目前,delphi还不能象支持.hlp帮助那样直接地支持.chm格式的上下文帮助。但是,通过第三方的htmlhelp组件,在delphi应用程序中实现html帮助变得同样简单。本文详细地介绍了htmlhelp组件及其在开发delphi应用程序中的应用。

1.下载htmlhelp组件

    htmlhelp组件是在mpl许可证下发行的,该组件完全免费,并提供源代码供下载。下载网址为:http://www.serveisgirona.com/delphi/htmlh/index.htm。该组件的当前版本为1.0版。

2.安装htmlhelp组件

    打开下载得到的压缩包htmlpak.zip(无示例程序)或htmlall.zip(含示例程序),把它解压到一个目录下,比如\delphi5\lib\htmlhlp。在delphi中打开该目录下的hhpack.dpk文件,将弹出包管理器。点击包管理器工具栏的options按钮,在弹出的project options对话框的directories/conditionals选项卡上,将unit output directory选项设置为$(delphi)\lib。点击工具栏上的compile按钮编译该组件包,然后点击install按钮安装它。在完成正确的安装后,在delphi的组件栏上新增了一个名为html help的组件面板,该面板上只有htmlhelp一个组件。

3.htmlhelp组件的属性和方法

    htmlhelp只提供了几个简单实用的属性和方法,下面对它们作一个详细的介绍。

3.1htmlhelp的属性

htmlhelp提供了如表1所示的三个属性:表1 htmlhelp组件的属性属性名称数据类型类 型描 述 chmfilestringpublished帮助文件的名称。你必须把该属性设置成帮助文件的绝对路径和文件名,否则在程序运行过程中改变当前目录时程序找不到相应的帮助文件。 windefstringpublished你在创建html帮助文件的时候可能创建了自定义的窗口定义。你可以在这儿指定你要使用的窗口定义。 defautfilebooleanpublished你可以设置是否使用缺省的帮助文件名。当该属性设置为false时,组件将使用由chmfile指定的帮助文件。如果你将该属性设置为true,组件将自动把chmfile属性设置为空串,并在初始化时检查你是否设置了application.helpfile。如果设置了application.helpfile(在project options的application选项卡上设置或者在程序初始化主窗体前用代码设置),组件将检查并展开该helpfile属性值,以得到帮助文件的完整路径和文件名;如果你没有设置application.helpfile,组件将试图把帮助文件设置为应用程序所在目录下的与程序同名,但是扩展名为.chm的文件。 需要说明的是,在该组件的1.0版本中,在defaultfile属性的实现上有一些问题,并不能象组件的帮助文档中所说的那样完成自动搜寻功能。你要么把defaultfile属性设置为false,并在chmfile属性中设置帮助文件的绝对路径和文件名;要么把defaultfile属性设置为true,并在application.helpfile中指定帮助文件名(不能含任何路径信息)或帮助文件的绝对路径及文件名。笔者已经修改了该组件,并给组件作者发了信,相信作者很快就会推出修正版本。 3.2 htmlhelp组件的方法 htmlhelp提供了5个方法,用于控制显示相关的帮助窗口和帮助主题。表2 htmlhelp组件的方法方法定义方法描述 function helpcontext(contextid: dword): integer;显示与contextid关联的帮助主题。如果一个窗体上的delphi组件对象的helpcontext属性被设置,则在该对象获得焦点时,按下f1键后将调用该方法,并将helpcontext属性值传递给contextid。 function helptopic(topic: string): integer;显示以topic为主题的帮助信息。 function showindex:integer;在帮助窗口的导航面板上显示索引页。 function showtableofcontents:integer;在帮助窗口的导航面板上显示目录列表。 function showsearch:integer; 在帮助窗口的导航面板上显示搜索页。 4.使用htmlhelp组件 htmlhelp组件的使用十分方便。下面以一个简单示例来具体说明该组件的使用方法。该示例程序为一个简单的打开文件对话框,如图1所示。应用程序名为htmlhelpdemo.exe。

 图1 打开文件对话框


在delphi应用程序设计中使用htmlhelp组件实现html帮助的步骤如下: ⑴创建chm格式的帮助文件。你可以使用微软的html help workshop(下载地址为http://msdn.microsoft.com/library/tools/htmlhelp/wkshp/htmlhelp.exe)来创建chm帮助文件,也可以用第三方的帮助文件创作工具,比如help & mannual、dothelp等软件来创建。具体的创建方法请参见相关软件的使用手册,这里就不加讨论了。但必须要注意的一点是,要在应用程序中使用上下文帮助,就必须为相关的主题指定一个相应的contextid。在示例程序中,使用了一个名为htmlhelpdemo.chm的帮助文件。该文件包含了4个主题,分别为打开对话框、文件名称编辑框、浏览按钮和文件类型复选框的帮助信息,相应的contextid依次为1000、1001、1002和1003。 ⑵从html help组件面板上把一个htmlhelp组件放到应用程序的主窗体上,并设置其属性值。在本例中,因为打开对话框就是主窗体,因此该组件就放在它上面。通常情况下,可以直接使用其缺省的属性值,即将defaultfile设置为true,然后使用与应用程序位于同一目录下,文件名相同而扩展名为.chm的帮助文件,或者在application.helpfile属性中设置要使用的帮助文件名。当然,你也可以在组件的chmfile属性中指定要使用的帮助文件的绝对路径和文件名,但是不推荐这样做,因为通常不便于把帮助文件安装到固定的目录下。在本例中,全部使用了htmlhelp组件的缺省值,并且没有设置application对象的helpfile属性。 ⑶为需要显示上下文帮助的组件对象设置helpcontext属性值。比如在图2中,把文件名称编辑框组件的helpcontext设置为1001。



图2 设置组件对象的helpcontext属性


⑷在其它需要显示帮助信息的事件响应过程中,调用htmlhelp组件的相应方法。在本例中,当点击帮助按钮时,需要显示有关该对话框的帮助信息,其事件响应过程如下所示: procedure topendlg.helpbtnclick(sender: tobject); begin htmlhelp1.helpcontext(1000); end; ⑸完成应用程序设计的其它部分,并生成应用程序。在本例中,生成了名为htmlhelpdemo.exe的应用程序,并且把帮助文件htmlhelpdemo.chm拷贝到了相同的目录下。运行该程序,在文件名称编辑框获得焦点的情况下,按下f1键,弹出了如图3所示的帮助信息。



图3 文件名称编辑框的上下文帮助


点击帮助按钮时,显示了如图4所示的有关打开对话框的帮助窗口。


图4 打开对话框的帮助信息


5.结束语使用htmlhelp组件,可以很方便地在delphi应用程序中实现html帮助。尽管可以通过直接调用htmlhelp api等其它方法来实现该类帮助,但使用该组件无疑可以大大地减少编程工作量。

本文关键:HTML帮助,HtmlHelp组件,Delphi应用程序
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top