定时器与循环的问题

simonysj 2003-10-17 01:10:07
我在窗体加了两个定时器和几个菜单,定时器1为3秒,定时器2为10秒。
问题是在定时器2启动后,下拉菜单停止响应,直到退出循环。请高手指教。
定时器的函数如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Menus;

type
TForm1 = class(TForm)
Timer1: TTimer;
MainMenu1: TMainMenu;
wewqe1: TMenuItem;
ddasdad1: TMenuItem;
asdadasd1: TMenuItem;
dasdasd1: TMenuItem;
dsadasd1: TMenuItem;
asdasdasd1: TMenuItem;
sadasdas1: TMenuItem;
asdasd1: TMenuItem;
asdfasdasd1: TMenuItem;
asfefdsf1: TMenuItem;
fdsfdsf1: TMenuItem;
fdsafasdf1: TMenuItem;
asdfasdfasdfgfa1: TMenuItem;
sdfdasfdasfas1: TMenuItem;
Timer2: TTimer;

procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);

private

{ Private declarations }
public

{ Public declarations }
end;

var
Form1: TForm1;
ExitSign:boolean;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
ExitSign:=false;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
ExitSign:=true;
self.Timer1.Enabled:=true;
while(ExitSign) do
begin
application.ProcessMessages;
end;
Timer1.Enabled:=false;;
end;

end.
...全文
62 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Maple119 2003-10-17
  • 打赏
  • 举报
回复
TTimer的OnTimer事件执行的代码是与主程序同一个线程的.所以在OnTimer事件里不易处理大量的数据.
建议另创建线程.
simonysj 2003-10-17
  • 打赏
  • 举报
回复
但是按钮和别的控键都响应。application.ProcessMessages;可以响应控键,可对popmenu却不响应?

lemon_wei 2003-10-17
  • 打赏
  • 举报
回复
Timer2的事件处理函数中开始有
ExitSign:=true;
接着就是循环,因为是死循环,所以就没有响应了。
pankun 2003-10-17
  • 打赏
  • 举报
回复
你这是个无限循环,当然主窗体没法响应.
把Timer2的事件处理函数放在另一个线程中就可以了.

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧