怎样中断程序的运行?(100分)

  • 主题发起人 主题发起人 张强
  • 开始时间 开始时间

张强

Unregistered / Unconfirmed
GUEST, unregistred user!
我设计了一个电脑抽奖程序,将身份证号全部录入到名为ID_CARD的数据库表
里,用了一个TQuery控件和一个DBGrid控件,在DBGrid中不间断的循环显示
ID_CARD的内容,程序如下:

... ...
Query.close;
Query.SQL.clear;
Query.SQL.Add('select *');
Query.SQL.Add('from ID_CARD');
Query.Prepare;
Query.open;

Query.last;
While Query.EOF. Do
begin
Query.First;
While not Query.EOF. Do
begin
Query.Next;
end
end
... ...
当按下键盘上的某一个键(例如:空格键,KEY=32)时,让上述的循环显示终
止,并将终止时的ID_CARD值找出,即为中奖者。可是,怎样实现这一过程呢?
(即:当按下键盘上的某一个键,例如:空格键,KEY=32时,怎样使循环显示终
止?)最好能够提供一段代码。谢谢!

 
KeyPressed:=false;
While not KeyPressed Do
begin
Query.First;
Application.ProcessMessages;
While not Query.EOF. Do
begin
Query.Next;
Application.ProcessMessages;
end
end

在OnKeyDown中判断if Key=32 then KeyPressed:=True;
 
几种方法可以实现你的要求:
1.按你的方法,只需加入一全局变量(boolean型),在
Query.last;
While Query.EOF Do begin
Query.First;
While not Query.EOF. Do begin
Query.Next;
if flag{your flag} then
break;
end
if flag{your flag} then
break;
end

flag初值为false
在form.keypreview中加入flag赋值语句:
flag:=True;即可
2.你还可以返回一定范围内的随机数
randomsize;
random...
 
1、入全局变量IsStop :Boolean;
2、在窗口的OnKeyPress事件中加入:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#32 then
IsStop := true;
end;
3、在窗口的OnCreate事件中加入:IsStop := false;
4、设置窗口的KeyPreview=true
5、修改你的程序
While (not Query.EOF) and (not IsStop) Do
begin
Query.Next;
end
6、run ->OK
 
哦,对了,要在循环中插入:
Application.processMessages;
 
问题已经解决,不过推荐你每次都把结果显示在某个LABEL
上,如此比较“真实”,而且算法也不要如此死板(至少看起来有点深奥)
 
多人接受答案了。
 
后退
顶部