第二章 处理按钮按下事件(Handing a button press event)


可视化组件能够⽣成和处理⼏⼗种事件:⿏标点击、按钮按下、键盘按 下、窗⼝打开等。

当⽤户按下任何⿏标按钮时,Windows 会向应⽤程序发送⼀条消息“此⿏ 标按钮已被单击”。如果程序员编写了对此事件的响应,程序将响应此事件。

对事件的响应是系统事件发⽣的结果。

对事件的程序响应被编程为要执⾏的操作列表;该列表在代码编辑器窗⼝中输⼊。为了让程序对⿏标按钮点击做出反应,有必要编写⼀个称为事件处理程序的程序⽚段。

代码编辑器窗⼝

这个窗⼝的标题是Unit1。
您可以在编辑器窗⼝中打开⼏个源代码⽂件。所有打开的⽂件都有⾃⼰的选项卡, 它们的选项卡标签将显示它们的源代码⽂件名。 如果程序有三个窗⼝,就会有三个单元。 所有三个单元都将显示在源代码编辑器中。
简单事件仅包含事件源,由事件处理程序过程中的Sender参数指定。 事件处理程序处理复杂事件的过程需要附加参数, 例如⿏标指针的坐标。
选择⼀个控制元素会产⽣⼀个OnClick事件,也称为Press event。通常它源于⿏标对组件的单击。OnClick事件是应⽤程序开发中最常⽤的事件之⼀。对于某些组件,OnClick事件可能源于控制元素上的不同操作。

作为⼀个例⼦,我们将编写命令按钮btnMy的按下事件处理程序,放在窗体frmMy:
双击那个按钮
Delphi⾃动⽣成代码,最⼤限度地减少键盘输⼊,为我们提供了完整的⿏标按键按体程序。

procedure TfrmMy.btnMyClick(Sender: TObject);
begin

end;

光标将位于begin和end关键字之间。在这⾥,我们将编写⼀条指令以编程⽅式关闭表单窗⼝ - 完全类似于窗⼝标题中的系统按钮。 由于此窗⼝是应⽤程序中唯⼀的主窗⼝,整个程序将被终⽌。
输⼊frmMy并添加⼀个点(' . ')。过了⼀会⼉,Delphi显示代码完成选项。 这些选项是frmMy组件可⽤的⽅法和属性(⾃动提示)。

我们可以通过导航列表找到适当的属性或⽅法。由于列表相对较⼤,我们可以通过输⼊名称的⼏个字符来加快搜索速度,列表中的元素数量将⼤⼤减少。

我们按回⻋车⻋车键结束代码完成输⼊。对btnMy命令按钮的响应的最终代码如下所示:

procedure TfrmMy.btnMyClick(Sender: TObject);
begin
   frmMy.Close;
end;

程序运⾏后,如果按命令按钮btnMy,程序将退出。在本例中,我们使⽤ Close⽅法(过程)。调⽤⼀个⽅法显示将对组件做什么。您可以在示例中看 到⼀个⽅法引⽤语法:组件的名称放在前⾯,然后是分隔符(点),最后是分隔符后⾯指定的⽅法名。

<component_name>.<method>;

每个组件都有⾃⼰的⼀组⽅法。有时在不同的组件中可以找到相同的⽅法。

让我们演示另⼀个⽅法,Clear。此⽅法清除内容,并可以应⽤于组件 Edit。

Edit1.Clear

如上所述,组件具有⽅法和属性。

属性是组件的属性。 属性可以按照如下⽅式更改或指定:⾸先引⽤组件的名称,然后放⼊分隔符(点),在分隔符之后指定属性的名称(Delphi允许我 们从代码完成列表中选择⼀个)。然后我们输⼊赋值运算符,最后,我们指定属性的值。

<component_name>.<property>:=<value>;

⼤多数组件属性对应于对象检查器窗⼝中显示的属性。 也有⼀些属性没 有反映在那⾥;稍后我们将对此进⾏研究。现在,让我们编写⼀个程序, 在这个程序中, 按下命令按钮将⽤⽩⾊背景填充表单窗⼝。 在这个程序中,我们必须使⽤Color属性。

procedure TfrmMy.btnMyClick(Sender: TObject);
begin
    frmMy.Сolor:=clWhite;
end;

我们不仅可以指定组件属性, 还可以读取它们。 该功能的⼀种⽤法是将 ⼀个组件的属性的⼀个值赋给另⼀个组件的某些属性。语法如下所示:

 <component1_name>.<property1>:=<component2_ name>.<property2>;

举例:

lblMy.Caption:=edtMy.Text;

这指示程序将⽂本框edtMy中的⽂本放⼊标签lblMy的标题中。

多个动作⽤分号分隔。例如:

procedure TfrmMy.btnMyClick(Sender: TObject);
begin
   edit1.Clear;
   edit1.Color:=clBlue;
end;

按下按钮后会有两个动作:清除⽂本框,将⽂本框的背景填充为蓝⾊。

练习

练习1. 
创建⼀个包含标签和两个按钮的表单。第⼀个按钮启⽤标签,第⼆个按钮禁⽤标签。

练习2.
创建⼀个包含标签、⽂本框和按钮的表单。 按下按钮将⽂本从⽂本框移动到标签,并清除⽂本框条⽬。

练习3.
交通灯: 创建⼀个包含三个标签和三个按钮的表单。每个按钮应该启⽤⼀个适当的标签,并禁⽤其他标签。

练习4.
创建⼀个包含标签和四组按钮的表单; 每组包含三个按钮。第⼀组(三个按钮)更改标签的背景颜⾊。第⼆组(三个按钮)更改标签的字体颜⾊。第三组 (三个按钮)更改标签的字体⼤⼩。最后⼀个按钮组(三个按钮)更改标签字体族的名称。