[delphi]如何为Delphi程序添加事件和事件处理器

本文详细介绍了如何在Delphi中为应用程序添加自定义事件,并通过实例展示了事件处理过程的实现。通过定义事件处理过程指针和事件属性,可以实现在特定条件下触发事件,并调用相应的处理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

河南金融管理学院

潘汉杰

---- 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^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值