Delphi 使用CHM文件制作系统帮助文档(上下文感知帮助的制作)

一、基础知识简介

        使用帮助提示窗口或状态栏只能提供简单、单一的帮助,无法对某一模块或应用程序整体提供系统的

帮助,因此运行Windows应用程序,需要帮助时一般都可以通过执行帮助菜单获得整个应用程序的帮助,也可

运行某一部分时单击帮助按钮或按“F1”键获得相关的帮助。Delphi应用程序能够方便地应用帮助系统。下面介

绍应用程序动态地运行帮助系统的方法。

 

1、CHM文件的结构

        CHM(Compiled Help Manual):已编译的帮助文件,是微软新一代的帮助文件格式,利用HTML作源

文,把帮助内容以类似数据库的形式编译储存。一个主题一个html文件,然后合成一个完整的chm文件。

 

2、CHM文件反转成HTML文件的方法

        可以利用Windows自带的hh.exe文件来进行文件格式转换,语法为:hh -decompile 目标文件夹源C

HM文件名。

        hh.exe是微软windows系统程序,CHM扩展名的帮助文件默认是用hh.exe打开。如果用户此时并没有查

看chm格式的电子书文件或帮助文件,hh.exe又在进程中反复出现,则可能中了hh.exe病毒。在正常情况下不建议

用户对该类文件(hh.exe)进行随意的修改。它的存在对维护计算机系统的稳定具有重要作用。

 

3、使用Windows操作系统的API函数:HtmlHelpA:(HtmlHelpA位于hhctrl.ocx)

Function HtmlHelpA(hwndcaller:Longint; lpHelpFile:string; wCommand:Longint;dwData:string): HWND;

stdcall; external 'hhctrl.ocx'

 

具体参数含义如下:

hwndCaller:调用该函数的窗体句柄

pszFile:帮助文件的名称和位置

uCommand:帮助类型

dwData:与uCommand相匹配的附加参数,定位CHM的关键字。

 

在使用的时候,首先要定义uCommand 常数:

Const HH_DISPLAY_TOPIC = $0

Const HH_DISPLAY_INDEX=$2

Const HH_HELP_CONTEXT = $F

Const HH_DISPLAY_SEARCH= $3

Const HH_DISPLAY_TEXT_POPUP= $E

 

4、HtmlHelpA的调用方法

1>、调用缺省主题帮助

HtmlHelpA(Application.Handle, 'help.chm',HH_DISPLAY_TOPIC , 'Index.html');

此调用方式用于没有上下文ID号(HelpContext)的情形,dwData可指定CHM文件内的存在或缺省htm文件。

 

2>、调用关键字帮助

HtmlHelpA(Application.Handle, 'help.chm', HH_DISPLAY_INDEX , '关键字');

此调用方式中dwData取索引文件(.hhk)中存在的关键字。

 

3>、调用上下文敏感帮助

HtmlHelpA(Application.Handle, 'help.chm', HH_HELP_CONTEXT , 1000);

此调用方式用于含有映射信息的CHM文件,dwData取映射表中存在的ID号。当为0时则不调用帮助文件。

 

4>、调用全文搜索帮助

HtmlHelpA(Application.Handle, 'help.chm', HH_DISPLAY_SEARCH , Query);// Query为HH_FTS_QUERY

此调用方式dwData参数指定一个指向HH_FTS_QUERY结构的指针。

 

5>、调用弹出式帮助

HtmlHelpA(Application.Handle, 'help.chm', HH_DISPLAY_TEXT_POPUP, Popup);// Popup为HH_POPUP

此调用方式PazFile通常取空,也可以指定一个CHM和一个在该CHM文件中的TEXT文件;dwData参数指定

一个指向HH_POPUP结构的指针。

 

5、为CHM文件指定显示窗体形式

        由于显示帮助文件的缺省窗体是在编译该CHM文件时的窗体,因此为了更好地控制帮助文件的显示,

在制作CHM文件时,可以自定义一个窗体形式。在程序中可以通过两种方法来调用自定义窗体。当uCommand

为HH_DISPLAY_TOPIC或HH_HELP_CONTEXT时,在pszFile文件名的后面加上窗体名称: 'help.chm>Form4'

 

二、制作CHM帮助文件

        关于制作CHM文件的工具,我们可以使用微软的 HTMLHelpWorkshop(以下简称HHW)或者“国华软件工

作室”的eTextWizard(电子文档处理器,以下简称EW)。以HHW为例:假设我们制作好的主页放在C:\test目录中,

其中有一个index.html,通过它可以链接到所有其他的文件。

具体步骤:

1、打开HTMLHelpWorkshop,单击“File→New”菜单(或者单击工具栏第一个按钮),出现“New”对话框,选

择其中的“Project”后,按“OK”,创建一个工程。

2、这一步的对话框提供了从*.hlp到*.chm文件的转换,在此我们不需要,直接按“下一步”。

3、这一步的对话框要求指定工程的位置。单击“Browse”,进入C:\test目录,并在文件名中键入“test”,

这时文本框中应出现“C:\test\test.hlp”,然后按“下一步”。

4、这一步要求选择你已为工程创建的文件类型,在此我们选择第三个“HTMLfiles(.htm)”。

5、现在需要添加我们制作好的HTML文件,按“Add”,选择“C:\test\index.html”,将它添加到列表框。然

后单击“完成”即可。 注意:只要被index.html文件直接或间接链接到的文件,都会包含进去,因此不必将

所有的文件添加进去!

6、单击“File→Compile…”(或工具栏第三个按钮),出现“Createacompiledfile”对话框,直接单击

“Compile”。

7、测试

        在资源管理器中双击生成的C:\test\test.chm,在页面单击右键,在菜单中选择“属性”,在“属性”

对话框中复制其中的“地址”(应该为mk: @MSITStore:C:\test\test.chm::/index.html)。将上面的地址粘贴

到浏览器的地址栏中,如果正确,按回车可以在浏览器中看到正确的页面。

 

三、非关联的CHM帮助

在Delphi中,可以通过ShellExecute函数直接调用chm帮助文件,具体如下:

var   

  HWndHelp: Hwnd;

  i: integer;

begin

  //检查帮助窗口是否已经存在

  HWndHelp := FindWindow(nil, 'conHelpTitle');

 

  // 如果存在则关闭

  if HwndHelp <> 0 then

    SendMessage(HwndHelp, WM_CLOSE, 0, 0);

 

  // uses shellapi

  i := ShellExecute(handle, 'open', '.\help.chm', nil, nil, sw_ShowNormal);

 

  // 如果i不为42

  if i <> 42 then

    Showmessage(' help.chm 帮助文件损坏!');

end;

 

四、上下文关联的CHM帮助

在Delphi中实现上下文关联的CHM帮助,可以调用Windows系统目录System32下的HHCTRL.OCX控件中

的HtmlHelpA函数实现。 需要以下几个步骤:

1、设置相关控件的HelpContext属性。

 例:主窗体frmMain:10100 ,其中的文本框 edtInput:10101  

 

2、声明HtmlHelpA函数

Function HtmlHelpA(hwndcaller:Longint; lpHelpFile:string; wCommand:Longint;dwData:string): HWND;

stdcall; external 'hhctrl.ocx'

 

3、  编写函数,按F1键调用帮助文档

//自定义公用函数ShowChmHelp显示不同帮助画面。

procedure ShowChmHelp(sTopic: string);

Const

  HH_DISPLAY_TOPIC = $0;

var

  i: integer;

begin

  // 直接打开帮助文件的默认主题。HH_DISPLAY_TOPIC

  i := HtmlHelpA(Application.Handle, '.\help.chm',HH_DISPLAY_TOPIC , sTopic);

  if i = 0 then

  begin

    Showmessage(' help.chm 帮助文件损坏!');

    exit;

  end;

end;

 

function TForm4.FormHelp(Command: Word; Data: Integer;

  var CallHelp: Boolean): Boolean;

begin

  case Data of

    10100: ShowChmHelp('frmMain.htm');

    10101: ShowChmHelp('edtInput.htm');

  else

    ShowChmHelp('default.htm');

  end;

end;

注意:在使用Form的OnHelp时,必须将Form的属性: BorderIcons| BiHelp改为TRUE才可以

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Delphi的DevExpress帮助文档是一种为开发人员提供技术支持和指导的资源。它包含了各种功能模块的详细说明,包括组件、控件、类、方法和属性等。通过使用这个帮助文档,开发人员可以更好地理解和使用Delphi的DevExpress组件,以提高软件开发的效率和质量。 Delphi的DevExpress帮助文档具有以下优点: 1. 详尽和全面的信息:帮助文档提供了有关使用Delphi的DevExpress组件的详细说明。这些说明包括组件的属性,以及如何在程序中使用它们的示例代码和解释。这样开发人员可以迅速掌握相关知识,并减少开发过程中的困惑和错误。 2. 实时更新和维护:DevExpress团队持续更新和维护Delphi帮助文档,以确保文档中的信息与最新版本的组件一致。这使得开发人员可以始终依赖最新的文档,了解最新的功能和修复。 3. 方便的导航和搜索功能:Delphi的DevExpress帮助文档提供了方便的导航和搜索功能,使开发人员能够快速找到所需的信息。无论是通过关键字搜索还是通过浏览目录,开发人员都可以迅速找到他们需要的内容。 总而言之,Delphi的DevExpress帮助文档是一种强大的资源,为开发人员提供了有关使用Delphi的DevExpress组件的详尽和全面的信息。它是提高开发人员效率和软件质量的重要工具。 ### 回答2: Delphi DevExpress 是一种流行的集成开发环境(IDE)和开发工具,用于创建 Windows 平台上的应用程序。它提供了丰富的功能和用户友好的界面,使开发人员可以更加轻松地设计和构建各种类型的应用程序。为了帮助开发人员更好地了解和使用 Delphi DevExpress,官方提供了详细的帮助文档Delphi DevExpress 帮助文档涵盖了各个方面的内容,包括基本知识、概念、任务和用例、组件和控件的详细介绍、属性和方法的说明等。文档提供了清晰的解释和示例代码,以帮助开发人员深入了解如何使用 Delphi DevExpress 来实现各种任务和功能。 帮助文档还提供了丰富的搜索功能和索引,方便开发人员快速找到所需的信息。无论是想了解特定组件的使用方法,还是需要详细了解特定功能的解决方案,帮助文档都能够提供必要的指导和支持。 此外,帮助文档还包括了常见问题解答和故障排除的部分,以帮助开发人员在遇到问题时能够快速找到解决方法。 总的来说,Delphi DevExpress 帮助文档是学习和掌握 Delphi DevExpress 的重要资源。它提供了全面而详细的信息,帮助开发人员更好地理解和使用 Delphi DevExpress,从而创建出高质量、功能丰富的应用程序。无论是初学者还是有经验的开发人员,都可以从中获得所需的帮助和支持。 ### 回答3: delphi devexpress 是一款功能强大的集成开发环境 (IDE),它提供了许多有用的组件和工具,帮助开发人员更方便地开发跨平台的应用程序。而 devexpress 则是一个知名的软件开发公司,他们提供了许多用于 delphi 开发的工具和组件。 对于 delphi devexpress 的帮助文档,它是一个非常重要的资源。无论是初学者还是有经验的开发人员,都可以在帮助文档中找到宝贵的信息和指导,以加快开发进程。 delphi devexpress 的帮助文档通常涵盖一系列主题,包括安装和配置环境、常用组件的使用方法、控件的属性与事件等。开发人员可以根据自己的需求选择相应的主题进行查阅,从而更好地了解和使用 devexpress 提供的组件和工具。 通过帮助文档,开发人员可以发现许多技巧和最佳实践,以解决特定问题或实现特定功能。文档中经常配有示例代码和图文说明,帮助人们更直观地理解相关概念和用法。 此外,帮助文档还提供了开发者论坛和用户社区的链接,方便交流和分享经验。开发人员可以在论坛上提问或回答其他人的问题,与其他使用 delphi devexpress 的开发人员互动,共同解决开发过程中的疑惑和难题。 总之,delphi devexpress 的帮助文档是一个重要的资源,它为开发人员提供了丰富的信息和指导,帮助他们更轻松地使用 devexpress 的组件和工具。通过合理利用帮助文档,开发人员可以更高效地开发应用程序,并解决开发过程中遇到的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值