Делегат ссылается на метод, не являющийся членом класса.
Перенести описание метода под класс и изменить ссылку на метод с учётом класса.
Delegate Delegate3(index: integer);
Sub Main;
Var
cl1: Class1;
Begin
cl1 := New Class1.Create;
cl1.DelegateEvent := cl1.DelegateFunc1;
cl1.DelegateEvent(1);
cl1.DelegateEvent := DelegateFunc2;
cl1.DelegateEvent(2);
End Sub Main;
Public Class Class1: Object
Friend Event DelegateEvent: Delegate3;
Public Sub DelegateFunc1(index: integer);
Begin
Debug.WriteLine("DelegateFunc1 из Class1 " + index.ToString)
End Sub DelegateFunc1;
End Class Class1;
Public Sub DelegateFunc2(index: integer);
Begin
Debug.WriteLine("DelegateFunc2 " + index.ToString)
End Sub DelegateFunc2;
При компиляции указанного кода на строке «cl1.DelegateEvent := DelegateFunc2;» будет сгенерирована ошибка «Делегат ссылается на метод, не принадлежащий классу». Для разрешения ошибки необходимо перенести описание метода DelegateFunc2 под класс Class1 и заменить строку «cl1.DelegateEvent := DelegateFunc2;» на «cl1.DelegateEvent := cl1.DelegateFunc2;».
См. также: