DELPHI基础教程
所有的应用程序都是TApplication 的派生类。 TApplication 有三种方法调用在线帮助系统。 HelpContext 方法可调用 WinHelp( 关于 Winhelp 的内容见上节 ) 。它把 HelpFile 中的文件名和一个文本代码传递给 WinHelp 。 HelpFile 是 TApplication 的字符串类型的属性,专门用来存放 Help 文件的。如果 HelpFile 属性是空字符, HelpContext 返回假值,其它情况均返回真值。 下面的例子使用窗体上的一个按钮,当用户单击按钮,屏幕出现DATA.HLP文件中714号主题内容。 procedure TForm2.Bin1Click(Snder : TObject) begin Application.HelpFile := DATAHLP; Application.HelpContext(714) ; end; HelpJump 方法可调用 WinHelp 。它传递 HelpFile 属性中的文件名和帮助文件的内容字符串 ( 详见 11.1 节 ) 。内容字符串是帮助文件中唯一辨识帮助主题的字符串。如果 HelpFile 属性是空字符, HelpFJump 返回假值,其它情况均返回真值。 下面的例子使用了窗体上的一个按钮。当用户单击按钮, 帮助系统调出了 DELPH2.HLP 文件中的 Default 属性。因为 Default 属性的内容字符串是 VclDefaultProperty 。 procedure TForm1.Tbn|Click(Sender : TObject) begin Application.HelpFile := 'DELPHI.HLP'; Application.HelpJump ('VclDefaultProperty'); end HelpCommand 方法能快速访问 WinHelp 函数中的各种命令。根据这些命令 WinHelp 执行不同的动作。表 11.2 是 WinHelp 函数的有关信息。 BOOL WinHelp(hwd,LpszHelpFile,fuCommand,dwData) 表 11.2 WinHelp 的参数及含义 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 参数 类型 描 述 ─────────────────────────────── hwnd HWND 请求帮助的窗口 LpszHelpFile LPSTK 待显示的帮助文件的文件名 fuCommand UNIT 请求的帮助类型 dwData DWORD 帮助所需的描述表或关键字 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ HelpCOmmand 向 WinHelp 传递 fuCommand 和 dwData , fuCommand 是帮助类型可为表 11.3 中的列值之一。 表 11.3 fuCommand 的取值及含义 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 值 含 义 ─────────────────────────────── HELP_LONTEXT 显示 dwData 指定描述长的帮助信息 HELP_CONTENTS 显示帮助的内容主题 HELP_SET_LONTENTS 如果 dwData 是 Orol04 则在一个弹出 式窗口中显示 Help 主题 HELP_HELP PONHELP 显示 Help 应用程序的自身帮助,函 数忽略 lpszHelpFile 和 dwData 参数 HELP_INDEX 显示帮助文件的索引 HELP_KEY 显示 dwData 指定的关键字的帮助 HELP_MULTIKEY 显示一个关键字的帮助,该关键字 在一个可变关键字表中 HELP_QUIT 向 Help 应用程序报告文件不再使用 HELP_SETNDEX 把 dwData 指定的描述符作为帮助文 件的当前索引 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ dwData 参数的含义依赖于 fuCommand 的设置,如果 fuCommand 为 HELP_CONTEXT , dwData 为一个 32 位的无符号整数,它包含一个描述表标识号:如果 fuCommand 为 HELP_KEY , dwData 则为一个指定长指针,所指的字符串是帮助的关键字。 如果 fuCommand 为 HELPMULLTIKEY , dwData 则指向一个 MULTIKEYHELP 数据结构的长指针。 下面的例子使用了窗体中的按钮。 当用户单击按钮帮助系统将显示指定文件的帮助内容主题。 procedure TForm1.Bin1Click(Sender : TObject) begin Application.HelpFile := 'MyHlep.HLP' Application.HelpCommand(HELP_CONTENTS,0); end; TApplication 部件的 OnHelp 事件响应帮助事件。 当应用程序接收到一个所需的帮助 时,发生 OnHelp 事件。使用 OnHelp 事件可以在需要帮助时定义一些特殊过程。 以下的例子改变了应用程序的帮助文件, AppHelp 函数用来处理 OnCreate 事件。 function TForm1.AppHelp(Command.Word;Data : lontint) : Boolean begin if OpenDialog1.Exeeute then Application HelpFile := OpenDialog1.FileName; end; 11.2.2 通用对话框中使用帮助系统 Delphi 通用对话框中都能显示一个帮助按钮。如果程序显示了对话框中的帮助按钮,应该确保应用程序的帮助文件中有相应的主题。 在通用对话框中使用帮助系统,要做到以下三点: 1. 把对话框的 Option|SHOWHelp 属性设置成 true ,这样在程序运行时将出现帮助按钮。 ShowHelp 属性与其部件的名字相关, 例如字体对话框的 ShowHelp 属性称为 fdShowHelp 。 2. 为对话框部件定义帮助文件。 3. 定义应用程序的文件名。 11.3 Delphi 帮助提示 (Hint) 的应用 使用 Delphi 集成开发环境时,用户常把鼠标置于程序部件上,如加速按钮,对齐按钮等。鼠标在部件上停留超过一定时间后, Delphi 将会显示一个弹出窗口, 里面有部件名称和概述。 这就是 Delphi 的帮助提示。 Delphi 的应用程序可通过定义 ShowHint 属性实现帮助提示。 11.3.1 帮助提示的显示 ShowHint 属性可应用于所有的控件和应用程序部件,控件的 ShowHint 属性含义与程序的稍有不同。控件的 ShowHint 属性决定某一控件是否显示帮助提示,如果 ShowHint 是真值,当用户把鼠标置于控件之上超过一定时间后,控件将出现帮助提示。如果是假值,则不出现提示。控件是否显示还决定于控件的 ParentShowHind 属性。如果 ParentShowHint 是真值,控件的父类的 ShowHint 属性将决定控件是否显示帮助提示。 假如有一个分组框和一个检查框,分组框是检查框的父件。表 11.3 说明了子件与父件的 ShowHint , ParentShowHint 属性设置对子件帮助提示的影响。 表 11.3 Hint 属性设置对帮助提示的影响 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 分组框 ShowHint 检查框 ParentShowHint 检查框 ShowHint 帮助提示 ───────────────────────────────────── T 或 F F T 显示 T T F 显示 F T T 不显示 T 或 F F F 不显示 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ T 表示真值, F 表示假值 把控件的 ShowHint 属性设置成真值,系统自动将 ParentShowHint 设置成假值。应用程序部件的 ShowHint 属性可以决定整个程序的帮助提示是否有效。如果应用程序的 ShowHint 属性为真,程序中各部件的帮助提示才有效, 但是否显示还要取决于部件的 SHowHint, ParentShowHint 及其父件的 ShowHint 属性,如果应用程序的 ShowHint 属性为假值,无论程序部件的属性如何设置,程序中所有帮助提示都无效。 Hint 属性是显示在帮助提示框中的文本字符。 Hint 属性应用于所有控件,包括应用程序部件菜单部件。因为应用程序部件不是可视部件,因此不能在 Object Inspector 窗口中定义 Hint 属性。但可以在定义部件的 Hint 属性时同时定义应用程序部件的 Hint 属性,定义时只需用“ |" 字符会分开,例如: Edit.Hint := 'Name |Enter Name in the edit box' 等价于 Edit.Hint := Name; Application.Hint := Enter Name in the edit box 应用程序的 Hint 属性可用在 OnHint 事件。 如果只定义了一个值, Delphi 把这个值同时赋给部件和应用程序部件的 Hint 属性。 如果应用程序的 ShowHint 属性为假值,所有的帮助提示将不显示, 但可以利用程序部件的 Hint 属性显示其它提示,如状态条等。 当某一部件的 SHowHint 属性为真, 但又没有定义 Hint 属性, 如果此时文件定义了 Hint 属性,则此部件将使用文件的 Hint 值。 11.3.2 OnHint 事件 当用户把鼠标放在某一部件,而该部件的 Hint 值不为空值,此时发生 OnHint 事件。利用 OnHint 事件可以执行一些特殊的操作。 最常用是利用 OnHint 事件显示状态条的标题,状态条是用面板来实现的。下面举例说明。 这个例子使用了面板部件,菜单,一个编辑框。菜单可随意设计, 但需记住每个菜单项的 Hint 值。 另外, 定义编辑框的 Hint 值, 把面板置于窗体底部 ( 将 Align 属性置于 dBotton) 把面板标题置于左端 ( 将 Alignment 属性置于 taleftJustify) 。 OnHint 事件是应用程序部件的事件,而应用程序部件是非可视部件,不能使用 Object Inspector 窗体定义事件,必须编写自己的 OnHint 事件。 首先,在 TForm1 对象中宣称 DisplayHint 方法,并在单元的 implementation 部分编写实现代码。在 DisplayHint 方法中,把应用程序的 Hint 属性赋给面板的标题。另一个重要问题是必须把 DisplayHint 方法作为处理 OnHint 事件的方法。窗体的 OnCreate 事件的代码解决了这个问题。 下面列出了程序的完整代码。当用户运行程序, 把鼠标置于菜单或部件之上,在窗体的状态条中将出现定义的提示。 Type TForm1 = class(TForm) Button1: TButton; Panel1: TPanel; Edit1: TEdit; procedure FormCreate(Sender: TObject); private { Private declarations } public procedure DisplayHint(Sender: TObject); end; var Form1: TForm1; implementation {$R *.FRM} procedure TForm1.DisplayHint(Sender: TObject); begin Panel1.Caption := Application.Hint; end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnHint := DisplayHint; end; 11.4 自定义部件的帮助安装 Delphi 有一个功能强大的帮助搜询引擎,叫做多层帮助,能为自定义的部件提供“上下文敏感”帮助。多层帮助允许把自定义部件的多个帮助文件安装成 Delphi 的帮助序列,以提供给用户一种内层访问帮助文件的方式,用户有三种方法访问帮助文件: 1. 设计状态选中部件,然后按 F1 ; 2. 在自定义部件的 Object Inspector 窗口中按 F1 ; 3. 在 Delphi 帮助系统选择搜询主题。 Delphi 在提供这种帮助机制时, 不需要编写额外的代码。 有些文件是自定义部件帮助系统所必须的, 以下介绍安装的具体步骤。 安装所需的文件 STEREO.PAS 自定义部件的源代码 STEREO.RES 自定义部件的资源文件 STEREO.DCR 工具调色板图标 0 STEREO.HRJ 帮助工程文件 STEREO.RTF 帮助源文件 STEREO.HLP 自定义部件的帮助文件 STEREO.KUF 关键字文件 安装步骤 11.4.1 安装关键字文件 1. 退出 Delphi 集成开发环境 2. 备份\ delphi\bin\delphi.hdx 3. 运行 HelpInst 应用程序 4. 打开\ delphi\bin\delphi.hdx 5. 选择 keywords |Add 菜单项并选择 Sberee.buf 6. 选择 File|Source 菜单项 7. 退出 HelpInst 8. 因为 WinHelp 需要知道 STEREO.HLP 的位置所以要做以下其中之一: a. 把 STEREO.Hlp 复制到\ delphi:\bin\ 目录下; b. 在 WinHELP.INI 文件中加上 stereo.hlp=\usehelp ; 11.4.2 安装自定义部件 1. 进入 Delphi 集成开发环境 2. 选择 Option|Install Components 菜单项 3. 选择 Add 4. 选择 Browse 5. 输入\ stereo 6. 选择 OK 11.4.3 激活自定义部件帮助系统 1. TstereoButton 和 TStereeSpeaker 部件从部件调色板上的 Sample 页拖至窗口; 2. 选择 TStereoButton 部件并按 F1, 屏幕上出现关于 TStereoButton 的帮助信息; 3. 在 Object Inspector 窗体口选择 IsOn 属性并按 F1 ,屏幕显示 IsOn 属性; 4. 在主菜单中选择 Help|Topic 菜单项,并搜询 Stereo 主题, 屏幕将出现 STEREO .HLP 的帮助内容。 |