当前位置:学海荡舟 -> 电脑乐园 -> 按钮和位图按钮



  编 程 入 门
--Delphi标准控件--按钮(Button)和位图按钮(BitBtn)

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

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

窗口Form1 窗口Form2

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

 
Form1
Form2
属性
Button1
Button2
BitBtn1
BitBtin2
BitBtn1
BitBtn2
Caption
Button1
Button2
对话框
&Close
Ok
Cancel
Kind
  
  
bkCustom
bkClose
bkOk
bkCancel
Cancel
False
True
False
False
False
False
Default
True
False
False
False
False
False
ModalResult
mrNone
mrNone
mrNone
mrNone
mrOk
mrCancel

  以上均是按钮常用的一些属性,下面作简单的介绍:

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事件,如下图所示。

触发Button1的OnClick事件后

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

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

相关链接:   Delphi技巧