我在窗体加了两个定时器和几个菜单,定时器1为3秒,定时器2为10秒。
问题是在定时器2启动后,下拉菜单停止响应,直到退出循环。请高手指教。
定时器的函数如下:
unit Unit1;interfaceuses
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.
问题是在定时器2启动后,下拉菜单停止响应,直到退出循环。请高手指教。
定时器的函数如下:
unit Unit1;interfaceuses
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.
把Timer2的事件处理函数放在另一个线程中就可以了.
ExitSign:=true;
接着就是循环,因为是死循环,所以就没有响应了。
建议另创建线程.