1.假设一个TIMER组件的INTERVAL为十秒,然后BUTTON1按钮是激活这个TIMER组件的, 按一次,就激活TIMER组件,十秒到后就运行TIMER的内容。 如果十秒内再按一次BUTTON组件呢?  是重新开始计时, 还是,无效果?2.procedure TForm1.Timer1Timer(Sender: TObject);
begin
button2.Click;
 timer1.Enabled:=false;
button3.Click;
end;请问这样会是怎么样的效果?按BUTTON2之后,是否还会按BUTTON3?

解决方案 »

  1.   

    1.重新开始
    2.试了下,button3会执行的楼主厉害,这种问题我都没想到过
      

  2.   

    2.button3会执行,timer时间到后,会向消息队列发送WM_TIMER,当消息循环中的DispatchMessage遇到WM_TIMER 时,会进行特别处理,检查它的创建函数的第四个参数是否为NIL。如果TimeProc为NIL,此时DispatchMessage会象处理正常消息一样,调用窗口的窗口过程,把WM_TIMER 交给该窗口过程处理。如果TimeProc不为NIL,则此时DispatchMessage直接调用TimeProc。WM_TIMER 传递的消息结构如下:
    TWMTimer = record
      Msg: Cardinal;        //  消息编号
      TimerID: Longint;      //  定时器编号
      TimerProc: TFarProc;    //  回调函数
      Result: Longint;    //  返回值
    end;
      

  3.   

    TimerProc  所指向的,就是Timer1Timer(Sender: TObject),所以即便timer变为false了,也不影响当前过程中代码的执行
      

  4.   

    1、重新开始计时
    2、用ShowMessage自己看一下。