在edit的keypress事件里 var i,num:integer ; if key = 13 then begin try num := strtoint(edit.text) ; except exit ; end ; if num >0 then begin for i:=0 to num-1 do begin with tedit.create(self) do begin left := edit.left + edit.width +10 ; top := edit.top+30*i; parent := self ; end with tedit.create(self) do begin left := edit.left + edit.width +140 ; top := edit.top+30*i; parent := self ; end with tDatetimepacker.create(self) do begin left := edit.left + edit.width +250 ; top := edit.top+30*i; parent := self ; end end end ; end ;
type MyCompRecord=record Edit1:tedit; Edit2:tedit; Datetimepacker1:TDatetimepacker; End; . . . const Edit1Left=20; Edit1width=80; Edit2Left=140; Edit2width=80; DatetimepackerLeft=260; DatetimepackerWidth=100; ArrayTop=20; LineSpace=20;var MyRecord:array of MyCompRecord; . . . begin Setlength(MyRecord,num); Form i:=1 to num do with MyRecord do begin Edit1:=TEdit.Create(nil); Edit1.top:=ArrayTop+(num-1)*LineSpace; Edit1.Left:=Edit1Left; Edit1.width:=Edit1width; Edit1.parent:= Edit2:=TEdit.Create(nil); Edit2.top:=ArrayTop+(num-1)*LineSpace; Edit2.Left:=Edit2Left; Edit2.width:=Edit2width; Edit2.parent:= Datetimepacker1:=TDatetimepacker.Create(nil); Datetimepacker1.top:=ArrayTop+(num-1)*LineSpace; Datetimepacker1.Left:=Datetimepacker1Left; Datetimepacker1.width:=Datetimepacker1width; Datetimepacker1.parent:=
end;可根据数组下标访问组件,灵活性高,如果你不想访问组件另当别论
begin Setlength(MyRecord,num); Form i:=1 to num do with MyRecord do 应改成 with MyRecord[i] do begin
var i,num:integer ;
if key = 13 then
begin
try
num := strtoint(edit.text) ;
except
exit ;
end ;
if num >0 then
begin
for i:=0 to num-1 do
begin
with tedit.create(self) do
begin
left := edit.left + edit.width +10 ;
top := edit.top+30*i;
parent := self ;
end
with tedit.create(self) do
begin
left := edit.left + edit.width +140 ;
top := edit.top+30*i;
parent := self ;
end
with tDatetimepacker.create(self) do
begin
left := edit.left + edit.width +250 ;
top := edit.top+30*i;
parent := self ;
end
end
end ;
end ;
MyCompRecord=record
Edit1:tedit;
Edit2:tedit;
Datetimepacker1:TDatetimepacker;
End;
.
.
.
const
Edit1Left=20;
Edit1width=80;
Edit2Left=140;
Edit2width=80;
DatetimepackerLeft=260;
DatetimepackerWidth=100;
ArrayTop=20;
LineSpace=20;var
MyRecord:array of MyCompRecord;
.
.
.
begin
Setlength(MyRecord,num);
Form i:=1 to num do
with MyRecord do
begin
Edit1:=TEdit.Create(nil);
Edit1.top:=ArrayTop+(num-1)*LineSpace;
Edit1.Left:=Edit1Left;
Edit1.width:=Edit1width;
Edit1.parent:=
Edit2:=TEdit.Create(nil);
Edit2.top:=ArrayTop+(num-1)*LineSpace;
Edit2.Left:=Edit2Left;
Edit2.width:=Edit2width;
Edit2.parent:=
Datetimepacker1:=TDatetimepacker.Create(nil);
Datetimepacker1.top:=ArrayTop+(num-1)*LineSpace;
Datetimepacker1.Left:=Datetimepacker1Left;
Datetimepacker1.width:=Datetimepacker1width;
Datetimepacker1.parent:=
end;可根据数组下标访问组件,灵活性高,如果你不想访问组件另当别论
Setlength(MyRecord,num);
Form i:=1 to num do
with MyRecord do 应改成 with MyRecord[i] do
begin
Form i:=0 to num-1 do