程序如下,my1是收到Client的消息时创建
my2是按下button时创建
my2的Timer可以触发,而my1中的不可以unit sssss;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls, ExtCtrls,
IdAntiFreezeBase, IdAntiFreeze;type
TMyClass = class
myTimer: TTimer;
public
constructor Create;
destructor Destroy; override;
procedure myTimerTimer(Sender: TObject);
end; TForm1 = class(TForm)
Button1: TButton;
TS: TIdTCPServer;
Button2: TButton;
procedure TSCHhahaCommand(ASender: TIdCommand);
procedure TSNoCommandHandler(ASender: TIdTCPServer;
const AData: string; AThread: TIdPeerThread);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
ATimer: TTimer;
public
{ Public declarations }
my1: TMyClass;
my2: TMyClass;
procedure ATimerTimer(Sender: TObject);
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.TSCHhahaCommand(ASender: TIdCommand);
begin
ShowMessage('haha');
my1 := TMyClass.Create;
ATimer := TTimer.Create(nil);
ATimer.OnTimer := ATimerTimer;
ShowMessage('haah');
end;procedure TForm1.TSNoCommandHandler(ASender: TIdTCPServer;
const AData: string; AThread: TIdPeerThread);
begin
ShowMessage(AData);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
TS.Active := True;
end;{ TMyClass }constructor TMyClass.Create;
begin
myTimer := TTimer.Create(Form1);
myTimer.Interval := 5000;
myTimer.OnTimer := myTimerTimer;
if myTimer.Enabled = True then
ShowMessage('Active');
end;destructor TMyClass.Destroy;
begin
myTimer.Free;
inherited;
end;procedure TMyClass.myTimerTimer(Sender: TObject);
begin
ShowMessage('Tiemr');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
my2 := TMyClass.Create;
end;procedure TForm1.ATimerTimer(Sender: TObject);
begin
ShowMessage('ATiemr');
end;end.
my2是按下button时创建
my2的Timer可以触发,而my1中的不可以unit sssss;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls, ExtCtrls,
IdAntiFreezeBase, IdAntiFreeze;type
TMyClass = class
myTimer: TTimer;
public
constructor Create;
destructor Destroy; override;
procedure myTimerTimer(Sender: TObject);
end; TForm1 = class(TForm)
Button1: TButton;
TS: TIdTCPServer;
Button2: TButton;
procedure TSCHhahaCommand(ASender: TIdCommand);
procedure TSNoCommandHandler(ASender: TIdTCPServer;
const AData: string; AThread: TIdPeerThread);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
ATimer: TTimer;
public
{ Public declarations }
my1: TMyClass;
my2: TMyClass;
procedure ATimerTimer(Sender: TObject);
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.TSCHhahaCommand(ASender: TIdCommand);
begin
ShowMessage('haha');
my1 := TMyClass.Create;
ATimer := TTimer.Create(nil);
ATimer.OnTimer := ATimerTimer;
ShowMessage('haah');
end;procedure TForm1.TSNoCommandHandler(ASender: TIdTCPServer;
const AData: string; AThread: TIdPeerThread);
begin
ShowMessage(AData);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
TS.Active := True;
end;{ TMyClass }constructor TMyClass.Create;
begin
myTimer := TTimer.Create(Form1);
myTimer.Interval := 5000;
myTimer.OnTimer := myTimerTimer;
if myTimer.Enabled = True then
ShowMessage('Active');
end;destructor TMyClass.Destroy;
begin
myTimer.Free;
inherited;
end;procedure TMyClass.myTimerTimer(Sender: TObject);
begin
ShowMessage('Tiemr');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
my2 := TMyClass.Create;
end;procedure TForm1.ATimerTimer(Sender: TObject);
begin
ShowMessage('ATiemr');
end;end.
解决方案 »
- 如何能实现可以把文件拖放到ShellListView中?
- 请问tb97哪有的下
- 求教:用windows.SetParent将一外部程序的某个视频预览窗口移植到自己程序的一个BUTTON上面,可这个窗口移过来后它的位置却不合适,如何
- 如何实现常量数组赋值给记录中动态数组(在线等)急!急!急!
- 在线等到下班,我的一段验证代码有问题,只能输入数字不能输入字符,请大家看一下
- 请教在三层程序中显示多个表的数据,而只更新一个表的数据的问题!!!
- 怎样判断sql数据库的存储的图片是jpeg还是bmp
- 我今天才发现一个问题有关于SQL
- 如何从.txt文件读如下格式的数据
- ado+access更新数据时提示"缺少更新或刷新的键列信息"?为什么
- 关于tstatictext的问题,比较急
- 父子窗体显示的问题??????急急急
它是工作在服务线程,不是主线程.这里面用定时器有问题.