小猪好像是个很热情的人哦,上次我提了一个问题,他马上给我灌了六七页的水,
不过后来发现是转贴...
不好意思,言归正传。(这可是原汁原味啊)
控件数组可以像如下声明:
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