高人帮看看-怎么改这代码,让数据库的图片,实现像网页左右滚动

高人帮看看------如何改这代码,让数据库的图片,实现像网页左右滚动?
整了几天。。
用户要求要改成,能像网页的左右滚动消失效果,但为什么我的代码只能一个运行,不能几个啊?
如何改,谢了。。

。代码1,是读取数据库的图片,但为什么我读出来后,不能扫图片依次将图片依次排列出来,而且要从左到右的播放。
(图片文件是硬盘上的位置,存成路径在数据库里)

2。下面的代码2,只能让一个已存在的图片,左右滚动。
但如果要数据库的多个图片依次滚动,怎么改?



Delphi(Pascal) code

{读取数据库图片}
procedure TForm1.LoadImg;
var
 img:Timage;
 i:Integer;
 Filename:string;
begin
    with qry1 do
    begin
        Close;
        SQL.Clear;
        SQL.Add('Select * from files where type=''图片'' order by num') ;
        open;

        for I := 1 to RecordCount do
        begin
            with TImage.Create(Self) do 
            begin
              Name :='Img0' + IntToStr(i);
              Parent := Self;   
              Filename:=VarToStr(FieldValues['Path'])+VarToStr(FieldValues['filename']);
              Picture.LoadFromFile(Filename);
              AutoSize:=True;
              Top := 30;
              //Left := TImage(Self.FindComponent('Img0'+IntToStr(i))).Left+TImage(Self.FindComponent('Img0'+IntToStr(i))).Width;//这句为什么不能实现图片左右依次排列出来
              Left:=50+110*i;
              Tag := I;
              next;
            end;
        end;
    end;
end;

{图片滚动,只能实现一个图片的滚动,如何实现多个呢?}
procedure TForm1.tmr3Timer(Sender: TObject);
begin
  if (Image1.Left  + Image1.Width) < 0 then   
    Image1.Left :=  ClientWidth;

  Image1.Left := Image1.Left - 1; }
    if (Image1.Left  + Image1.Width) < 0 then   
            Image1.Left :=  ClientWidth;

    Image1.Left := Image1.Left - 1; 
  
end;



------解决方案--------------------
可以变换位置,也可以变换图片,下面是变换图片的例子,自己应该看的懂

Delphi(Pascal) code
var
  ArrImg:array [0..4] of TImage;
  TmpImg:TImage;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled:=false;
  Timer1.Interval:=1000;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i:integer;
begin
  Timer1.Enabled:=False;
  for i:=low(ArrImg) to high(ArrImg) do
     ArrImg[i].Free;
  TmpImg.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
begin
  for i:=low(ArrImg) to high(ArrImg) do
  begin
    ArrImg[i]:=TImage.Create(self);
    with ArrImg[i] do
    begin
      Parent:=self;
      Picture.LoadFromFile('d:\A'+inttostr(i)+'.bmp');
      Top:=10;
      Width:=200;
      Height:=100;
      Left:=i*ArrImg[i].Width+10;
    end;
  end;
  TmpImg:=TImage.Create(self);
  Timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  i:integer;
begin
  TmpImg.Picture.Graphic:=ArrImg[0].Picture.Graphic;
  for i:=low(ArrImg) to high(ArrImg)-1 do
    ArrImg[i].Picture.Graphic.Assign(ArrImg[i+1].Picture.Graphic);
  ArrImg[high(ArrImg)].Picture.Graphic.Assign(TmpImg.Picture.Graphic);
end;

------解决方案--------------------
用FOR循环Components[i],Components[i] is TImage来统一处理
------解决方案--------------------
测试一下,看看参数对不对吧
------解决方案--------------------
好像是滚动的效果吧

------解决方案--------------------
(小蓝鸟贵薪)天天见你回帖,没见过你解决过问题
------解决方案--------------------
俺看不懂代码,俺明白你的意思,俺的思路是你能让一个滚动,那把所有的图片拼成一个图片,不就可以实现滚动了吗,俺不会写代码俺也不要分