1. 程式人生 > >class helper 可能是從 Delphi 2007 增加的新語法

class helper 可能是從 Delphi 2007 增加的新語法

unit implement ctrl 子類 detail util fun variants post

class helper 可能是從 Delphi 2007 增加的新語法, 因為感覺不太實用, 直到今天才測試了一下.

試過之後才知道: 挺有意思的! 基本功能就是修改已存在的類.

Txxx = class helper for T... {T... 表示已存在的類} {可以替換已存在的方法} {也可以有新的方法、成員}end;
//這之後再使用 T... 類及其子孫類時, 都會優先使用 Txxx 的修改.

例一:

unit Unit1;
interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm) Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
TMyClass = class function func1: string;
function func2: string;
end;
TMyClassHelper = class helper for TMyClass function func1: string;
{將把 TMyClass 的同名方法替換掉} function func3: string;
{將為 TMyClass 及其子類增加這個方法} end;
var Form1: TForm1;
implementation{$R *.dfm}{ TMyClass }function TMyClass.func1: string;
begin Result := ‘TMyClass.func1‘;
end;
function TMyClass.func2: string;
begin Result := ‘TMyClass.func2‘;
end;
{ TMyClassHelper }function TMyClassHelper.func1: string;
begin Result := ‘TMyClassHelper.func1‘;
end;
function TMyClassHelper.func3: string;
begin Result := ‘TMyClassHelper.func3‘;
end;
//測試procedure TForm1.Button1Click(Sender: TObject);
var obj: TMyClass;
begin obj := TMyClass.Create;
ShowMessage(obj.func1);
{TMyClassHelper.func1} ShowMessage(obj.func2);
{TMyClass.func2}

http://blog.csdn.net/qdseashore/article/details/7757197

class helper 可能是從 Delphi 2007 增加的新語法