如何声明和使用对象数组?比如edit[1]、edit[2]之内的?(小猪倾囊求解)(250分)

  • 主题发起人 主题发起人 小猪
  • 开始时间 开始时间

小猪

Unregistered / Unconfirmed
GUEST, unregistred user!
好像c里面就可以
 
声明:
静态:
EditArr: array [1..5] of TEdit;
动态:
EditArr : array of TEdit; // 下标由0开始

使用:
先赋值, 然后随便你怎么用.
比如
for i := 1 to 5 do
EditArr := TEdit.Create(Form1);
 
最好用TStringList,
它的每一个Item都可以带一个TEdit的对象
 
我并不是说一定是用edit,我是泛指所有的控件或者说对象
另:动态声明的对象如何在form上面显示出来,比如一个edit对象?
 

EditArr.Top:=.....
EditArr.Left:=.....
EditArr.Caption:=.....


 
editarr:=tedit.create(self);
editarr.parent:=self;
 
我觉得如果显示在FORM上,应该是editarr.parent:=form 吧!?
 
对象数组的方法
var i:Integer;
begin
for i:=0 to Form1.ComponentCount-1 do
if (Form1.Components is TEdit) then
(Form1.Components as TEdit).Text:=IntToStr(i);
end;
 
对象数组的方法
var i:Integer;
begin
for i:=0 to Form1.ComponentCount-1 do
if (Form1.Components is TEdit) then
(Form1.Components as TEdit).Text:=IntToStr(i);
end;
 
小猪好像是个很热情的人哦,上次我提了一个问题,他马上给我灌了六七页的水,
不过后来发现是转贴...

不好意思,言归正传。(这可是原汁原味啊)
控件数组可以像如下声明:
ObjList: array [0..n] of TObject; // 当然声明成 TComponent 也行
因为所有控件都是 TObject 或 TComponent 的子类。
预先放置的控件的名字,或者动态创建的控件的 Create 方法返回的对象引用,都可以
看成是指针,这一点在 Delphi 中体现得不明显, 引用和指针的操作符都可以写成“.”
而 C++ Builder 中指针就必须用“->”来引用,比如:
Button1->Caption = "Ok";

对于预先放置的控件,必须逐个赋值,例如:
ObjList[0] := Edit1;
ObjList[1] := Button1;
... // 当然通过 Form 的 Components 数组也行。

对于动态创建的控件,就可以这样赋值:
ObjList[3] := TButton.Create(Self);
ObjList[4] := TEdit.Create(Self);
这和静态控件其实是一回事,不过最好在退出时给 Free 掉。

这样定义在引用的时候要注意,比如:
TEdit(ObjList[0]).Text := 'Hello';
TButton(ObjList[1]).Caption := 'Ok';
必须强制类型转换,因为 TObject 或 TComponent 没有 Text 或 Caption 属性。

最后,如果要把动态创建的控件放到 Form 上,必须显示指定它的 Parent 和
Visible,比如:
TButton(ObjList[3]).Parent := Form1;
TButton(ObjList[3]).Visible := True;

That's all;
From: BaKuBaKu
 
谢谢BaKuBaKu
我这里没法试,试过后给大家分
谢谢大家的热情
谢谢
 
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=309951
用TList类对象创建、维护多类型的控件数组




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