Форум — Ответы     (  К темам )
 ?  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();