来源:远方网络 | 2005-12-25 16:39:07 | (有1776人读过)
DELPHI基础教程
第十一章 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的帮助内容。
|