在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秒,再显示下一条记录。
现在想把一条记录分两次显示。具体来说,就是先显示题目、选项,再显示答案。达到记忆的效果。
麻烦您在百忙之中抽空解决。十分感谢! 展开
每隔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秒,再显示下一条记录。
现在想把一条记录分两次显示。具体来说,就是先显示题目、选项,再显示答案。达到记忆的效果。
麻烦您在百忙之中抽空解决。十分感谢! 展开
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.
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.
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询