高人帮看看-怎么改这代码,让数据库的图片,实现像网页左右滚动
高人帮看看------如何改这代码,让数据库的图片,实现像网页左右滚动?
整了几天。。
用户要求要改成,能像网页的左右滚动消失效果,但为什么我的代码只能一个运行,不能几个啊?
如何改,谢了。。
。代码1,是读取数据库的图片,但为什么我读出来后,不能扫图片依次将图片依次排列出来,而且要从左到右的播放。
(图片文件是硬盘上的位置,存成路径在数据库里)
2。下面的代码2,只能让一个已存在的图片,左右滚动。
但如果要数据库的多个图片依次滚动,怎么改?
------解决方案--------------------
可以变换位置,也可以变换图片,下面是变换图片的例子,自己应该看的懂
整了几天。。
用户要求要改成,能像网页的左右滚动消失效果,但为什么我的代码只能一个运行,不能几个啊?
如何改,谢了。。
。代码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来统一处理
------解决方案--------------------
测试一下,看看参数对不对吧
------解决方案--------------------
好像是滚动的效果吧
------解决方案--------------------
(小蓝鸟贵薪)天天见你回帖,没见过你解决过问题
------解决方案--------------------
俺看不懂代码,俺明白你的意思,俺的思路是你能让一个滚动,那把所有的图片拼成一个图片,不就可以实现滚动了吗,俺不会写代码俺也不要分