我想做動態生成報表,可在生成控件的循環里出錯了?(50分)

  • 主题发起人 主题发起人 bihai
  • 开始时间 开始时间
B

bihai

Unregistered / Unconfirmed
GUEST, unregistred user!
程序碼如下:
procedure TForm1.Button3Click(Sender: TObject);
type myt=array [1..100] of tqrdbtext;
var myrep:tquickrep;
mytext:myt;
i:integer;
begin
myrep:=tquickrep.Create(self);
myrep.Left:=0;
myrep.top:=0;
myrep.Width:=200;
myrep.Height:=200;
myrep.DataSet:=table1;
myrep.Bands.HasDetail:=true;
for i:=0 to table1.FieldCount-1do
//如果不加這個循環,就不會出錯.
begin
mytext:=tqrdbtext.create(self);
mytext.parent:=myrep.Bands.DetailBand;
mytext.left:=100;
mytext.DataSet:=table1;
mytext.DataField:=table1.Fields.FieldName;
end;
myrep.Preview;
end;
請教為什么會這樣,我也利成些循環語句來生成其它的控件,比如Tedit,但沒有問題!
 
table1.FieldCount把它附到一个变量里试试
 
你这儿for i:=0 to table1.FieldCount-1do
//如果不加這個循環,就不會出錯.
循环是以0开始的,但是你这儿myt=array [1..100] of tqrdbtext;
却是以1开始的,当然要错了.
 
TO goldbaby and zhangkan:
你們兩位的答案剛才是解決我問題的兩個部分,請教goldbaby,為什么我直接設為 fieldcount就是行呢?
 
多人接受答案了。
 
后退
顶部