问一个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;
问个问题:如何在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;
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;
希望能有帮助