直接动态创建一个TIMER啊,然后写上他的事件处理过程就可以了啊

解决方案 »

  1.   

    自己写一个过程就可以了。比如:
    type
      TYourClass = class
      private
        FTimer: TTimer;
        procedure YourTimer(Sender: TObject);
      public
        constructor Create;
        destructor Destroy; override;
      end;constructor TYourClass.Create;
    begin
    FTimer := TTimer.Create(nil);
    FTimer.Interval := 1000;
    FTimer.Enabled := True;
    FTimer.OnTimer := YourTimer;
    end;destructor TYourClass.Destroy;
    begin
    FTimer.Free;
    inherited;
    end;procedure TYourClass.YourTimer(Sender: TObject);
    begin
      ShowMessage('Hello, world!');
    end;
      

  2.   

    没有窗口可以创建的,只不过析构时要自己释放。因为没有Owner
      

  3.   

    那也未必,如果Owner设为Application,一样不要自己释放。
    当然我写的这个类,没有Owner,只能自己创建,自己释放。
      

  4.   

    使用windows api——settimer,killtimer,处理WM_TIMER即可。
    可以参考《Delphi深度历险〉
      

  5.   

    同意chechy(chechy),如果你有<DELPHI5开发人员指南>可以看一看640页上的组件例子
      

  6.   

    "window 的消息机制是建立在窗口之上的,如果没有窗口就不能建立消息循环,所以没有窗口就不能使用timer控件"  以上观点正确吗?    chechy(chechy)的类在form中可以调用成功,但没有form就不行了,虽然不报错但根本没有触发timer事件,及无法建立消息循环,你能在项目文件中成功调用你的类吗?即整个工程只有一个项目文件,如果能成功请帖出整个文件,谢谢,另加100分!
      

  7.   

    好了,下面的程序没有窗口,在显示5个ShowMessage后,自动退出,只有一个dpr文件,没有Form文件。你看看吧。上面的观点真的挺搞笑。program TestTimer;uses
      Forms,
      Dialogs,
      ExtCtrls;{$R *.res}
    type
      TYourClass = class
      private
        FTimer: TTimer;
        FCount: Integer;
        procedure YourTimer(Sender: TObject);
      public
        constructor Create;
        destructor Destroy; override;
      end;var
    TestBool: Boolean = False;constructor TYourClass.Create;
    begin
      FTimer := TTimer.Create(nil);
      FTimer.Interval := 1000;
      FTimer.Enabled := True;
      FTimer.OnTimer := YourTimer;
    end;destructor TYourClass.Destroy;
    begin
      FTimer.Free;
      inherited;
    end;procedure TYourClass.YourTimer(Sender: TObject);
    begin
      ShowMessage('Hello, world!');
      Inc(FCount);
      if FCount = 5 then
        TestBool := True;
    end;var
    a: TYourClass;
    begin
      Application.Initialize;
      a := TYourClass.Create;
    while not TestBool do
        Application.ProcessMessages;
      a.Free;
    end.
      

  8.   

    在TTimer.Create中
    constructor TTimer.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      FEnabled := True;
      FInterval := 1000;
      FWindowHandle := Classes.AllocateHWnd(WndProc);
    end;窗口已被TTimer自己建了