多语言展示
当前在线:1489今日阅读:27今日分享:41

Delphi中类的自定义事件

Delphi中类的自定义事件,事件其实是一个指针,指向一个过程,属于一个对象。下面用实例来演示
工具/原料
1

Delphi7

2

Windows电脑

方法/步骤
1

打开Delphi7集成开发环境,在默认工程的Form1窗体上放一个Edit1输入框和一个Button1窗体。

2

在Unit1.pas文件,先定义一个过程类型,再定义一个类,这个类包含上面定义的过程类型的变量,代码如下:  TProEvent = procedure of object;  TTestClass = class  private    FName:string;    FScore:string;    FOnScoreFull:TProEvent;    procedure SetName(const name:string);    procedure SetScore(const score:string);  public    procedure SetOnScoreFull;    constructor create;  published    property Name:string read FName write SetName;    property Score:string read FScore write SetScore;    property OnScoreFull:TProEvent read FOnScoreFull write FOnScoreFull;  end;事件本身也是属性,所以在Published区定义OnScoreFull属性。

3

接下来我们定义事件的挂载,我们在类的构造函数中就将事件处理方法赋给类的过程类型的字段,代码如下;constructor TTestClass.create;begin  FOnScoreFull:=SetOnScoreFull;end;

4

下面再定义三个方法的实现,代码如下:procedure TTestClass.SetName(const name: string);begin  FName:= name;end;procedure TTestClass.SetOnScoreFull; //事件触发执行的方法begin  showMessage('成绩不能超过100'); end;procedure TTestClass.SetScore(const score: string);begin  if StrToInt(score)<=100 then    FScore:=score  else    OnScoreFull;  //触发事件end;

5

双击Button1按钮进入事件方法,并写如下代码:procedure TForm1.Button1Click(Sender: TObject);var  mytest:TTestClass;begin  mytest:=TTestClass.create;  mytest.Name:='李四';  mytest.Score:=Edit1.Text;end;定义了一个TTestClass类的实例,并对Name属性和Score属性进行赋值,当Score>100会触发事件。

6

F9运行程序,Edit1内输入102,大于100时,会弹出对话框,提示成绩不能大于100

推荐信息