library dll;uses  Windows, SysUtils, Classes,ExtCtrls;{$R *.res}var
timer1:TTimer;procedure Timer1Timer(Sender: TObject);
begin
  //
end;begin   timer1:=TTimer.Create(nil);
   timer1.Interval:=10000;
   timer1.OnTimer:= Timer1Timer ;{这里不能通过!}end.

解决方案 »

  1.   

    为什么要在dll里用timer呢??
      

  2.   

    还是先去搞搞清楚Windows程序的基本结构吧推荐看看Windows程序设计,初学Windows开发者一定要看看此类书
      

  3.   

    timer1.OnTimer 必须是一个对象方法的指正!
      

  4.   

    timer1.OnTimer 必须是一个对象方法的指针!
      

  5.   

    嘿嘿,有办法的program Test;uses
      Windows, SysUtils, ExtCtrls, Classes, Forms;var
      timer1:TTimer; Method:TMethod;procedure Timer1Timer(Sender: TObject);
    begin
      //
      MessageBox(0, 'aa', 'bb', 0);
    end;begin   timer1:=TTimer.Create(nil);
       timer1.Interval:=3000;
       Method.Data := nil;
       Method.Code := @Timer1Timer;
       timer1.OnTimer:= TNotifyEvent(Method);
       while True do Application.ProcessMessages;end.http://lysoft.7u7.net
      

  6.   

    我也有一种办法,你可以在动态链接库里用windows 的媒体计时器,很好实现的,而且这种方法可以达到毫秒级的。
    var   proTimeCallBack:TFNTimeCallBack;
      hTimeID:Integer;
      procedure TimeProc(uTimerID, uMessage: UINT;
      dwUser, dw1, dw2: DWORD) stdcall;//开始
    proTimeCallback:=TimeProc;
    hTimeID:=timeSetEvent(9,0,proTimeCallback,1,1);//该过程相当于ontier事件
    procedure TimeProc(uTimerID, uMessage: UINT;
    dwUser, dw1, dw2: DWORD) stdcall;
    begin
    //内容
    end;//结束
    timeKillEvent(hTimeID);
      

  7.   

    To
    ly_liuyang(Liu Yang) 偶当初不知道有TMethod;
    还用的是int64来模拟....
    i : int64
    i := Integer(Object);
    i := i SHL 32;
    i := @Proc;
    XXX.OnXXX := TNotifyEvent(i);
    汗..........
      

  8.   

    用API函数才实惠,不用窗体就可以完成
    SetTimer(设置定时期事件,要指定一个回调过程)KillTimer(撤销定时期事件