OnTimer能不能自己关闭自己?

exjmeng 2004-12-08 05:01:34
OnTimer事件里写
//计数器累加条件满足,则
Timer1->Enabled=false;
return;

直接报错,请教!
...全文
610 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Javpp 2004-12-08
  • 打赏
  • 举报
回复
肯定可以的,我就是这么做的
jishiping 2004-12-08
  • 打赏
  • 举报
回复
当你调用ShowMessage时,ShowMessage后面的代码暂时不会执行,知道你关闭ShowMessage的消息框。但是此时,Timer还是在运行的,所以如果你没有关闭消息框的话,还是会执行OnTimer事件的,也就是仍然会弹出消息框。改成下面的代码,程序就会按照你的意愿执行了。
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
i++;
if (i > 5)
Timer1->Enabled=false;
ShowMessage(IntToStr(i));
}
yf2100 2004-12-08
  • 打赏
  • 举报
回复
showmessage之后程序在等你点啊
zlc990405 2004-12-08
  • 打赏
  • 举报
回复
请问你的i是否为全局变量,如果不是就当然运行不到if里面,最好定义为static int i = 0;这样就可以不丢失上次的计算结果了
  • 打赏
  • 举报
回复
int i=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
i++;
ShowMessage(IntToStr(i));
if(i>5)
{
Timer1->Enabled=false;
return;
}
}
  • 打赏
  • 举报
回复
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
i++;
ShowMessage(IntToStr(i));
if(i==5)
{
Timer1->Enabled=false;
return;
}
}
跟踪时只在
i++;
ShowMessage(IntToStr(i));
运行,
根本没有运行到if语句啊,为什么?????

笨 ShowMessage等着你回复 这时候系统不断地发Time消息过来 OnTime就不断地执行
3996906 2004-12-08
  • 打赏
  • 举报
回复
1、别用ShowMessage(IntToStr(i));它要你点确定了才接着动的
2、条件判断不可能错的
robbyzi 2004-12-08
  • 打赏
  • 举报
回复
OnTimer能不能自己关闭自己?

//-----------

答曰:绝对可以。

你在OnTimer的事件里其它代码写了什么,贴来看看。
hailin10 2004-12-08
  • 打赏
  • 举报
回复
如果这样
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
i++;
if(i==5)
{
Timer1->Enabled=false;
return;
}
}
在i<5的时候还是能够进入到if语句,直接执行return.没有执行Timer1->Enabled=false;
当i>=5的时候,才可以正确执行,why?????????????????????????????
hailin10 2004-12-08
  • 打赏
  • 举报
回复
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
i++;
ShowMessage(IntToStr(i));
if(i==5)
{
Timer1->Enabled=false;
return;
}
}
跟踪时只在
i++;
ShowMessage(IntToStr(i));
运行,
根本没有运行到if语句啊,为什么?????
3996906 2004-12-08
  • 打赏
  • 举报
回复
检查其他部分的代码,这样是肯定能用的
hailin10 2004-12-08
  • 打赏
  • 举报
回复
我的没有抱错,就是停不下来。晕了。
3996906 2004-12-08
  • 打赏
  • 举报
回复
偶试了return只是有警告,说有代码不能不能执行到,也不出错
3996906 2004-12-08
  • 打赏
  • 举报
回复
别return啊

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧