问一个delphi的打印报表问题(在不知道列的数目下动态添加QRDBText控件) 
问个问题:如何在delphi的打印报表的时候 动态添加要打印的列不知道下边的程序对不对 
我试乐怎么什么都出不来 是不是控件的位置没有设置? 如何做help  thanks
procedure TPrintPreview_department.FormActivate(Sender: TObject);
var
i:integer;
alabel:TQRLabel;
atext: TQRDBText;
begin
//添加控件 并设置数据级等属性for i:=1 to Datamodule.DataMod.PrintDepartment.FieldCount-1 do
begin
aLabel:=TQRLabel.Create(PrintPreview_department);
With aLabel do
begin
parent:=ColumnHeaderBand1;
AutoSize:=False;Height:=ColumnHeaderBand1.Height;
autostretch:=true;
alignment:=taCenter;
caption:= Datamodule.datamod.printdepartment.FieldDefs.Items[i].Name;
//showmessage(caption);
end;
aText:=TQRDBText.Create(PrintPreview_department);
With aText do
begin
parent:=DetailBand1;
AutoSize:=False;
autostretch:=true;
Height:=DetailBand1.Height;
alignment:=taCenter;
DataSet:=datamodule.DataMod.PrintDepartment;
DataField:=DataModule.datamod.printdepartment.FieldDefs.Items[i].Name;
end;end;
//quickRep1.Preview;
end;

解决方案 »

  1.   

    最多有多少知道吗 比如说20
    var
    i:integer;
    alabel:array[0..20] of Tqrlabel;
    atext:array[0..20] of  TQRDBText;
    begin
    alabel[0]:=tqrlabel.Create(PrintPreview_department.ColumnHeaderBand1 );
    alabel[0].Parent :=PrintPreview_department.ColumnHeaderBand1 ;
    alabel[0].Caption :=DataModule.datamod.printdepartment.FieldDefs.Items[0].Name;
    alabel[0].Top :=8;
    alabel[0].Left :=8;
    for i:=1 to Datamodule.DataMod.PrintDepartment.FieldCount-1 do
    begin
    alabel[i]:=tqrlabel.Create(PrintPreview_department.ColumnHeaderBand1 );
    alabel[i].Parent :=PrintPreview_department.ColumnHeaderBand1 ;
    alabel[i].Caption :=DataModule.datamod.printdepartment.FieldDefs.Items[i].Name;
    alabel[i].Top :=8;
    alabel[i].Left :=alabel[i-1].Left +alabel[i-1].Width +4 ;
    end;
    for i:=0 to Datamodule.DataMod.PrintDepartment.FieldCount-1 do
    begin
    atext[i]:=tdbtext.Create(PrintPreview_department.ColumnHeaderBand1 );
    atext[i].Parent :=PrintPreview_department.ColumnHeaderBand1 ;
    atext[i].datafield:=alabel[i].caption;
    atext[]i.top:=8;
    atetx[]i.left:=alabal.left;
    end;
    希望能有帮助