1、既然都是无窗体的,就不要浪费资源了,直接从TComponent继承。
2、既然是两个类,那么假设一个叫TCreateTimer一个叫TControlTimer。那么你不妨在TCreateTimer中Published一个TControlTimer的属性,就像DBEdit的Datasource一样,象钩子一样勾住控制类。
3、每创建一个Timer,就可以检查是否有控制类勾住,如果有可以及时通知控制类。那么控制类根据需要来操作,或者杀掉这些定时器。

解决方案 »

  1.   

    To chechy:
       首先感谢你回答.   控制类是核心,被发送类钩住.感觉上有点本未倒置.   程序原意: 当发送器发送消息后.启动一定时器.当发出的消息在定时器设定范围内未返回消息.定时器消息触发控制类驱动发送器重发.
      

  2.   

    谁被谁勾住实际上无关紧要,关键是处理是否方便。总不能自己给自己找麻烦吧。
    我的想法是:
    1、由于需要接收消息,可能控件要从TWinControl继承,而不是TComponent。
    2、在控制类里面需要有OnTimer的处理函数。如果该函数被触发就需要检查消息是否返回,如果没有返回,再次重发。否则给你的触发器打上释放标记,由其他函数释放Timer。
    3、由于你可能会有多个消息同时处理,需要有一个List来包容每个Timer,给每个Timer编上ID,以方便查找(可以考虑用Pooling的概念,这样效率会高些)
      

  3.   

    直接在控制类中写OnTimer的事件不就可以了。
    抱歉,我没有QQ。
      

  4.   

    To chechy:
       
       对于嵌入OnTimer处理句柄.
       我大概试了一下,没成功.   可以用其它方法实现吗?
      

  5.   

    直接赋值不就可以了?Timer.OnTimer := YourTimerProcessProcedure;