procedure TForm1.Button1Click(Sender: TObject);
var
n_p1_x,n_p1_y,n_p2_x,n_p2_y,n_p3_x,n_p3_y:integer;
o_p1_x,o_p1_y,o_p2_x,o_p2_y,o_p3_x,o_p3_y:integer;
i:integer;
begin
   o_p1_x:=100;
   o_p1_y:=10;
   o_p2_x:=45;
   o_p2_y:=45;
   o_p3_x:=180;
   o_p3_y:=60;
   for i:=1 to 100 do
  begin
  n_p1_x:=o_p1_x+5;
  n_p1_y:=o_p1_y+5;
  n_p2_x:=o_p2_x+5;
  n_p2_y:=o_p2_y+5;
  n_p3_x:=o_p3_x+5;
  n_p3_y:=o_p3_y+5;
  canvas.pen.color:=clred;
  canvas.Polyline([point(n_p1_x,n_p1_y),point(n_p2_x,n_p2_y),point(n_p3_x,n_p3_y),point(n_p1_x,n_p1_y)]);
  sleep(100);
  canvas.pen.color:=clbtnface;
  canvas.Polyline([point(o_p1_x,o_p1_y),point(o_p2_x,o_p2_y),point(o_p3_x,o_p3_y),point(o_p1_x,o_p1_y)]);
  o_P1_x:=n_p1_x;
  o_P1_y:=n_p1_y;
  o_P2_x:=n_p2_x;
  o_P2_y:=n_p2_y;
  o_P3_x:=n_p3_x;
  o_P3_y:=n_p3_y;
  if flag=1 then
  continue
  else
  break;
  end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
  flag:=2;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
   flag:=1;
   button1.click;
end;

解决方案 »

  1.   

    for i:=1 to 100 do
    begin
      while flag=1 do
      begin
        Application.ProcessMesseges;
        Sleep(100);
      end;....
      

  2.   

    procedure TForm1.Button2Click(Sender: TObject);
    begin
      tag := 1;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
      tag := 2;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      i:integer;
    begin
      for i:=0 to 50 do
      begin
        application.ProcessMessages;
        sleep(100);    while tag = 1 do
        begin
          application.ProcessMessages;
          sleep(100);
        end;    caption := inttostr(i);
      end;
    end;
      

  3.   

    for i:=0 to 50 do
      begin
        application.ProcessMessages;
        sleep(100);
    这两句加了没有?