C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Привязка обработчика события TStringGrid, привязать обработчик события к динамичес
VilgelmKaizer
  Отправлено: 13.07.2010, 17:53


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

Группа: Участник
Сообщений: 38



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

Вопрос у меня такой(по 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
VilgelmKaizer
Отправлено: 27.07.2010, 19:49


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

Группа: Участник
Сообщений: 38



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

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


Вернуться в Вопросы программирования в C++Builder