Каким образом назначить событие OnMouseDown для динамически созданного компонента

программирование Delphi C++ Builder Code Gear

Программа написана на C++ Builder 2010;
Каким образом назначить событие для динамически созданного компонента - а именно
для OnMouseDown.
С событиями OnChange, OnClick, OnShow - типа TNotifyEvent все работает идеально через методы.
События типа TMouseEvent работать через методы не хотят.

Код такого вида так же не работает (компилируется но выкидывает ошибку - access violation):
void __fastcall MouseDownEvent(TObject *Sender, TMouseButton Button, TShiftState Shift,int X, int Y)
{
ShowMessage("Hello World");
}
CategoryLists->OnMouseDown = *(TMouseEvent*) & MouseDownEvent;

Вопрос: каким образом отловить нажатие клавиши мыши у динамически созданного компонента на форме?

Примечание:
Такой код не компилируется.
Выдает ошибку Cannot convert 'void (_fastcall *)(TObject *,TMouseButton,TShiftState,int,int)' to 'TMouseEvent'

Если тип функции выставить TMouseEvent - выдает другую ошибку.
Cannot convert 'TMouseEvent' to 'TMouseEvent'

Так что тут есть какой то косяк с приведением типов.
Ответы:
Обработчик события должен быть привязан к объекту
т.е. нужно объявлять методом формы, например так:
void __fastcall TForm1::MyMouseDownEvent(TObject *Sender, TMouseButton Button, TShiftState Shift,int X, int Y)
{
ShowMessage("Hello World");
}


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.