整了几天。。
用户要求要改成,能像网页的左右滚动消失效果,但为什么我的代码只能一个运行,不能几个啊?
如何改,谢了代码1,是读取数据库的图片,但为什么我读出来后,不能扫图片依次将图片依次排列出来,而且要从左到右的播放。
(图片文件是硬盘上的位置,存成路径在数据库里)2。下面的代码2,只能让一个已存在的图片,左右滚动。
但如果要数据库的多个图片依次滚动,怎么改?
{读取数据库图片}
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;
用户要求要改成,能像网页的左右滚动消失效果,但为什么我的代码只能一个运行,不能几个啊?
如何改,谢了代码1,是读取数据库的图片,但为什么我读出来后,不能扫图片依次将图片依次排列出来,而且要从左到右的播放。
(图片文件是硬盘上的位置,存成路径在数据库里)2。下面的代码2,只能让一个已存在的图片,左右滚动。
但如果要数据库的多个图片依次滚动,怎么改?
{读取数据库图片}
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;
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;
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;
i:integer;
begin
for i:=low(ArrImg) to high(ArrImg) do
begin
if (ArrImg[i].Left+ArrImg[i].Width)<0 then
ArrImg[i].Left:=ClientWidth;
ArrImg[i].Left:=ArrImg[i].Left - 1;
end;
end;
你真行
你看看这个帖子吧
http://topic.csdn.net/u/20120401/22/ec4d8f26-0da7-4134-aad0-166d2e4dea02.html?seed=1931035853&r=78127394#r_78127394