首先我们看看类的属性与属性的自动完成功能
在这里我们构建一个类,类有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事件