怎样使用Timer?帮帮忙(50分)

  • 主题发起人 主题发起人 moodboy
  • 开始时间 开始时间
M

moodboy

Unregistered / Unconfirmed
GUEST, unregistred user!
有下面过程:
procedure pro1;
begin
……
a1;
timer.enabled:=true;
a2;
……
end;
怎样使程序执行了a1则转到执行timer事件,再回到a2来?
 
如下:

a1;
timer1timer(nil);
a2;
 
to eyes4:
你的这个方法没有起到定时作用,只是相当于调用过程啊
 
你的意思是不是执行了a1后,等待timer执行,然后再执行a2?

那你把a2的代码放到timer里去不就得了.
 
to eyes4:
不行啊,我的a1和a2为查询中的嵌套,执行到a1后必须延时一断时间才能执行timer事件
(数据的接收问题),还有办法吗?
 
中间加一个sleep(停止毫秒数);
 
加入循环sleep代码吧
 
对加一个SLEEP
 
多谢上面各位,sleep对我来说没有用,因为它会使我接收数据的过程同时停止。
 
你用两个timer控件
procedure TForm1.Timer1Timer(Sender: TObject);
begin
form1.Label1.Caption:='你好';
timer2.enabled:=true;
timer1.enabled:=false;

end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
form1.Label1.Caption:='hellow';
timer1.enabled:=true;
timer2.enabled:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.Timer1.Enabled:=true;
form1.Timer2.Enabled:=false;
end;

end.
试试吧,我编译通过了,把label换成你的事件就行了
 
这样延时:
for i:=1 to 10 do
begin
sleep(100);
application.ProcessMessages;
end;
 
不用sleep,就这样吧
begin
A1;
TimerEnd:=False;
Timer1.Enabled:=True;
while not TimeEnd do // 等定时器结束
Application.ProcessMessages;
A2;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
// 要做的工作
TimerEnd:=True;
end;
 
用线程来做,基本上可以解决你的问题
 
对,用线程做比较好,虽然麻烦点,但一般来说牵涉到通讯的问题最好还是用一个通讯线程
 
不放在同一段代码里。
 
多谢各位。
 
多人接受答案了。
 
后退
顶部