首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

询问有关FormCreate事件里跟时间事件的关系?紧急求援!解决方案

2012-03-11 
询问有关FormCreate事件里跟时间事件的关系??紧急求援!!!我的代码是这样的:请大家帮我看看,执行的时候为什

询问有关FormCreate事件里跟时间事件的关系??紧急求援!!!
我的代码是这样的:请大家帮我看看,执行的时候为什么会这样?
void   __fastcall   TfrmMainControl::FormCreate(TObject   *Sender)
{
      。。。
      StartStatusYF();//1
      StartStatusRed();   //2
      。。。
}
void     TfrmMainControl::StartStatusYF()
{
      InitStatusTim-> Enabled   =   true;     //3
}
void   TfrmMainControl::StartStatusRed()
{
      InitStatusTimRed-> Enabled   =   true;   //4
}
void   __fastcall   TfrmMainControl::InitStatusTimTimer(TObject   *Sender)
{
      。。。。   //5
}
我按“F8”执行的时候,跳到1,如果再按“F7”,就跳到3执行,为什么3这里执行完之后不去执行时间控件的5这里的代码?而是继续执行FormCreate这里的2代码呢?
假如我想执行1之后,然后执行3,再去执行5,请问如何实现?
        另外我想问一下?假如我用到了Timer控件,怎么样去让它倒计时10S,去实现我这样的一个信号灯控制呢?
void   __fastcall   TfrmMainControl::InitStatusTimTimer(TObject   *Sender)
{
      int   intFlag;
      switch(intFlag)
                {
                      case   0:
                                {
                                    InitStatusTim-> Interval=1000;
                                    RedGreenShow(1);//表示灯亮  
                                    intFlag=1;
                                    break;
                              }
                    case   1:
                              {
                                  InitStatusTim-> Interval=1000;
                                  RedGreenShow(0);   //表示灯灭
                                  intFlag=0;
                                  break;
                              }
                          }
}
这样实现的功能:只能是无限制的一亮一灭,如何来实现让它一亮一灭10秒钟呢?苦恼中。。。请高手解答。

[解决办法]
首先,你的代码里,执行代码1后的那个Timer设置的Interval是多少?Timer设置的不会是马上执行,而是等到Interval的时间到了以后再执行的,所以就出现你说的情况

如果想实现一亮一灭的效果,你定义个标志变量(bool bIsLight)
在构造函数里设置一下初值,譬如是false
然后放一个Timer控件,设置Interval为 "10000 ",然后在它的OnTimer事件函数里写:
if(bIsLight)
{
RedGreenShow(1);//表示灯亮
bIsLight = false;
}
else
{
RedGreenShow(0); //表示灯灭


bIsLight = true;
}
[解决办法]
时间事件也是一个线程,与你执行的主线程不在同一线程!

热点排行