主页C++ Builder 资料C++ Builder 编程技巧文件处理CHM 帮助文件
C++ Builder 串口控件
C++ Builder 编程技巧
字符串及文字处理
多媒体处理
图片处理
文件处理
 • INI 文件处理
 • JSON 解析和生成
 • CHM 帮助文件
界面处理
C++ Builder 操作指南
C++ Builder 参考手册
网友留言/技术支持
CHM 帮助文件 - 文件处理
 • 指定说明文档 *.chm 文件
 • 链接 chm 文档 (HTML Help) 的库文件
 • 显示帮助内容和帮助索引
 • 控件与帮助关联:设定控件的帮助在 chm 说明文档里面的位置

指定说明文档 *.chm 文件

1. 建议做法

Application->HelpFile = 应用程序默认的帮助文档路径和文件名;
Form1->HelpFile = 这个窗口 Form1 专用的帮助文档路径和文件名。

一般情况,只需要指定应用程序的默认帮助文档就可以了,如果没指定 Form 的帮助文档,会使用应用程序默认的帮助文档。

在程序的最开始,可以在主窗口的构造函数里面,指定说明文档的位置和文件名,
例如:说明文档的文件名为 AppHelp.chm 放在和 exe 同一个文件夹里面:

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
  Application->HelpFile = ExtractFilePath(Application->ExeName) + L"AppHelp.chm";
}

2. 另外的做法

C++ Builder 菜单:Project → Options,在打开的项目设定对话框的左侧树形结构,找到并且选中 Application → Appearance,
右侧的选项内容:Application Settings 里面,Help File 这一项,就是帮助文档的文件名:

如果使用 “Browse…” 按钮选择文件,默认的,会使用 *.hlp 文件,这是已经过时了的帮助文档,需要改为 *.*,找到 .chm 文件,确定,
这样的结果就是,帮助文档 .chm 文件使用了在磁盘里面的绝对路径,不利于发布程序。
如果把路径去掉,只保留文件名,例如 AppHelp.chm,会使用相对路径,也会在运行的时候,由于修改了相对路径,或者修改了快捷方式的启动路径,或者这是由其他进程创建的子进程,都会让相对路径失效,所以本文作者建议使用第一项 “1.建议的做法” 写在代码里面。

 

链接 chm 文档 (HTML Help) 的库文件

#pragma link "Vcl.HtmlHelpViewer"

C++ Builder 必须使用这条语句链接 HTML Help 的库文件,
如果不写这句,虽然可以编译通过,但是不能打开 chm 文件,会报 EHelpSystemException 错误:“No context-sensitive help installed”。
早期版本的 C++ Builder,即 XE 之前的版本,链接的库文件是 "HtmlHelpViewer",没有 "Vcl." 和其他的前缀与后缀等。

 

显示帮助内容和帮助索引

使用快捷键:应用程序运行时,按键盘的 F1 键,可以打开帮助:

如果当前有焦点的控件关联了帮助,会显示控件的帮助,否则会打开帮助的默认页面。

使用菜单项,或者按钮等打开帮助:

1. 在 Form 上放一个 TActionList 和一个 TImageList 控件:ActionList1 和 ImageList1;
2. ActionList1 的 Images 属性选择 ImageList1;
3. 双击 ActionList1 控件,打开编辑 ActionList1 的对话框,在 Actions 区域里面,点击鼠标右键,选择 “New Standard Action…”;
4. 在打开的 Standard Action Classes 标准动作列表里面,选择 Help 里面的:
   · THelpContents:      打开帮助显示默认页面或首页
   · THelpTopicSearch:   打开帮助的索引
   · THelpOnHelp:        打开帮助的帮助
   · THelpContextAction: 打开当前活动控件 (有输入焦点的控件) 的帮助
   点击 “OK” 按钮确认添加;
5. 菜单项,或者工具条按钮、或其他按钮控件等的 Action 属性,
   选择 HelpContents1、HelpTopicSearch1、HelpOnHelp1 或 HelpContextAction1,就可以实现对应的功能了。

 

控件与帮助关联:设定控件的帮助在 chm 说明文档里面的位置

控件和帮助相关的属性 类型 说明
TControl::   TControl 继承过来的
HelpType THelpType 控件在帮助 (说明文档) 里面的类型,可读写属性,可以使用的值:
enum THelpType : unsigned char { htKeyword, htContext };
htKeyword: 关键字,根据 HelpKeyword 属性的关键字打开并且定位到说明文档的位置上
htContext: 标识号,根据 HelpContext 属性的 ID 号打开并且定位到说明文档的位置上
HelpKeyword UnicodeString 关键字,可读写属性。
如果 HelpType 属性值为 htKeyword,会使用这个关键字打开帮助文档里面对应的内容。
HelpContext THelpContext 标识号,可读写属性,是一个整数值,typedef int THelpContext;
如果 HelpType 属性值为 htContext,会使用这个标识号 (ID) 打开帮助文档里面对应的内容。

 

◤上一页:JSON 解析和生成

C++ 爱好者 -- Victor Chen 的个人网站 www.cppfans.com 辽ICP备11016859号