请问:如何让程序停顿一下,等待用户干预后再继续运行?(50分)

  • 主题发起人 主题发起人 snowsky
  • 开始时间 开始时间
S

snowsky

Unregistered / Unconfirmed
GUEST, unregistred user!
我记得在FoxPro里面有 wait语句,不知道Delphi里面怎么实现,我想实现的功能是:
程序运行到某一个位置后停下来,等待用户干预一下(按一下鼠标或是敲任意一个键)
就可以继续运行了,请教高手如何实现。
 
application.process...
或sleep(3000)
或线程控制(最好的解决办法)!
 
用弹出对话框比如showmessage之类的不就行了。
 
MessageBox比showmessage好……
 
Sleep肯定不成,弹出一个对话框也不太好,像许多程序的那些启动画面一样,一点鼠标
它就继续执行了。

说明白一点:我在程序开始的启动画面中放了一个MediaPlayer用来播放一段Avi,我想让不
想看的人点鼠标跳过去,可是程序到这里就直接到下一步去了,根本不等AVI播放完毕。
 
MessageDlg('程序暂停',mtInformation,[mrok],0);
 
难道除了弹出的窗口提示就没有别的办法了吗?除了Sleep!
 
做一个启动界面,启动界面不是拿各界面show就可以了,
看看下面的例子
begin
Application.Initialize;
//splash窗口
frmAbout := TfrmAbout.create(nil);
frmAbout.show;
frmAbout.update;

Application.CreateForm(Tmainform, mainform);
frmAbout.Close;//等待主窗体创建完毕才关闭,如果你不想关闭这一句注释掉,然后在aboutfrm中单击事件时,close就可以达到你的效果了
Application.Run;

end.
 
增加以下两个事件,即可实现你的要求:点击任意键或鼠标就可以关闭此窗体。
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
close;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
close;
end;
 
谢谢,换个思路就可以解决掉这个问题了,我原来一直想在一个窗口里面解决问题,多谢。
 
var curTime,sleepTime:longint;
begin
curTime:=getTickcount div 1000;
while ((getTickCount div )<(curTime+sleepTime )) do //sleepTime 表示你要暂停的时间长度;:
sleep(1);
end;
 
if NewThread1.Suspended then //若是处于挂起线程就唤醒
NewThread1.Resume
else //否则重新创建线程
NewThread1 := Thread_bp.Create(false);

if NewThread1.Suspended=false then
NewThread1.Suspend;
 
多人接受答案了。
 
后退
顶部