如何建一个控件数组?(10分)

  • 主题发起人 主题发起人 delphiApp
  • 开始时间 开始时间
D

delphiApp

Unregistered / Unconfirmed
GUEST, unregistred user!
有时需要同时使用多个相同的控件,控件数组是最方便的,
请问怎么生成一个控件数组?是否还有其它方法?
如: Var img:array[1..100] of TImage;
在窗体上画一个image,并装入图片,image.left:=100;
然后,做 img[1]:=image;
img[1].left:=200; 这时image跑到了200处,这时窗体上只有一个图片;

再做 img[2]:=image;
img[2].left:=300; 这时img[1]到了300处,这时窗体上只有一个图片;

这说明img控件数组不起作用,我只得到了一个图片,请问这是怎么回事?
 
用TList才是最方便的。

但无论用TList还是数组,需要得到多个对象(如Image),
就必须创建该对象的不同实例,你的代码仅仅是将指针
指向了同一实例
 
你的数组定义的没错,但用的有点问题;
你可以这样使用:
假设你想将这100个Image都放到 Form1 上

for i:=1 to 100 do
begin
img:=TImage.Create(self);
img.Visible:=False;
img.Parent:=form1;
end;

当你想引用哪一个Img时,就将其对应的 Visible 值设为 True,
不用时就将其 Visible 值设为 False
例如你想将 C:/pict/pict1.bmp 用img[1]显示到窗体上,可以这样:

img[1].Picture.LoadFromFile('C:/pict/pict1.bmp');
img[1].Left:=10;
img[1].Visible:=True;

用完了这100个Image 千万别忘了释放呀!
(for i:=1 to 100 do img.Free;)
 
TList搞不懂,请给出示例代码。
创建对象实例img:=TImage.Create(self)是关键,
Delphi帮助中有方法Create(AOwner: TComponent);但没有例子,
真是难懂啊!Delphi的帮助中的例子太少了!
先在窗体上画一个image,并装入图片,然后
img[1]:=TImage.Create(self);
img[1].Parent:=form1;
img[1].Picture:=image.picture;
对img[2]同样,可以得到两个图片。

能不能用Form1.Canvas.Draw(0,0 Picture1.Graphic);呢?

感谢各位回答这个幼稚的问题,看来要找一本好书学学才行,
国内的书这么简单的东西都不讲,还是国外的书好。请大家
介绍几本给我。
 
多人接受答案了。
 
后退
顶部