======================================================
注:本文源代码点此下载
======================================================
河南金融管理学院
潘汉杰
---- delphi是一种功能很强的可视化程序开发工具。我们在使用delphi开发windows 应用程序的过程中,虽然delphi为每个可视化组件都提供了很多属性(property)和事件(event),但在实际应用中可能会碰到一些自己需要的特殊事件,这些特殊事件delphi 又没有提供,这时我们就需要为应用程序添加这些特殊事件。当这些事件发生后,又能马上调用处理这些事件的过程。本文通过实例来说明如何为应用程序添加事件和处理事件的过程。
---- 在delphi中,事件实际上是专门化的属性,它是一个过程(procedure)的指针。要添加事件,首先应在所定义的类中说明一个用来指向事件过程的指针,该指针的作用是当事件一旦发生,就通过这个指针执行所指向的处理这个事件的过程。最后通过指定符 published公布定义的事件属性以及与之关联的事件处理过程指针。
---- 本例中,ftoobig为定义的事件处理过程指针,ontoobig为事件属性名。事件处理过程指针ftoobig通过程序的初始化使之指向过程toobig1。在delphi的表单(form1)上放置三个编辑框,分别为edit1、edit2和edit3,放一按钮button1。程序中设私有整型变量val1、val2和res,变量res用来记录val1和val2的乘积,并用edit3显示出来。当通过edit1和edit2输入的数据有一个大于100时,会触发一个事件,并调用事件处理过程toobig1显示一个对话框,说明此事件已经发生并已进行处理。源程序代码如下, 该程序在delphi2010 + windows7中调试通过。
1 unit unit1;
2 interface
3 uses
4windows, messages, sysutils, classes,
5 graphics, controls, forms, dialogs,
6stdctrls;
7 type
8tform1 = class(tform)
9edit1: tedit;{输入第一个整数}
10edit2: tedit;{输入第二个整数}
11edit3: tedit;{输出前二个整数的积}
12button1: tbutton;
13procedure button1click(sender: tobject);
14 procedure toobig1(sender: tobject);
15{当事件触发后调用此过程}
16procedure formcreate(sender: tobject);
17private
18 val1,val2,res:integer; {val1和val2存放输入
19 的两个整数,res存放两数的积}
20 ftoobig : tnotifyevent;{定义一个指向事件
21 处理器的指针ftoobig}
22{ private declarations }
23public
24{ public declarations }
25published
26 propertyontoobig:tnotifyevent read
27 ftoobig write ftoobig;{定义事件}
28end;
29
30 var
31form1: tform1;
32 implementation
33 {$r *.dfm}
34 procedure tform1.button1click(sender: tobject);
35 begin
36val1 := strtoint(edit1.text);
37val2 := strtoint(edit2.text);
38if(val1 100)and(val2 100) then
39begin
40res := val1*val2;
41edit3.text := inttostr(res);
42end
43else
44if assigned(ftoobig) thenontoobig(self);
45 end;
46
47 procedure tform1.toobig1(sender: tobject);
48 begin
49 application.messagebox('too big',' test event! ',mb_ok);
50 end;
51
52 procedure tform1.formcreate(sender: tobject);
53 begin
54val1:=1;
55val2:=1;
56ftoobig := toobig1;{使事件处理指针指向事件处理器}
57 end;
58
59 end.
60
61
没事,别怕,这是签名→→┃ 青山幽谷笛声扬,白鹤振羽任翱翔。往事前尘随风逝,携手云峰隐仙乡。 ┃
标签: delphi
绿色通道:好文要顶关注我收藏该文与我联系
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/