_Closure
Ключевое слово _closure позволяет объявить специальный указатель (замыкание) на функцию-элемент. В отличие от стандартного указателя на функцию-элемент, объявленного, например, как
void (AClass::*funcPtr)(int);
и привязанного к конкретному классу, в объявлении замыкания класс не указывается и, таким образом, оно может ссылаться на любую функцию-элемент любого класса, имеющую соответствующий список параметр ров. Объявление замыкания отличается от указателя на функцию наличием ключевого слова closure перед именем переменной:
void (_closure *aClosure) (int) ;
SomeClass *some0bj = new SomeClass;
aClosure = someObj->Func;
aClosure (1);
Замыкание комбинирует указатель на функцию-элемент с указателем на конкретный объект, и последний передается в качестве this при вызове функции через замыкание.
Типы событий в классах компонентов являются замыканиями:
typedef void fastcall ( closure *TPassCompleteEvent)
(System::TObject *Sender, bool& stop);
published:
_property TPassCompleteEvent OnPassComplete =
{ read=FOnPassComplete, write=FOnPassComplete };