Форум — Ответы ( К темам )
? | Eugene: Генерирование обработчика событий компоненты TTimer (28-03-2003 23:40:17) |
Мне необходимо создать класс Class, имеющий компоненту типа TTimer в качестве поля (член-данных). И надо создать метод этого класса(Class), который обрабатывает событие OnTimer (или сообщение WM_Timer) TTimer`а. Как это сделать? Если тот же вопрос сформулировать по другому. Понятно, что этого поля TTimer класса Class нет в ObjectInspector. Как создать обработчик события какой-либо компоненты (например TTimer) без использования ObjectInspector? Можно ли сделать по-другому (не желательно)? Например, можно этот класс создать наследованием класса TTimer и перегрузить его обработчик события? | |
Владимир (29-03-2003 02:28:49) | |
Форма Form1, 2 компонента Button, 2 компонента Label Подойдет ? //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" class CLS { private: // public: int count; TTimer *tmr; void createTimer(TComponent* Owner, AnsiString CName){ count = 0; tmr = new TTimer(Owner); tmr->Name = CName; tmr->OnTimer = myFuncTimer; } void setTimerInterval(int value){ tmr->Interval = value; } void deleteTimer() { delete tmr; } void _fastcall myFuncTimer(TObject *Sender){ // обрабатывайте событие таймера как вам нужно, например так count++; Form1->Label2->Caption = count; } }; CLS cls; //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { cls.createTimer(Form1, "myTimer"); cls.setTimerInterval(1500); Label1->Caption = cls.tmr->Name; cls.tmr->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { cls.deleteTimer(); } //--------------------------------------------------------------------------- // когда необходимо добавить таймер к вашему классу // создаете его cls.createTimer(), удаляете cls.deleteTimer(); |