一个极为“简单”但小弟我无法解释也无法解决的有关问题——

一个极为“简单”但我无法解释也无法解决的问题求助——紧急求助
定义一个极为简单的测试类,类里面有个定时器,周期执行。

但是当创建这个类的第二个实例后,前一个实例就没执行了。

测试类代码如下:

unit UnitTestClass;
interface
uses
  Windows,SysUtils,Forms,ExtCtrls;
type
  TTestClass = class(TObject)
  private
    procedure Timer1Timer(Sender: TObject);
  public
    ID:string;//传入的参数,为了输出到界面观察
    function Start():Boolean;
  end;
implementation
uses Unit2; //界面,方便输出到界面观察

var Timer1:TTimer;

procedure TTestClass.Timer1Timer(Sender: TObject);
begin
  Form2.Memo1.Lines.Add(ID);//仅仅是为了观察执行了没
end;

function TTestClass.Start():Boolean;
begin
  if Timer1 =nil then
  begin
    Timer1:=TTimer.Create(Application);
  end;
  Timer1.Interval:=1000;
  Timer1.OnTimer:=Timer1Timer;
  Timer1.Enabled:=True;
end;
end.



现在回到窗体创建类的实例:

procedure TForm2.Button14Click(Sender: TObject);
var TestClass:TTestClass;
begin
  TestClass:=TTestClass.Create;
  TestClass.ID:='我是ID1';
  TestClass.Start;
end;

观察,正常,界面输出:我是ID1

现在创建第二个实例:

procedure TForm2.Button15Click(Sender: TObject);
var TestClass:TTestClass;
begin
  TestClass:=TTestClass.Create;
  TestClass.ID:='我是ID2';
  TestClass.Start;
end;

观察,窗体上出现了:我是ID2,再也不会出现ID1了。

请教这是为什么?如何解决。
------解决思路----------------------
问题在于
var Timer1:TTimer;
变量,这里定义为单元局部变量,第一个实例和第二个实例共用Timer1,当第二个实例创建并start时,Timer1的ontime事件已经指向第二个实例的Timer1Timer(Sender: TObject);触发的当然是第二个实例的事件,第一个实例被屏蔽掉。
要解决的问题的话要将Timer1定时器定义类的私有变量。创建类时创建就可以了。
------解决思路----------------------
问题解决就好了,接分了。一个极为“简单”但小弟我无法解释也无法解决的有关问题——
------解决思路----------------------
解决就是硬道理,接分了。 一个极为“简单”但小弟我无法解释也无法解决的有关问题——