Teacher 2008-8-30 00:24
Delphi标准控件-按钮(Button)和位图按钮(BitBtn)
[tr][td]
[/td][/tr][tr][td]来源:洪恩在线 作者:[/td] [/tr][tr][td][table][tr][td][/td][/tr][/table][align=left] 按钮(Button)是Windows应用程序界面中最常用、最简单的组件之一。除了按钮之外,Delphi还提供了一种位图按钮(BitBtn)。这种按钮的不同之处在于按钮上可以显示位图。下面我们通过一个简单的例子来介绍这两种按钮。[/align][align=left] 在窗体Form1上放置两个普通按钮和两个位图按钮以及一个编辑框Edit,然后再添加一个窗体Form2,在其上放置一个标签和两个位图按钮。程序界面如下图所示:[/align][align=center][img=224,191]http://www.bianceng.cn/upimg/allimg/070508/7.gif[/img] [img=227,188]http://www.bianceng.cn/upimg/allimg/070508/8.gif[/img][/align][align=left] 按下表设置各按钮的属性:[/align][table=96%][tr=#3399ff][td=1,1,108] [/td][td=4,1]Form1[/td][td=2,1]Form2[/td][/tr][tr=#ffffff][td=1,1,108]属性[/td][td=1,1,73]Button1[/td][td=1,1,74]Button2[/td][td=1,1,83]BitBtn1[/td][td=1,1,77]BitBtin2[/td][td=1,1,70]BitBtn1[/td][td=1,1,78]BitBtn2[/td][/tr][tr=#ffffff][td=1,1,108]Caption[/td][td=1,1,73]Button1[/td][td=1,1,74]Button2[/td][td=1,1,83]对话框[/td][td=1,1,77]&Close[/td][td=1,1,70]Ok[/td][td=1,1,78]Cancel[/td][/tr][tr=#ffffff][td=1,1,108]Kind[/td][td=1,1,73] [/td][td=1,1,74] [/td][td=1,1,83]bkCustom[/td][td=1,1,77]bkClose[/td][td=1,1,70]bkOk[/td][td=1,1,78]bkCancel[/td][/tr][tr=#ffffff][td=1,1,108]Cancel[/td][td=1,1,73]False[/td][td=1,1,74]True[/td][td=1,1,83]False[/td][td=1,1,77]False[/td][td=1,1,70]False[/td][td=1,1,78]False[/td][/tr][tr=#ffffff][td=1,1,108]Default[/td][td=1,1,73]True[/td][td=1,1,74]False[/td][td=1,1,83]False[/td][td=1,1,77]False[/td][td=1,1,70]False[/td][td=1,1,78]False[/td][/tr][tr=#ffffff][td=1,1,108]ModalResult[/td][td=1,1,73]mrNone[/td][td=1,1,74]mrNone[/td][td=1,1,83]mrNone[/td][td=1,1,77]mrNone[/td][td=1,1,70]mrOk[/td][td=1,1,78]mrCancel[/td][/tr][/table][align=left] 以上均是按钮常用的一些属性,下面作简单的介绍:[/align][table][tr][td]Cancel:[/td][td]该属性值为True时,则无论用户何时按Esc键,都会执行该按钮的OnClick事件。如果同一个窗体上具有多个这样的按钮,则会执行TabOrder值最小的按钮的OnClick事件。[/td][/tr][tr][td]Default:[/td][td]这个属性和Cancel属性相似。当用户按下Enter键时,将执行该按钮的OnClick事件。但有一个例外,如果当前拥有输入焦点的控件为另一个按钮时,按Enter键时则只执行当前按钮的OnClick事件。[/td][/tr][tr][td]Kind:[/td][td]这个属性为位图按钮所特有,选择Kind属性的某个选项,用于决定该位图按钮的种类每一种位图按钮具有自己独特的功能。位图按钮常用于各种对话框或模态窗口中,根据按钮的ModalResult属性值来决定对模态窗口的操作。 [/td][/tr][tr][td]ModalResult:[/td][td]模态值。当我们单击位图按钮时,将把对话框的模态值设为相同的值。它将决定位图按钮的父窗体的关闭方式。如单击mbOk按钮,将关闭对话框,返回mrOk值。[/td][/tr][/table][align=left] 在完成界面设计后,开始编写事件处理过程。程序清单如下: [/align][align=left][code]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
unit2; //调用Unit2的申明;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:='Button1的Default属性为True';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage('Button2的Cancel属性为True');
//显示出一个信息框
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
form2.ShowModal; //让Form2以模态窗口的显示出来;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
end;
end.
[/code][/align][align=left]由于在程序中我们使用了两个窗体,而在Delphi中每个窗体对应一个单元,所以程序中便有两个单元(Unit1和Unit2)。在Delphi中不同单元之间的调用要在调用单元的实现部分(implementation)的开始进行申明,这里为:[/align][align=left] implementation
uses unit2; [/align][align=left] 在添加Form2时,系统将自动在项目文件Project.dpr中添加生成Form2的语句:[/align][align=left] Application.CreateForm(TForm2, Form2);[/align][align=left] 但是,程序运行时,只显示出Form1,Form2是隐藏的。为了显示出Form2,我们在窗体Form1的BitBtn1按钮的OnClick事件中添加如下的语句:[/align][align=left] form2.ShowModal; [/align][align=left] 单击BitBtn1按钮,将以模态窗体的形式显示出来。所谓模态窗体(ModalForm)是指该窗体关闭之前,其他的窗体不能接受输入焦点。[/align][align=left][img=176,97]http://www.bianceng.cn/upimg/allimg/070508/9.gif[/img] 按下F9编译运行程序,然后按Esc键,将弹出一个信息框,如右图所示。由于Button2的Cancel属性设为True,所以程序运行时,无论何时按下Esc键,将启动Button2的OnClick事件:[/align][align=left] procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage('Button2的Cancel属性为True'); //显示出一个信息框
end;[/align][align=left] 即按Esc键相当于单击Button2。[/align][align=left] 单击Edit1,将输入焦点置于编辑框内,然后按下会车键。此时将发现触发了Button1的OnClick事件:[/align][align=left] procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:='Button1的Default属性为True';
end;[/align][align=left] 因为Button1的Default属性设置为True,所以当输入焦点在编辑框中时,按下会车键时,将触发Button1的OnClick事件,如下图所示。[/align][align=center][img=222,189]http://www.bianceng.cn/upimg/allimg/070508/10.gif[/img][/align][align=left] 单击BitBtn1(标题为“对话框”)按钮,将弹出Form2窗体。Form2为模态对话框,单击mbOk按钮或mbCancel按钮,对话框都将自动关闭。如果你不想让对话框关闭,可以将位图按钮的ModalResult属性设置为BrNone。[/align][align=left] 单击Form1的BitBtn2按钮(标题为“Close”),Form1将自动关闭。Form1为非模态窗体,但是BitBtn2按钮为mbClose按钮,所以它具有关闭窗体的功能。[/align][/td][/tr]