procedure TForm1.Timer1Timer(Sender: TObject);
{$J+}
const
  K: Integer = 10;
{$J-}
begin
  if ((Image1.Left + K) > (ClientWidth - Image1.Width)) or
    ((Image1.Left + K) < 0) then K := - K;
  Image1.Left := Image1.Left + K;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
  Self.DoubleBuffered := True;
end;

解决方案 »

  1.   

    楼上的方法虽然用了TIMER,但是是没有什么闪烁的
      

  2.   

      zswang(伴水)(被黑中) k被定义为常量,而在程序中又定义k:=-k. 这样会出错的
      

  3.   

    {$J+}
    const
      K: Integer = -10; //定义静态变量
      

  4.   

    to scripting(scripting)
    你有没有这句啊form1.DoubleBuffered := True;
    有这句应该不会闪的,要不就是你机太慢了,不过我166MMX都不闪呢::)