关于倒计时的问题!

richardlong 2001-08-30 10:52:31
我正在设计一个考试系统(尝试),但是在考试过程中的倒计时问题让我一筹莫展:比如考试时间为一个小时,如何设计让它倒计时?请大家提携提携我这菜鸟!
...全文
160 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
TR@SOE 2001-08-30
  • 打赏
  • 举报
回复
你用在考试场合,似乎不用那么。。。高的精度吧?
gqxs 2001-08-30
  • 打赏
  • 举报
回复
TTimer的精度在100毫秒以上好象还可以;
richardlong 2001-08-30
  • 打赏
  • 举报
回复
据说TTimer的精度不高,有没办法提高精度?
我再加分!
TR@SOE 2001-08-30
  • 打赏
  • 举报
回复
To richardlong:

那你就让Timer停下来啊。你的程序里总得放个变量啊什么的,用来跟踪跑了多少时间了吧?
richardlong 2001-08-30
  • 打赏
  • 举报
回复
》TR@SOE
用TTimer计时,当时间回到0时,还回继续-1,-2...下去,如何stop?

》小龙
让我试试,如ok,马上加分
8080 2001-08-30
  • 打赏
  • 举报
回复
to wxcwuxuchun(清风) 

不错啊

不过一秒钟定多少啊
wxcwuxuchun 2001-08-30
  • 打赏
  • 举报
回复
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Label1->Caption = 时间//你设定的
i = 时间-now
}
//---------------------------------------------------------------------------
//定时器设定一秒钟
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
j++
Label1->Caption = 时间 - j
if j == i
showmessage(时间到)
}
gqxs 2001-08-30
  • 打赏
  • 举报
回复
加一个Label和一个Timer控件


#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TDateTime DT1,DT2;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::FormCreate(TObject *Sender)
{
DT1 = 0.5/12;
Label1->Caption = DT1.TimeString();
DT2 = DT1.Val/3600;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Timer1->Interval = 1000;
DT1 = DT1 - DT2;
Label1->Caption = DT1.TimeString();
}
//---------------------------------------------------------------------------
yuyulily 2001-08-30
  • 打赏
  • 举报
回复
哈哈,还是斑竹大人快
yuyulily 2001-08-30
  • 打赏
  • 举报
回复
为什么到计?放个TIMER设为一小时后提示,做你想做的,不行吗?
TR@SOE 2001-08-30
  • 打赏
  • 举报
回复
倒计时和计时没有什么大的差别啊,都使用TTimer来控制的啊。至于外观上的显示10/9/8/7………………可以通过程序来获得的啊。
richardlong 2001-08-30
  • 打赏
  • 举报
回复
谢谢大家
wangledong 2001-08-30
  • 打赏
  • 举报
回复
如果你嫌精度不够,可以把timer设为50毫秒执行一次,这样精确到秒是没有问题的!呵呵!
wangledong 2001-08-30
  • 打赏
  • 举报
回复
Timer的精度是50毫秒级的,完全可以满足你的要求,可以这样
TDateTime StartTime;
TDateTime AllTime;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
StartTime = Now();
AllTime = StrToTime ( "01:00:00" );
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
TDateTime FreeTime = AllTime - ( Now()-StartTime );
Edit1->Text = FreeTime.FormatString ( "hh:mm:ss" );
if ( Edit1->Text == "00:00:00" )
ShowMessage ( "Test Over!" );
}
//-------------------------------------------------------------------------
没有问题了
ITCOM 2001-08-30
  • 打赏
  • 举报
回复
考试开始,记录当前系统时间,在timer的ontimer事件里面设定你要的精度间隔,来检查
系统时间,如果到达你限制时间就提示,那么这样你的精度实际上就是timer的时间间隔了

13,874

社区成员

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

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