询问有关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;
}
[解决办法]
时间事件也是一个线程,与你执行的主线程不在同一线程!