Про вказівники методів.

Вказівники методів - це змінна, яка вказує на метод об'єкту, причому не обов'язково того ж самого класу.

Формат оголошення типу «вказівник методу» аналогічний формату оголошення процедурного типу, за винятком того, що наприкінці визначення типу дописується пара ключових слів of object

Наприклад:

type
  TOnSomeEvent = procedure(eventCode: Integer) of object;
  TSomeFunc = function(par1: Integer; par2: String): String of object;

 

Різниця в роботі з вказівниками методів у Delphi і Lazarus

Різниця в роботі виникає під час присвоєння змінних типу вказивники методу.

У Delphi при присвоєнні треба вказувати ім'я методу, а в Lazarus треба вказувати вказівник на метод використовуючи символ @.

Приклад: 

// У класі TSomeClass реалізовано метод OnSomeEvent який відповідає задекларованом типу вказівника методу TOnSomeEvent (див. вище)
TSomeClass = class
private
  procedure OnSomeEvent(eventCode: Integer); 
end;

// Тепер якщо в якомусь методі ми захочемо змінній присвоїти цей метод, то треба робити наступним чином
procedure TSomeClass.pointerMethodAssignment;
var
  eventProc: TOnSomeEvent;
begin
{$IFDEF FPC}
  // Lazarus
  eventProc := @OnSomeEvent;
{$ELSE}
  // Delphi
  eventProc := OnSomeEvent;
{$ENDIF}
end;