W
wangchengwu
Unregistered / Unconfirmed
GUEST, unregistred user!
助
帮助提示窗口虽然简单方便,但是一般只适用于较短的提示,对于较长的提示显得力不从心,因此Windows应用程序经常借助状态条显示帮助信息。要在状态条显示帮助信息需要响应应用程序的OnHint事件。OnHint事件的声明如下:
OnHint特性
声明:property OnHint: TNotifyEvent;
其中:type TNotifyEvent = procedure (Sender: TObject) of object;
说明:当鼠标在一个控件上稍作停留,并且该控件的Hint特性非空时触发OnHind事件。
讨论OnHint事件之前先介绍一下控件的Hint特性和应用程序的hint特性。当OnHint事件触发后,控件的Hint特性中没有“|”字符时Delphi把这个值同时赋给控件和应用程序控件的Hint特性。如果一个控件的Hint值包含了“|”字符时Delphi把Hint字符串中“|”字符前面的字符串赋给控件的Hint特性,把“|”字符后面的字符串赋给应用程序控件的Hint特性。因此无法直接该应用程序的Hint特性赋值,另外如果应用程序的ShowHint特性为假值或者控件的ShowHint特性为假值时,帮助提示将不显示,但可以利用程序控件的Hint特性通过其它控件,如状态条等显示帮助提示。
OnHint事件是应用程序部件的事件,而应用程序部件是非可视部件,不能使用Object Inspector窗体定义事件,必须编写自己的OnHint事件。
首先,在TForm1对象中宣称ShowHint方法,并在单元的implementation部分编写实现代码。在ShowHint方法中,把应用程序的Hint特性赋给面板的标题。另一个重要问题是必须把ShowHint方法作为处理OnHint事件的方法。窗体的OnCreate事件的代码解决了这个问题。
下面列出了程序的完整代码。当用户运行程序, 把鼠标置于菜单或部件之上,在窗体的状态条中将出现定义的提示。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
procedure ShowHint(Sender: TObject); //这一行是手工加入的
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ShowHint(Sender: TObject);
begin
StatusBar1.Panels[0].Text:= Application.Hint;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnHint := ShowHint;
end;
end.
帮助提示窗口虽然简单方便,但是一般只适用于较短的提示,对于较长的提示显得力不从心,因此Windows应用程序经常借助状态条显示帮助信息。要在状态条显示帮助信息需要响应应用程序的OnHint事件。OnHint事件的声明如下:
OnHint特性
声明:property OnHint: TNotifyEvent;
其中:type TNotifyEvent = procedure (Sender: TObject) of object;
说明:当鼠标在一个控件上稍作停留,并且该控件的Hint特性非空时触发OnHind事件。
讨论OnHint事件之前先介绍一下控件的Hint特性和应用程序的hint特性。当OnHint事件触发后,控件的Hint特性中没有“|”字符时Delphi把这个值同时赋给控件和应用程序控件的Hint特性。如果一个控件的Hint值包含了“|”字符时Delphi把Hint字符串中“|”字符前面的字符串赋给控件的Hint特性,把“|”字符后面的字符串赋给应用程序控件的Hint特性。因此无法直接该应用程序的Hint特性赋值,另外如果应用程序的ShowHint特性为假值或者控件的ShowHint特性为假值时,帮助提示将不显示,但可以利用程序控件的Hint特性通过其它控件,如状态条等显示帮助提示。
OnHint事件是应用程序部件的事件,而应用程序部件是非可视部件,不能使用Object Inspector窗体定义事件,必须编写自己的OnHint事件。
首先,在TForm1对象中宣称ShowHint方法,并在单元的implementation部分编写实现代码。在ShowHint方法中,把应用程序的Hint特性赋给面板的标题。另一个重要问题是必须把ShowHint方法作为处理OnHint事件的方法。窗体的OnCreate事件的代码解决了这个问题。
下面列出了程序的完整代码。当用户运行程序, 把鼠标置于菜单或部件之上,在窗体的状态条中将出现定义的提示。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
procedure ShowHint(Sender: TObject); //这一行是手工加入的
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ShowHint(Sender: TObject);
begin
StatusBar1.Panels[0].Text:= Application.Hint;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnHint := ShowHint;
end;
end.