如何在自己做的label控件里封装一个TTimer控件?

时间:2022-05-18 19:32:13
呵呵,不好意思 啊,一下问了这么多的问题,但我实在是解决不了,请各位大侠帮忙………… 

我自己做了一个label控件,我想在Label 控件中封装一个TTimer控件。目的是实现通过定时器的时间控制,使在label上显示的文字能定时的闪烁。 
请问如何封装一个TTimer控件以达到这样的目的啊? 

我自己尝试了一下,但没有效果。我的做法是: 

1.在Label的声明中定义类成员 TTimer *MyTimer; 

2.然后在label中的成员函数setTime(int nTime)中写下面的代码 
void _fastcall MyLabel::setTime(int nTime) 

MyTimer = new TTimer(Application); 
   MyTimer->Interval=nTime;//把传过来的时间参数传给Interval,以实现定时的效果 
if(this->Caption!="")//判断显示的字符串是否为空,如果不为空则赋值为空,否则就赋值为“你好!”. 
          this->Caption=""; //就是通过这几句,在定时器设置的nTime时间里实现闪烁的 
   else 
        this->Caption="你好!"; 


3.在label的构造函数里: 
m_nTime=200;//设置成员变量m_nTime,单位是毫秒                    
   this->Caption="你好!"; 
setTime(m_nTime);//设置闪烁的时间并实现闪烁的效果。 

我的做法主要就是上面的这些了,哪位高手指点一下是哪里写的不对,造成了TTimer没有定时的效果,还有是什么造成了我的label上的显示字符无法初始化?急等……谢谢!!!!!!!!!!!! 

5 个解决方案

#1


TTimer应该在构造函数里面创建。然后闪烁是要写在Timer的事件里面的,自己添加一个事件给他你这样写有效果才怪

#2


很感谢您,可是我是新手,刚用BCB,不太明白你的意思,能说的具体点么?
闪烁该怎么写在Timer的事件里面?这个事件怎么定义啊?
您说的这个思想我是知道的,我也是这么想的,可是我不知道怎么实现,怎么写代码?
因为我不是拉一个TTimer控件,而是要自己定义一个TTimer控件,所有的代码要自己写
如果是在Form上拉一个控件实现闪烁的话,我也会.那很简单.
但是我想在我自己的label控件里封装一个TTimer控件,为的是实现闪烁的目的.我应该在构造函数里怎么写这个控件呢?
您能简单的把代码写一下给我看看好么?
比如在构造函数里这么写:

  m_nTime=200;
  TTimer *MyTimer;
  MyTimer = new TTimer(Application);
  MyTimer->Interval=m_nTime ;

然后怎么写我的实现闪烁部分的代码?在哪里写?

#3


MyTimer应该是成员,不是局部变量

class TMyLabel : public TLabel
{
private: 
   int FInterval;
   TTimer *ftimer;
   void __fastcall Timer1Timer(tobject *Sender);
public:  
        __fastcall TMyLabel(TComponent* Owner);
__published:  
   __property int Interval ={read = FInterval, write =FInterval};
};

__fastcall TMyLabel::TMyLabel....
{
  Ftimer = new TTimer(Application);
  Ftimer->OnTimer=Timer1Timer;
  ftimer->Interval=fInterval;
  Ftimer->Enabled=true;
}
void __fastcall TMyLabel::Timer1Timer。。。
{
   //这里控制你的caption
}

类似这样,自己扩充吧。没写完的自己补上。

#4


该回复于2008-07-19 16:14:00被版主删除

#5


该回复于2008-07-10 02:51:37被版主删除

#1


TTimer应该在构造函数里面创建。然后闪烁是要写在Timer的事件里面的,自己添加一个事件给他你这样写有效果才怪

#2


很感谢您,可是我是新手,刚用BCB,不太明白你的意思,能说的具体点么?
闪烁该怎么写在Timer的事件里面?这个事件怎么定义啊?
您说的这个思想我是知道的,我也是这么想的,可是我不知道怎么实现,怎么写代码?
因为我不是拉一个TTimer控件,而是要自己定义一个TTimer控件,所有的代码要自己写
如果是在Form上拉一个控件实现闪烁的话,我也会.那很简单.
但是我想在我自己的label控件里封装一个TTimer控件,为的是实现闪烁的目的.我应该在构造函数里怎么写这个控件呢?
您能简单的把代码写一下给我看看好么?
比如在构造函数里这么写:

  m_nTime=200;
  TTimer *MyTimer;
  MyTimer = new TTimer(Application);
  MyTimer->Interval=m_nTime ;

然后怎么写我的实现闪烁部分的代码?在哪里写?

#3


MyTimer应该是成员,不是局部变量

class TMyLabel : public TLabel
{
private: 
   int FInterval;
   TTimer *ftimer;
   void __fastcall Timer1Timer(tobject *Sender);
public:  
        __fastcall TMyLabel(TComponent* Owner);
__published:  
   __property int Interval ={read = FInterval, write =FInterval};
};

__fastcall TMyLabel::TMyLabel....
{
  Ftimer = new TTimer(Application);
  Ftimer->OnTimer=Timer1Timer;
  ftimer->Interval=fInterval;
  Ftimer->Enabled=true;
}
void __fastcall TMyLabel::Timer1Timer。。。
{
   //这里控制你的caption
}

类似这样,自己扩充吧。没写完的自己补上。

#4


该回复于2008-07-19 16:14:00被版主删除

#5


该回复于2008-07-10 02:51:37被版主删除