指定说明文档 *.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) 打开帮助文档里面对应的内容。 |
|