我是初学者,我想用两个button(一个启动,一个停止),一个image,一个timer来实现用button控制
timer实现连续在image里滚动显示一幅图片,现在能滚动显示但是两个button却不能正常工作,我的代码:
  procedure form1.button1click(Sender: TObject);
  begin
     timer1.Enabled := True;
  end;  procedure form1.button2click(Sender: TObject0;
  begin
    timer1.Enabled := False;
  end;  procedure form1.timer1Timer(Sender: TObject);
  var i : Integer;
  begin
    if timer1.Enabled := True then
       for i := 0 to step do
       begin
         BitBlt(Image1.Canvas.Handle, 179 - i, 62, i, 56, Bitmap.Canvas.Handle, 0, 0,   srccopy);
         Application.ProcessMessages;
         Image1.Invalidate;
         Sleep(50);
       end;
   end;
Bitmap中已放入一幅图片,在线等!谢谢

解决方案 »

  1.   

    procedure form1.timer1Timer(Sender: TObject);
      var i : Integer;
      begin
        if timer1.Enabled := True then
           for i := 0 to step do
           begin
             BitBlt(Image1.Canvas.Handle, 179 - i, 62, i, 56, Bitmap.Canvas.Handle, 0, 0,   srccopy);
             Application.ProcessMessages;
             Image1.Invalidate;
             Sleep(50);
             if not timer1.Enabled  then break; 
           end;
       end;
      

  2.   

    to anime_jin() 
      这样我试过不行啊,button1控制滚动显示,button2控制停止显示,还有别的建议吗?
    谢谢
      

  3.   

    没研究怎样让他换图哦。
    方法这样看看:
    var RunFlag:boolean; 
     procedure form1.button1click(Sender: TObject);
      begin
         RunFlag:= True;
      end;  procedure form1.button2click(Sender: TObject0;
      begin
        RunFlag:= False;
      end;  procedure form1.timer1Timer(Sender: TObject);
      var i : Integer;
      begin
        while RunFlag do
        begin
          显示一张图
          sleep(50);
          显示二张图
        end;
       end;会线程的话,用线程做
      

  4.   

    呵呵,这样还是一样,可惜我还不会用线程做 
    我单步调试时觉得应该是Application.ProcessMessages的问题,在运行时按下button1后程序跑到这里时就一直在这里等待,必须按下button2才能滚动显示,如果按下button1就又从头开始,而且在滚动显示时只有按下button1才能停下,按button2每反应。