var
txt:array [0..9] of Tedit;procedure TForm1.Button3Click(Sender: TObject);
var
i:integer ;
begin
for i:= 0 to 9 do
begin
txt[i]:=Tedit.Create(form1); //创建
txt[i].Parent := form1; //父亲
txt[i].Left := 11;
txt[i].Top := i*20+5;
txt[i].Visible := true; //可见
end;end;procedure TForm1.Button4Click(Sender: TObject);
var
i:integer ;
begin
for i:= 0 to 9 do
begin
txt[i].free; // 释放
txt[i] := nil; //指针
end;end;
txt:array [0..9] of Tedit;procedure TForm1.Button3Click(Sender: TObject);
var
i:integer ;
begin
for i:= 0 to 9 do
begin
txt[i]:=Tedit.Create(form1); //创建
txt[i].Parent := form1; //父亲
txt[i].Left := 11;
txt[i].Top := i*20+5;
txt[i].Visible := true; //可见
end;end;procedure TForm1.Button4Click(Sender: TObject);
var
i:integer ;
begin
for i:= 0 to 9 do
begin
txt[i].free; // 释放
txt[i] := nil; //指针
end;end;
TMyType = (mtOne, mtTwo, mtThree);
var
Querys1: array [TMyType] of TQuery; //定义定长度的控件数组。可以用Querys1[mtOne]直接访问。
Querys2: array of TQuery; //不定长的。Create;
const
QueryCount = 10; //不定长的数量
var
I: Integer;
MyType: TMyType;
begin
for I := Ord(mtOne) to Ord(mtThree) do
begin
MyType := TMyType(I);
Querys1[MyType] := TQuery.Create(nil);
Querys1[MyType].Property .... = ....
end;
//Querys2 Create
Querys2 := varArrayCreate([0..QueryCount -1], varVariant];
for I := 0 to QueryCount - 1 do
begin
Querys2[I] := TQuery.Create(nil);
Querys2[I].Preperty ....= ...;
end;
end;Create完了,使用简单了,
Querys1:
Querys1[mtOne].SQL.Add
Querys1[mtTwo].SQL.Add
...
Querys2:
Querys2[0].SQL.Add(...)
....Free不用说了吧,用循环将各个Free
再它的就不是数组控件了, 一些Item(TListView), 或Node(TTreeView),or TListBox.Items.AddObjects,中都有Data: Pointer属性,可以通过这个动态生成控件,加入到其中的Item中,用的时候可以转换一下,也是一个方法。
(忽然发现Delphi的Pointer真是很好用):)