读书人

高人帮看看-怎么改这代码让数据库的

发布时间: 2012-04-10 21:03:56 作者: rapoo

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

。代码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来统一处理
[解决办法]
测试一下,看看参数对不对吧
[解决办法]
好像是滚动的效果吧

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

读书人网 >.NET

热点推荐