我在新开的线程中传入了个Timer,可我只要鼠标一动Timer的事件就不动了,这是怎么回事,该如何解决?我的源码为:
unit Main;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, enus, StdCtrls;type
TfrmMain = class(TForm)
Timer1: TTimer;
Label1: TLabel;
Button1: TButton;
Edit1: TEdit;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmMain: TfrmMain;implementation{$R *.DFM}Type
TTimerThread=class(TThread)
private
Editt:TEdit;
Timert:TTimer;
protected
ontimer:Tnotifyevent;
procedure Execute; override;
public constructor Create(const edit1:TEdit;const Timer1:TTimer);
procedure worktime(Sender:TObject); end;procedure TTimerThread.worktime(Sender:TObject);
var
i:integer;
begin
editt.Text:=datetimetostr(now);
end;constructor TTimerThread.Create(const edit1:TEdit;const Timer1:TTimer);
begin
Editt:= edit1;
Timert:= Timer1;
inherited Create(False);
end;procedure TTimerThread.Execute;
begin
FreeOnTerminate:=True;
Timert.OnTimer:=worktime;end;procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
//
end;procedure TfrmMain.Button1Click(Sender: TObject);
begin
TTimerThread.Create(Edit1,Timer1);
end;end.
unit Main;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, enus, StdCtrls;type
TfrmMain = class(TForm)
Timer1: TTimer;
Label1: TLabel;
Button1: TButton;
Edit1: TEdit;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmMain: TfrmMain;implementation{$R *.DFM}Type
TTimerThread=class(TThread)
private
Editt:TEdit;
Timert:TTimer;
protected
ontimer:Tnotifyevent;
procedure Execute; override;
public constructor Create(const edit1:TEdit;const Timer1:TTimer);
procedure worktime(Sender:TObject); end;procedure TTimerThread.worktime(Sender:TObject);
var
i:integer;
begin
editt.Text:=datetimetostr(now);
end;constructor TTimerThread.Create(const edit1:TEdit;const Timer1:TTimer);
begin
Editt:= edit1;
Timert:= Timer1;
inherited Create(False);
end;procedure TTimerThread.Execute;
begin
FreeOnTerminate:=True;
Timert.OnTimer:=worktime;end;procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
//
end;procedure TfrmMain.Button1Click(Sender: TObject);
begin
TTimerThread.Create(Edit1,Timer1);
end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货