Версия для печати

-Форумы по C++ Builder
+--Форум: Вопросы программирования в C++Builder
+---Тема: Привязка обработчика события TStringGrid Автор темы: VilgelmKaizer


Ответил от:: VilgelmKaizer 13.07.2010, 17:53

добрый день уважаемые знатоки.

Вопрос у меня такой(по C++ Builder 6):
Есть такой класс гридов TStringGrid и у него есть событие OnDrawCell - возникает при перерисовке ячеек(типа, это общеизвестно).
Когда создаешь объект такого класса динамически - то возникает вопрос как привязать самодельный обработчик события к объекту.

создать нужно динамически в момент выполнения несколько штук, т.е. на этапе компиляции не известно кол-во обьектов.\
Поэтому сделать их элементами класса формы не получиться и использовать способ типа
------------ CODE SAMPLE ---------- StringGrid1->OnDblClick = MyFunc(); -----------------------------------
тоже не получиться т.к. MyFunc() не член класса формы.

Решение я нашел и оно работает - через TMethod
т.е.
есть функция обработчик
------------ CODE SAMPLE ---------- void __fastcall LexDraw(void* This, TObject* Sender, int ACol, int ARow, TRect& Rect, TGridDrawState State) ----------------------------------- - самописный обработчик

далее создаем объект грид
------------ CODE SAMPLE ----------
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 того же грида.

Прошу прощения если написано коряво.

Edited by VilgelmKaizer on 13.07.2010, 20:03
Ответил от:: VilgelmKaizer 27.07.2010, 19:49

короче разобрался это TNotifyEvent. мать его за ногу.

обсуждение и баталии тут:(URL: http://sql.ru/forum/actualthread.aspx?tid=774096&pg=-1)


Конец


Powered by Invision Board
© 2002 Invision PS