Welcome

首页 / 软件开发 / Delphi / Delphi标准控件-按钮(Button)和位图按钮(BitBtn)

Delphi标准控件-按钮(Button)和位图按钮(BitBtn)2007-05-08 洪恩在线 按钮(Button)是Windows应用程序界面中最常用、最简单的组件之一。除了按钮之外,Delphi还提供了一种位图按钮(BitBtn)。这种按钮的不同之处在于按钮上可以显示位图。下面我们通过一个简单的例子来介绍这两种按钮。

在窗体Form1上放置两个普通按钮和两个位图按钮以及一个编辑框Edit,然后再添加一个窗体Form2,在其上放置一个标签和两个位图按钮。程序界面如下图所示:

按下表设置各按钮的属性:

 Form1Form2
属性Button1Button2BitBtn1BitBtin2BitBtn1BitBtn2
CaptionButton1Button2对话框&CloseOkCancel
Kind bkCustombkClosebkOkbkCancel
CancelFalseTrueFalseFalseFalseFalse
DefaultTrueFalseFalseFalseFalseFalse
ModalResultmrNonemrNonemrNonemrNonemrOkmrCancel
以上均是按钮常用的一些属性,下面作简单的介绍:

Cancel:该属性值为True时,则无论用户何时按Esc键,都会执行该按钮的OnClick事件。如果同一个窗体上具有多个这样的按钮,则会执行TabOrder值最小的按钮的OnClick事件。
Default:这个属性和Cancel属性相似。当用户按下Enter键时,将执行该按钮的OnClick事件。但有一个例外,如果当前拥有输入焦点的控件为另一个按钮时,按Enter键时则只执行当前按钮的OnClick事件。
Kind:这个属性为位图按钮所特有,选择Kind属性的某个选项,用于决定该位图按钮的种类每一种位图按钮具有自己独特的功能。位图按钮常用于各种对话框或模态窗口中,根据按钮的ModalResult属性值来决定对模态窗口的操作。
ModalResult:模态值。当我们单击位图按钮时,将把对话框的模态值设为相同的值。它将决定位图按钮的父窗体的关闭方式。如单击mbOk按钮,将关闭对话框,返回mrOk值。
在完成界面设计后,开始编写事件处理过程。程序清单如下:

由于在程序中我们使用了两个窗体,而在Delphi中每个窗体对应一个单元,所以程序中便有两个单元(Unit1和Unit2)。在Delphi中不同单元之间的调用要在调用单元的实现部分(implementation)的开始进行申明,这里为:

implementation
uses unit2;

在添加Form2时,系统将自动在项目文件Project.dpr中添加生成Form2的语句:

Application.CreateForm(TForm2, Form2);

但是,程序运行时,只显示出Form1,Form2是隐藏的。为了显示出Form2,我们在窗体Form1的BitBtn1按钮的OnClick事件中添加如下的语句:

form2.ShowModal;

单击BitBtn1按钮,将以模态窗体的形式显示出来。所谓模态窗体(ModalForm)是指该窗体关闭之前,其他的窗体不能接受输入焦点。

按下F9编译运行程序,然后按Esc键,将弹出一个信息框,如右图所示。由于Button2的Cancel属性设为True,所以程序运行时,无论何时按下Esc键,将启动Button2的OnClick事件:

procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage("Button2的Cancel属性为True"); //显示出一个信息框
end;

即按Esc键相当于单击Button2。

单击Edit1,将输入焦点置于编辑框内,然后按下会车键。此时将发现触发了Button1的OnClick事件:

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:="Button1的Default属性为True";
end;

因为Button1的Default属性设置为True,所以当输入焦点在编辑框中时,按下会车键时,将触发Button1的OnClick事件,如下图所示。

单击BitBtn1(标题为“对话框”)按钮,将弹出Form2窗体。Form2为模态对话框,单击mbOk按钮或mbCancel按钮,对话框都将自动关闭。如果你不想让对话框关闭,可以将位图按钮的ModalResult属性设置为BrNone。

单击Form1的BitBtn2按钮(标题为“Close”),Form1将自动关闭。Form1为非模态窗体,但是BitBtn2按钮为mbClose按钮,所以它具有关闭窗体的功能。