Дежурный стрелочник

Группа: Участник
Сообщений: 38
Пользователь № 2481
Регистрация: 02.10.06

|
добрый день уважаемые знатоки.
Вопрос у меня такой(по C++ Builder 6): Есть такой класс гридов TStringGrid и у него есть событие OnDrawCell - возникает при перерисовке ячеек(типа, это общеизвестно). Когда создаешь объект такого класса динамически - то возникает вопрос как привязать самодельный обработчик события к объекту.
создать нужно динамически в момент выполнения несколько штук, т.е. на этапе компиляции не известно кол-во обьектов.\ Поэтому сделать их элементами класса формы не получиться и использовать способ типа
| CODE | | StringGrid1->OnDblClick = MyFunc(); |
тоже не получиться т.к. MyFunc() не член класса формы.
Решение я нашел и оно работает - через TMethod т.е. есть функция обработчик
| CODE | | void __fastcall LexDraw(void* This, TObject* Sender, int ACol, int ARow, TRect& Rect, TGridDrawState State) | - самописный обработчик
далее создаем объект грид
| CODE | TStringGrid* GG = new TStringGrid(...)
//--- далее привязываем TMethod Method_OnDrawCell; //-- создаем объект тметод
Method_OnDrawCell.Data = GG; // привязываем к нему наш GG
Method_OnDrawCell.Code= LexDraw; // привязываем к нему функцию обработчик
GG->OnDrawCell = *(TDrawCellEvent*)&Method_OnDrawCell;
|
в последней строчке видно что объект тметод преобразуется в некоторый тип TDrawCellEvent.
Собственно вопросы: 1.как ЭТО(TDrawCellEvent) называется чтобы можно было про него почитать в хелпе. 2.какой тип аналогичный TDrawCellEvent нужно использовать чтобы можно было привязать самодельный обработчик событию OnDblClick того же грида.
Прошу прощения если написано коряво.
Отредактировано VilgelmKaizer - 13.07.2010, 20:03 |