Метод активизируется посредством оператора вызова процедуры
или функции, состоящего из десигнатора метода, за которым следует
список параметров. Такой тип вызова называется активизацией мето-
да.
десигнатор метода
│ ┌────────────────────┐
└─┬──────────────────────────────────────>│идентификатор метода├>
│ ^ └────────────────────┘
│ ┌──────────────────────┐ ┌───┐ │
└>│ ссылка на переменную ├>│ . ├────┘
└──────────────────────┘ └───┘
Ссылка на переменную задается, если десигнатор метода должен
описывать экземпляр объектного типа, а идентификатор метода дол-
жен обозначать метод этого объектного типа.
Экземпляр, обозначенный десигнатором метода, становится не-
явным фактическим параметром метода; он соответствует формальному
параметру-переменной с именем Self, который владеет объектным ти-
пом, соответствующим активизированному методу.
Для статических методов описанный тип (на этапе компиляции)
определяет, какой из методов активизируется. Например, десигнато-
ры F.Init и FP^.Init всегда активизируют TField.Init, так как
описанным типом F и FP^ является TField.
Для виртуальных методов выбором экземпляра управляет факти-
ческий тип (этапа выполнения). Например, десигнатор FP^.Display
может активизировать методы TField.Display, TStrField.Display,
TNumField.Display или TZipField.Display (в зависимости от факти-
ческого типа экземпляра, указываемого FP).
В операторе with, ссылающемся на экземпляр объектного типа,
ссылка на переменную в десигнаторе метода может опускаться. В
этом случае экземпляром, на который ссылается оператор with, ста-
новится неявный параметр Self активизации метода. Аналогично,
ссылка не переменную может опускаться в методе. В этом случае
параметром Self метода, содержащего вызов, становится неявный па-
раметр Self активизации метода.