如何使程序暂停一段时间(30分)

  • 主题发起人 主题发起人 zzd
  • 开始时间 开始时间
Z

zzd

Unregistered / Unconfirmed
GUEST, unregistred user!
我想将一窗体隐藏,但在隐藏之前,我想让它显示一段时间,<br>也就是在显示该窗体后,使程序暂停一段时间,请问有没有<br>这样的函数,若没有请教其他的方法。
 
加一段延迟程序/空循环等。
 
用sleep(100000)
 
加一段延迟程序。<br>在调用别的
 
var numsec:smallint;<br>&nbsp; &nbsp; starttime:TTime;<br>begin<br>&nbsp; ...<br>&nbsp; starttime:=now;<br>&nbsp; numsec:=5; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//5 秒<br>&nbsp; repeat<br>&nbsp; &nbsp; application.processmessage;<br>&nbsp; until now&gt;starttime+numsec*(1/24/60/60);<br>&nbsp; ...<br>end;<br>
 
或者用timer也可以.
 
小天的程序有问题:<br>如果在5秒内改了系统时间:-)<br>sleep最省事了:-)
 
VOID Sleep<br>(<br>&nbsp; &nbsp; DWORD dwMilliseconds // sleep time in milliseconds <br>&nbsp;); <br>这是一个API,参数的单位为千分之一秒<br>&nbsp;<br><br>
 
如果作程序的封皮,可以这样做<br>Uses AboutBox<br>Var <br>lTime :TDateTime;<br>Begin<br>Application.Initialize(); <br>AboutBox=TAboutBox.Create(AboutBox); <br>AboutBox.Show; <br>AboutBox.Update; <br>lTime=GetTickCount; <br>Application.CreateForm(TMainForm,MainForm); <br>while((GetTickCount-lTime) / 1000 &lt;3) do; //如果mainform创建的时间很短<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 也可延长总计3秒的时间<br>AboutBox.Hide; <br>AboutBox.Free;<br>Application.Run; <br>end; <br>用sleep 不能保证总长3秒
 
使用sleep的话, 程序这段时间内将会停止响应, 用for循环也可以,但是机器速度不同, 暂停的时间差别很大的
 
timer1.interval:=3000;<br>&nbsp; i:=1;<br>ontimer;<br>begin<br>&nbsp;if i:&gt;=3 then<br>&nbsp; &nbsp;timer1.enabled:=false<br>&nbsp;else<br>&nbsp; i:=i+1;<br><br>end;
 
procedure Delay(MilliSeconds: dword);<br>var <br>&nbsp; Event : THandle;<br>begin <br>&nbsp; Event := CreateEvent(nil,True,False,nil);<br>&nbsp; WaitForSingleObect(Event,MilliSeconds);<br>&nbsp; CloseHandle(Event);<br>end;
 
接受答案了.
 
后退
顶部