稍稍改动即可:
procedure TTemplyForm.BitBtn2Click(Sender: TObject);
var
TabSheet1: array[1..10] of TTabSheet;
RichEdit1: array[1..10] of TRichEdit;
i: integer;
begin
for i:=1 to 10 do
begin
TabSheet1[i]:=TTabSheet.Create(Self);
TabSheet1[i].PageControl:=PageControl1;
TabSheet1[i].Caption:='TabSheet1'+IntToStr(i);
TabSheet1[i].Show;
RichEdit1[i]:=TRichEdit.Create(Self);
RichEdit1[i].Parent:=TabSheet1[i];
RichEdit1[i].Top:=10;
RichEdit1[i].Left:=10;
RichEdit1[i].Width:=225;
RichEdit1[i].Lines.Add('This is the '+IntToStr(i)+' RichEdit of '+'TabSheet1'+IntToStr(i));
RichEdit1[i].Show;
end;
end;
var TabSheets:array of TTabSheet;
rts:Array of TRichedit;
rts:=VarArrayCreate([0,10],varVariant);
tabsheets:=varArrayCreate([0,10],varVariant);
for i:=0 to 10 do
begin
TabSheets[i]:=TTabSheets[i].create(self);
...
rts[i]:=TRichEdit.Create(self);
...
rts[i].parent:=TabSheets[i];//用i表示,在动态生成的控件中,它的Name已经没有多少意义了。
var rt:trichedit;
ts:ttabsheet;
begin
rt:=TRichEdit.Create(Self);
rt.name:='richedit1';
ts:=TRichEdit.Create(Self);
ts.name:='tabsheet1';
end;
然后用self.findcomponent方法来访问它们。