类的属性与事件

首先我们看看类的属性与属性的自动完成功能

在这里我们构建一个类,类有Age属性

首先我们这样书写

  TMyClass = class
private
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
property Age : integer;
published
{ published declarations }
end;

第二步

在该类中任意位置 输入 Ctrl + Shift + C 将生成一下代码

  TMyClass = class
private
FAge: integer;
procedure SetAge(const Value: integer);
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
property Age : integer read FAge write SetAge;
published
{ published declarations }
end;

同时在实现区生成一下代码

procedure TMyClass.SetAge(const Value: integer);
begin
FAge :
= Value;
end;

这样我们就拥有了一个带Age属性的类,同时学习了属性的自动完成功能

接下来,我们看一下类的事件

举例:如果当我们上面这个类的Age属性等于100时,我们希望程序提示‘恭祝老寿星’,我们该怎么做呢

请看一下代码

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1
= class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

TMyEvent
= procedure of object;

TMyClass
= class(TComponent)
private
FAge: Integer;
FOnHundured: TMyEvent;
procedure SetAge(const Value: Integer);

{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
constructor Creat;
procedure MyHundured;
property Age: Integer read FAge write SetAge;
property OnHundured: TMyEvent read FOnHundured write FOnHundured;
published
{ published declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
{ TMyClass }

constructor TMyClass.Creat;
begin
FOnHundured :
= MyHundured;
end;

procedure TMyClass.MyHundured;
begin
showmessage(
'恭祝老寿星');
end;

procedure TMyClass.SetAge(const Value: Integer);
begin
if (Value > 0) and (Value < 200) then

FAge :
= Value;
if Value = 100 then
OnHundured;
end;

procedure TForm1.btn1Click(Sender: TObject);
var
Mycla: TMyClass;
begin
Mycla :
= TMyClass.Creat;
Mycla.Age :
= 100;
end;

end.

当然,在上面这个类中,你可以用任何一个方法接管该类的OnHundured事件

posted @ 2011-09-03 10:23  宋扬  阅读(226)  评论(0编辑  收藏  举报