在Delphi中,如何实现每隔1秒显示一条记录的前5个字段,过1秒后,再显示这条记录的第6个字段?谢谢!

老师您好!感谢您昨天解决了我的问题。非常感谢!现在还有个疑问,就是如果实现下面的效果:每隔1秒显示一条记录的5个字段(如试题、选项A、选项B、选项C、选项D),过1秒后,... 老师您好!感谢您昨天解决了我的问题。非常感谢!现在还有个疑问,就是如果实现下面的效果:
每隔1秒显示一条记录的5个字段(如试题、选项A、选项B、选项C、选项D),过1秒后,再显示一个字段(如答案);然后再过1秒显示下一条记录的5个字段,再过1秒,再显示一个字段?
比如,首先显示第1条记录的前5个字段,过1秒后,再显示这条记录的第6个字段;
再过1秒后,再显示第2条记录的前5个字段,再过1秒后,再显示这条记录的第6个字段?
十分感谢!
您昨天的代码如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled := False;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ADOQuery1.Open;
Timer1.Interval := 1000;
Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
If Not ADOQuery1.Eof Then
Begin
Caption := ADOQuery1.FieldValues['ID']; //显示
ADOQuery1.Next;
End Else
Begin
Timer1.Enabled := False;
Application.MessageBox('over', 'msg' ,64); //遍历结束
End;
end;
上述代码能实现每显示一条记录后,过1秒,再显示下一条记录。
现在想把一条记录分两次显示。具体来说,就是先显示题目、选项,再显示答案。达到记忆的效果。
麻烦您在百忙之中抽空解决。十分感谢!
展开
 我来答
HJ_3000
2011-04-24 · TA获得超过563个赞
知道小有建树答主
回答量:1264
采纳率:78%
帮助的人:57.1万
展开全部
方法很多了,在timer中做下控制即可。或者再用个timer可能更好些。

Unit Unit1;

Interface

Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ExtCtrls, Grids, DBGrids, StdCtrls, Buttons;

Type
TForm1 = Class(TForm)
Timer1: TTimer;
Timer2: TTimer;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
Memo1: TMemo;
Procedure Timer1Timer(Sender: TObject);
Procedure Timer2Timer(Sender: TObject);
Procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
End;

Var
Form1: TForm1;

Implementation

{$R *.dfm}

Procedure TForm1.FormCreate(Sender: TObject);
Begin
Timer1.Enabled := False;
Timer1.Interval := 500;
Timer2.Enabled := False;
Timer2.Interval := 5000;
Memo1.Lines.Clear;

ADOQuery1.Open;
Timer1.Enabled := True;
End;

Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
Timer1.Enabled := False;
Memo1.Lines.Clear;
If Not ADOQuery1.Eof Then
Begin
Memo1.Lines.Add(Format('问题:%s', [ADOQuery1.FieldByName('问题').AsString]));
Timer2.Enabled := True;
End
Else
Begin
//Application.MessageBox('over', 'msg', 64); //遍历结束
//循环显示
ADOQuery1.First;
Timer1.Interval := 10;
Timer1.Enabled := True;
End;
End;

Procedure TForm1.Timer2Timer(Sender: TObject);
Begin
Timer2.Enabled := False;
Memo1.Lines.Add(Format('答案:%s', [ADOQuery1.FieldByName('答案').AsString]));
ADOQuery1.Next;
Timer1.Interval := 5000;
Timer1.Enabled := True;
End;

End.
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式