简单?难? 思考盲点,多多帮忙(50分)

P

pzq1025

Unregistered / Unconfirmed
GUEST, unregistred user!
1、关于倒计时 需要2种 一是 只显示分钟和秒种 如:20:00 一种是带小时的
如:01:50:00
2、应该怎么做 我用TIMER 用记数方式 累加 然后转换成时间格式 有延时 一分种比系统
慢2秒,这样下去20分钟的比赛 大约要满1分钟左右(那位大虾有好的办法,关键是显示格式)
3、有现成的 倒记时控件吗?
补充 :我的记时器 需要7个地方同时调用。帮忙!!!!!
 
就这么多分了 大家谅解一下吧
 
很简单呀:
var TimeUse: integer;
procedure TForm1.Timer1Timer(Sender: TObject);
var
hour ,minute ,second: integer;
begin
dec(TimeUse);
hour:=timeuse div 3600;
minute:=(timeuse mod 3600) div 60;
second:=(timeuse mod 60);
labTimer.Caption := inttostr(hour)+':'+inttostr(minute)+':'+inttostr(second)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TimeUse := 600;
Timer1.Enabled := true;
end;
 
zw84611
好的 我测试 一下 就怕有延时
 
不行还是有延时 2秒钟
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
labTimer: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

TTimerThread=class(TThread)
private
TimeUse: integer;
protected
procedure Execute;
override;
Procedure ShowTimer;
end;

var
Form1: TForm1;
TimerEvent: Thandle;
implementation
{$R *.DFM}
procedure TTimerThread.ShowTimer;
var
hour ,minute ,second: integer;
begin
dec(TimeUse);
hour:=timeuse div 3600;
minute:=(timeuse mod 3600) div 60;
second:=(timeuse mod 60);
with Form1 do
begin
//dec(TimeUse);
labTimer.Caption := inttostr(hour)+':'+inttostr(minute)+':'+inttostr(second)
end;
end;

procedure TTimerThread.Execute;
begin
while TimeUse>=0 do
begin
WaitForSingleObject(TimerEvent,1000);
//可以精确到毫秒
Synchronize(ShowTimer);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
TimerEvent := CreateEvent(nil,True,False,nil) ;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
TimerThread: TTimerThread;
begin
TimerThread := TTimerThread.Create(true);
TimerThread.TimeUse := 600;
TimerThread.Resume;
end;

end.
 
zw84611,
老兄
WaitForSingleObject(TimerEvent,1000);
我怎么调整 1000 的数据 毫无效果
走的速度 太快 按你这个程序 不到10秒 就走完了 。
 
请注意,我改了一个地方://dec(TimeUse);原来有两个dec
WaitForSingleObject(TimerEvent,1000);
的意思是等一秒钟,这里无需修改。如果你等待的时间小于一秒,就有用了。
 
定时检测系统时间!
 
zw84611,
老兄 不知道你测试没有应该是10分钟吧 ? 我把下面的 1000改成100000还是很快就走完?
WaitForSingleObject(TimerEvent,1000);
不管怎么说 多谢了 在帮忙看看!
 
多谢老兄 我已经发现问题所在 是我机器太慢 哈哈!
机器够快就好了。
 

Similar threads

回复
0
查看
921
不得闲
S
回复
0
查看
788
SUNSTONE的Delphi笔记
S
S
回复
0
查看
723
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部