myamanda

博客园 首页 新随笔 联系 订阅 管理
在Delphi应用程序开发中,程序设计人员的大部分工作是在组件的事件句柄中添加自己的程序代码,以实现具体的应用。在开发一些较大的应用程序时,为了完善程序的功能,使用户用起来方便、灵活,通常需要增加大量的组件,其中一些组件的事件句柄内容可能完全相同。如一个菜单项和与之有相同功能的按钮(如Button1)的OnClick事件;还有一些内容大部分相同,如Button1的OnClick事件改变Edit1的某些属性,Button2的OnClick事件改变Edit2的同样属性,两段代码内容中除了名称(Edit1和Edit2)不同外,其他完全相同。在编写代码时,虽然可以通过复制、粘贴、替换简化操作,但还是增大了程序的开发工作量和执行文件的大小。那么有没有解决上述问题的方法呢?
答案是肯定的,这就是使用事件句柄过程中的Sender参数。目前市面上有关Delphi的书籍中,对此参数进行讨论的部分不多。事实上这个参数非常重要,正是它告诉我们某个过程当前的调用者是哪一个组件。
下面通过建立一个简单的程序,介绍如何使用Sender参数简化Delphi的编程代码。
新建一个应用程序,在form1上添加两个按钮组件(Button1和Button2)和一个文本框组件(Edit1)。
Button1的OnClick事件代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
with Sender as Tbutton do
begin
Edit1.Text:=name;
Enabled:=false;
Width:=100;
Height:=100;
end;
end;
选中Button2,在Object Inspector的Events属性页上选择OnClick事件,下拉该事件右边的组合框,选择已有的Button1Click事件句柄名字。这样,按F9编译执行后,分别单击Button1和Button2按钮,就可以发现通过利用一段相同的代码,实现了对不同组件属性的控制。同时,在代码编辑器中只显示一个公共的事件句柄,而不是为每一个组件都重复显示这个句柄。
以上介绍的是Sender参数在同类(Tbutton)组件间的使用方法,有兴趣的读者可以试一试不同类的组件间Sender参数的使用方法。下面是修改后的Button1的OnClick事件代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Sender is Tbutton then
begin
with Sender as Tbutton do
begin
Edit1.Text:=name;
Enabled:=false;
Width:=100;
Height:=100;
end;
end;
if Sender is Tedit then
begin
with Sender as Tedit do
begin
Edit1.Text:=name;
Enabled:=false;
Width:=100;
Height:=100;
end;
end;
end;
选中Edit1,在Object Inspector的Events属性页上选择OnClick事件,下拉该事件右边的组合框,选择已有的Button1Click事件名柄名字即可。
posted on 2009-08-05 10:58  myamanda  阅读(208)  评论(0)    收藏  举报