急急急,200分大放送,如果懂的绝对简单.(200分)

  • 主题发起人 主题发起人 jupiter
  • 开始时间 开始时间
J

jupiter

Unregistered / Unconfirmed
GUEST, unregistred user!
有100个image构件,编号image4010001,image4010002,image4010003,
image4010004...image4010100,
现在要使用循环语句实现为每一个image构件添一幅图,如何解决?
for X:=4010001 to 4010100 do
imageX.picture.loadfromfile('c:/a.bmp');
 
定义一个100个元素的IMAGE构件数组,然后直接用就行了,
比如
var
IMG:array[0..99] of TImage;
i:integer;
begin
for i:=0 to 99 do
begin
IMG:=TImage.Create(self);
IMG.picture.loadfromfile('c:/a.bmp');
end;
end;
 
真有100个image不知道你的速度如何?
如果用循环你应该用控件数组,array of Timage;
 
哦,慢了1秒 ^_^
 
哥哥你咋不用控件数组呢?
Images: Array[0..99] of TImage;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
for i := 0 to 99 do
begin
Images := TImage.Create;
Images.Parent := Form1;
Images.Left := (i mod 10)*16;//每行10个
Images.Top := (i div 10)*16;//总共10行
Images.Widht := 16;
Images.Height := 16;
Images.Picture.LoadFromFile('c:/a.bmp');
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i: Integer;
begin
for i := 0 to 99 do
begin
Images.Free;
Images := nil;
end;
end;
 
如果是已经存在的IMAGE构件也是可以的,
用下列语句实现
var
i:Integer;
begin
for i:=0 to ComponentCount-1 do
begin
if (Components is TImage) then
begin
(Components as TImage).icture.loadfromfile('c:/a.bmp');
end;
end;
end;
 
数组实现
 
var
comp:TComponent;
i,j:Integer;
s:String;

for i:=1 to 100 do
begin
s:=IntToStr(i);
for j:=Length(s) to 2 do
begin
s:='0'+s;
end;
comp:=FindComponent('image4010'+s);
if (comp is TImage) then
begin
TImage(Comp).LoadFromFile('a.bmp');
end;
end;
 
我同意only you的方法,
在一个容器控件上或是在同一窗体中,
算是最好的了。
 
谢谢各位了.问题得到解决,谢谢.
 
动态数组问题嘛
 
教父 的方法最好
 
用流速度会快一点点,如下:
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
stream1:Tmemorystream;
begin
stream1:=Tmemorystream.Create;
Images[1] := TImage.Create(self);
Images[1].Parent := Form1;
Images[1].Picture.LoadFromFile('f:/1.bmp');
images[1].Picture.bitmap.savetostream(stream1);
Images[1].Left := 0;//每行10个
Images[1].Top := 0;//总共10行
Images[1].Width := 16;
Images[1].Height := 16;}

for i := 0 to 99 do
begin
Images := TImage.Create(self);
Images.Parent := Form1;
stream1.Position:=0;
images.Picture.Bitmap.LoadFromStream(stream1);
Images.Left := (i mod 10)*16;//每行10个
Images.Top := (i div 10)*16;//总共10行
Images.Width := 16;
Images.Height := 16;
end;
stream1.free;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i: Integer;
begin
for i := 0 to 99 do
begin
Images.Free;

Images := nil;
end;

end;
 
看来你是想作成象ACD哪样的的看图软件的图像浏览效果了。

你还是自己作的对象吧!
哪样会好控制的多。
 
>>来自:jupiter 时间:00-12-20 21:11:14 ID:422089
>>谢谢各位了.问题得到解决,谢谢.

解决了为什么还不结束????


 
多人接受答案了。
 
后退
顶部