Class helper example

Top 

Example code : Declaring of a class helper

type

  TMyClass = class

    procedure MyProc;

    function MyFunc: Integer;

  end;

 

  { TMyClass }

 

procedure TMyClass.MyProc;

var

  X: Integer;

begin

  X := MyFunc;

end;

 

function TMyClass.MyFunc: Integer;

begin

  WriteLn('TMyClass.MyFunc called');

end;

 

type

  TMyClassHelper = class helper for TMyClass

    procedure HelloWorld;

    function MyFunc: Integer;

  end;

 

procedure TMyClassHelper.HelloWorld;

begin

  Writeln(Self.ClassName); // Self refers to TMyClass type, not TMyClassHelper

end;

 

function TMyClassHelper.MyFunc: Integer;

begin

  WriteLn('TMyClassHelper.MyFunc called');

end;

 

procedure TForm1.W3Button4Click(Sender: TObject);

var

   X: TMyClass;

begin

   X := TMyClass.Create;

   X.MyProc;     // Calls TMyClass.MyProc

   X.HelloWorld; // Calls TMyClassHelper.HelloWorld

   X.MyFunc;     // Calls TMyClassHelper.MyFunc

end;

TMyClass.MyFunc called

TMyClass

TMyClassHelper.MyFunc called

 

Note that the class helper function MyFunc is called, because the class helper takes precedence over the actual class type.