DELPHI基础教程

第十一章 Delphi应用程序的应用(一)

11.1 Help 文件的建立 

  Help 文件是 Micosoft Windows3.0 以上的版本提供的超文本帮助文件。利用这种超文本 , 用户可非常方便地使用帮助文件系统。帮助文件是以主题为主线进行编写的,一个主题可以跳转至相关的主题,也可按关键字进行主题查询。帮助文件与软件开发工具相结合,可实现应用程序的 ' 上下文敏感 ' ,而且帮助系统自动装入。“上下文敏感”是指根据程序当前执行代码来显示 Help 文件的相应部分。

   Windows 提供的很多应用程序都有帮助系统,读者可以从这些系统中了解应用程序的许多信息。

11.1.1 建立 Help 文件所需的工具和文件 

  程序员可为自己的应用程序建立帮助文件系统。但建立最基本的帮助系统 , 必须有以下文件

  1. WinHelp 应用程序 ( WinHelp.exe) 。运行帮助系统实际上是运行用帮助源文件的

WindHelp 程序。帮助文件只有通过 WinHelp 文件才能运行。

   2. 能创建主题的字处理器。这种处理器能以 RTF 格式保存文件 , 能创建 $,#,K,+ 脚标。 RTF(Rich Text Format) 格式是一个能记录各种文本特征的文件格式。这些特征包括字体大小、线型风格等。 Microsoft Word 6.0 处理器能满足以上要求。

  3. 一个能以 ASCII 格式保存文件的字处理器或编辑器,这是为了创建 Help 工程文件 (.HPJ 文件 ) 。

   4. 帮助文件编译器 (HCP.EXE 或 HC31.EXE) ,两种编译器均能编译在 Windows3.1 环境中使用的帮助文件,但不能编译 Windows3.0 环境下的帮助文件。 HCP.EXE 是保护模式的编译器,能更好地使用内存空间。要在 Windows 的 Dos 窗口中使用 HCP.EXE 编译器。

   5. 帮助编译器所需的错误信息源文件 (HCP.ERR 或 HC31.ERR) 。如果帮助文件在编译过程中出现错误, WinHelp 运行时将提示有关的错误信息,而这些信息保存在 HCP.ERR 或 HC31.ERR 文件中。

  以下工具能实现帮助系统的高级特征:

   1. 热点 (Hotspot) 编辑器 (SHED.EXE) ;

 热点编辑器能创建分段超图像文件 (.SHG) 。这种文件包括一些分成多个热点的图像,当用户单击图像,将弹出一个窗口或跳转至另一主题。

   2. 多分辨率位图编译器 (MRBE.EXE) ;

  这种编译器能将具备多种分辨率的位图结合到一个文件中,以供 WinHelp 使用。 WinHelp 检查显示器的分辨率 , 然后以相应的分辨率加以显示。

  3. 图像编辑器,它能以位图形式保存图像文件。 使用图像编辑器创建说明和自定义按钮。

  4. 绘图软件。用以创建除了位图之外的元文件 (WMF) ;

  程序员可以直接把图像插入文本中,也可以用 Windows 剪贴板把图像粘贴至文本中。 

11.1.2 Help 文件的创建 

 下面介绍最简单、最直接的创建 Help 文件的方法,假设在 Word 中创建主题。

 创建 Help 文件分以下 4 个步骤:

   1. 建立组成帮助文件的主题,并以 RTF 格式保存;

   2. 建立内容主题 (Content Topic) ,并以 RTF 格式保存;

  3. 建立帮助工程文件 (.HPJ) 以文本格式保存;

   4. 将工程文件编译成帮助源文件 (.HLP) 。 

11.1.2.1 建立主题 

 一个简单的帮助主题包括主题题目 (Title) ,主题文本 (Text) ,脚标,主题内容,全局查询、打印。主题最好是带有题目,题目写在主题的第一行。用不同的字体大小、颜色以示区别

写完题目后,可输入主题的文本。输入时不用担心每行的宽度。 编译好的帮助文件会根据窗口大小自动确定行宽。在主题的最后插入一个分页符, WinHelp 把每页视为一个单独主题。

  书写主题文本时应注意尽可能地把文本写成小段落列表,这样能方便阅读; 同时要控制主题长度,这样用户不需要使用滚动条来阅读文本。

 在主题中应加入一些脚标, WinHelp 使用这些脚标辨识主题并提供一些导向控制 (Novigation Control) ,四种典型脚标如表 11.1 所示。  

表 11.1 脚标以及用途

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

   符号  适用于      用    途

──────────────────────────────────

  # 内容字符串    唯一辨识主题

   $ 标题       在搜询对话框和搜询历史列表框中显示主题

   K 关键字 ( 段 )     出在搜询对话框中

   + 浏览顺序     用户使用时的浏览顺序

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

  以下分别介绍四种脚标的插入方法:

   1. 插入 # 脚标。把光标移至主题的最前端插入 # 脚标。这时主题文本下端也会出现 # ,在此后键入内容字符串。 WinHelp 使用内容字符串作为唯一的辨识主题。用户永远也看不见这些字符串,但设计人员用它们定义跳转主题。

   2. 插入 $ 脚标,把光标移至 # 脚标后,插入 $ 脚标。在文本下端的 $ 脚标处,输入主题的标题,该标题与第一行出现的标题一致,标题将会出现在搜询对话框和搜询历史对话框中

3. 插入 K 脚标。在主题第一行的脚标之后插入 K 脚标,在主题文本中的 K 脚标后键入字段,这些字段将出现在搜询列表框中,见 11.3 图。

   4. 插入 + 脚标。在主题第一行的 K 脚标之后插入 + 脚标。在主题文本以下的 + 脚标处键入浏览顺序标识符。标识符可以是一个数 ( 如 005) ,或一组名字加上冒号和数 ( 如 CAL C:005) 一个主题只能有一个浏览顺序。

  热点是用户可以激发某种动作的文本或图像。一个热点可跳转至另一个主题。在其它窗口中显示主题或执行宏。多数情况下,重要字段被设计成热点以实现主题跳转。

  以下是实现主题跳转的步骤:

   1. 输入要跳转的字段或插入图像;

  2. 高亮度选择字段,用双下划线格式化。在 MicroSoft Word 中,按 ALT +T 键弹出字符格式对话框,在列表中选择双下划线;

   3. 在紧挨在这些字段或图像之后,键入指定主题的字符串。 并对内容字符串进行隐藏格式化。这个内容字符串是跳转主题的内容字符串;

  根据以上步骤能实现主题之间的跳转。

  最后要把编辑的文件以 RTF 格式保存下来, WinHelp 只能编译 RTF 文件。以下是典型的 RTF 文件: 

face="Tms Rmn,Times New Roman" size="1">#$+ face="Helv,Arial"> Help Example Indexindex_info face="Helv,Arial">1 of 2 face="Helv,Arial">index_2

face="Helv,Arial">Commands

face="Helv,Arial">Edit Menumenu_edit

face="Helv,Arial">File Menumenu_file

face="Helv,Arial">Glossary

face="Helv,Arial">Defined Termsglossary

face="Helv,Arial">Procedures

face="Helv,Arial">Copying Textproc_copying_text

face="Helv,Arial">Deleting Textproc_deleting_text

face="Helv,Arial">Exitingproc_exiting

face="Helv,Arial">Available From Your Application

face="Helv,Arial">Context Sensitive Topics

 

 

 

 

 

 

face="Helv,Arial">cs_topics  

face="Tms Rmn,Times New Roman" size="1"># main_index

face="Tms Rmn,Times New Roman" size="1">$ Help Index

face="Tms Rmn,Times New Roman" size="1">+ index:0005 

11.1.2.2 建立内容主题 

 内容主题列出了帮助系统的主要部分。用图标启动帮助系统或按 Content 按钮均出现内容主题。内容主题的每个项目都可跳转。

建立内容主题与建立一般主题类似, WinHelp 默认第一个主题为内容主题。其建立步骤如下:

   1. 移至第一个源文件的开始处;

  2. 键入希望出现的主题标题,这些标题处于不同的行;

  3. 将每个主题设置成热点。 

11.1.2.3 建立帮助工程文件 

 帮助工程文件是一个文本文件。包含了有关帮助文件的许多信息。 编译器对工程文件进行编译。工程文件的扩展名必须是 HPJ ,编译后的扩展名是 HLP:

下面是一个简单的帮助工程文件:

[OPTIONS]

CONTENTS=context_string

TITLE=title

COMPRESS=compress_level

ERRORLOG=log_filename

[CONFIG]

BrowseButtons()

[FILES]

RTF_filename_1

RTF_filename_2

RTF_filename_3

   [OPTIONS]

Context_String 是内容主题的内容字符串。这一行并不是必须有的。 如果没有第一行, WinHelp 把第一个帮助文件的第一个主题作为内容主题。

   TITLE = title

   title 是帮助窗口的标题。不要将标题用引号括住。这一行也不是必需要有的。如果没有,缺省的标题是 Windows Help.

CoMPRESS = Compress level

Compress_level 决定工程文件在编译时是否被压缩, 压缩后的文件编译时要花较长的时间。

 表 11.2 为 Compress_level 的取值: 

表 11.2 Compress_leve 的取值及含义

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 取值   编译时间       文件大小

─────────────────────────────

  FALSE 快         大 ( 无压缩 )

MEDIUM 中等         中等 ( 高度压缩 )

HIGH 慢          小 ( 无压缩 )

  0    快         大 ( 无压缩 )

  1    慢         小 ( 高度压缩 )

  No 快        大 ( 无压缩 )

  TRUE    慢          小 ( 高度压缩 )

  YES 慢          小 ( 高度压缩 )

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

  ERROR(LOG = log_filename)

log_filename 是 WinHelp 运行时的错误输出文件。如果编译时工程文件出错,需要一个记录错误的文件。如果工程文件有这一行, WinHelp 在运行时自动创建的文件,如果没有,错误将显示在屏幕上,但不存入任何文件中。

   BrowseButton()

如果有这一行,帮助按钮条中将出现 >> 和 << 键,要实现顺序浏览, 还需在帮助文件中定义。详见 11.1.2.1 节中的插入 + 脚标。

  [FILEs]

RTF_filename 是 .RTF 源文件名。所有的 RTF 文件构成整个帮助系统。每个 RTF 应处在

不同的行。

  以下是工程文件的实例

; This help project requires hc 3.1

[OPTIONS]

errorlog = iconwrks.err

title = IconWorks Help

contents = CONTENTS

compress = false

oldkeyphrase = false

warning = 3 

[FILES]

iconwrks.rtf 

[MAP]

CONTENTS 1

EDITOR_KEYBOARD 2

EDITOR_COMMANDS 3

VIEWER_KEYBOARD 5

VIEWER_COMMANDS 6

DEFINING_COLORS 1000

EDITOR_FILE_MENU 1100

EDITOR_FILE_MENU 1101

EDITOR_FILE_MENU 1102

EDITOR_FILE_MENU 1103

EDITOR_FILE_MENU 1104

EDITOR_FILE_MENU 1105

EDITOR_EDIT_MENU 1200

EDITOR_EDIT_MENU 1201

EDITOR_EDIT_MENU 1202

EDITOR_EDIT_MENU 1203

EDITOR_EDIT_MENU 1210

EDITOR_EDIT_MENU 1211

EDITOR_EDIT_MENU 1212

EDITOR_VIEW_MENU 1108

EDITOR_VIEW_MENU 1109

EDITOR_VIEW_MENU 1110

EDITOR_VIEW_MENU 1111

EDITOR_VIEW_MENU 1112

EDITOR_VIEW_MENU 1111

EDITOR_TOOLS_MENU 1400

SELECT_TOOL 1401

PAINT_TOOL 1402

FILL_TOOL 1403

LINE_TOOL 1404 

[WINDOWS]

main = "IconWorks Help", (0,0,1023,1023 ),,, (192,192,192 )

glossary = "IconWorks Help", (222,206,725,486 ),,, (192,192,192 ), 1 

[CONFIG]

CB("glossary", "&Glossary", "JI(`iconwrks.hlp>glossary', `GLOSSARY')")

BrowseButtons() 

11.1.2.4 编译帮助工程文件 

 有两种编译器可以编译帮助工程文件: HCP.EXE , H31.EXE 。两种编译器编译的文件不能在 Winddow3.0 中使用,但能在 Windows 3.1 中使用。其中 HCP.EXE 是保护模式“编译器”,它能更好的使用内存。必须在 Windows 的 Dos 窗口中使用 HCP.EXE 。

  编译前要注意两个问题:

   1. 所有源文件必须以 RTF 格式保存;

   2. 下面的文件必须在同一个目录下

  ● 所有的 .RTF 文件

  ● 帮助编译器 (HCP.EXE,HC31.EXE)

● 编译器错误信息源文件 (HCD.ERR,HC1.ERR)

   ● 帮助工程文件 (.HPF)

● 任何引用位图或 SHED 的文件 (.BMP.SHG)  

  如果以上文件不在同一目录中,必须在工程文件中定义相应的路径。

  编译要在 Dos 环境中进行,命令格式: 

  Help_Compiler_rootname project_File_rootname 

Help_Compiler_rootname 是不带扩展名的编译器名字。 project_file_rootname 是不

带扩展名的帮助工程文件名,如: 

   HCP MYHELP 

11.2 Delphi 应用程序的 Help 编程 

   Delphi 应用程序能够方便地应用帮助系统。程序可以动态地运行帮助系统。 对话框可以与帮助系统相联。 

11.2.1 定义应用程序的帮助文件 

 要在应用程序中使用帮助系统,必须有相应的帮助文件。程序可以编写自己的帮助文件, 也可以使用已有的帮助文件。 另外,要为应用程序定义帮助文件以便在用户需要帮助时应用程序能打开相应的帮助文件。

  在 Delphi 集成开发环境中选择“ Options | Project ” 菜单项, 系统弹出工程选择对话框, 再选择 Application Options 页面,在辅助文件中输入帮助文件名。

 

 [目录] [上一页] [下一页]