动态生成TQRLabel,TQRDBText在打印预览的时候可以看到吗??????(100分)

  • 主题发起人 主题发起人 woodpile
  • 开始时间 开始时间
W

woodpile

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么在预览的时候看不见呀??
procedure TForm2.ShowReport();
//动态创建控件,排列控件
var
i:integer;
begin
iCount:=dm.adods.FieldCount;
SetLength(TextArray,iCount);
SetLength(LabelArray,iCount);
for i:=0 to iCount-1do
begin
LabelArray:=TQRLabel.Create(self);
LabelArray.Parent:= QRBandColumn;
LabelArray.Visible:=true;
LabelArray.Show;
LabelArray.Color:=clred;
TextArray:=TQRDBText.Create(self);
TextArray.Parent:=QRBandDetail;
TextArray.Visible:=true;
end;

with labelArray[0]do
begin
AutoSize:=False;
AutoStretch:=True;
Left :=20 ;
Top := 0;
Width:=80;
Height:=QRBandColumn.Height;
Alignment:=taCenter;
Caption:= ListBoxFieldName.Items.Strings[0];
end;
for i:=1 to icount-1do
begin
LabelArray.AutoSize:=False;
LabelArray.AutoStretch:=True;
LabelArray.Left :=LabelArray[i-1].Left+LabelArray[i-1].Width ;
LabelArray.Top := 0;
LabelArray.Width:=80;
LabelArray.Height:=QRBandColumn.Height;
LabelArray.Alignment:=taCenter;
LabelArray.Caption:= ListBoxFieldName.Items.Strings[i-1];
end;
QuickRep1.Preview;
end;
 
用组好象不行,我以前也这样试过.
下面是我程序里的一段代码,一定行.
for i := 2 to DMForm.CountTbl2.FieldCount - 3do
//标题栏
begin
aQRLabel := TQRLabel.Create(FormCount2);
aQRLabel.Parent := ColBand;
with aQRLabeldo
begin
Name := 'TLB' + DMForm.CountTbl2.Fields.FieldName;
Caption := Copy(DBGridEH1.Columns[C + 1].Title.Caption, 5, Length(DBGridEH1.Columns[C + 1].Title.Caption) - 4);
Size.Left := L + (c - 1) * step + step / 2 - Size.Width / 2;
Alignment := taCenter;
Top := T + 14;
ONPrint := LBPrint;
end;
.
.
.
.
.
end;
 
SetLength(TextArray,iCount);
SetLength(LabelArray,iCount);
你这是在设置数组嘛,那里是在设置控件啊,呵呵
 
DELPHI不同VB,这点得弄清楚
 
/to liangdewei,
**************************************
SetLength(TextArray,iCount);
SetLength(LabelArray,iCount);
你这是在设置数组嘛,那里是在设置控件啊,呵呵
***/
下面我不是create了吗?
LabelArray:=TQRLabel.Create(self);
是一个控件数组
///////////
to netatom,
那怎么吧动态产生的空间释放那?????
 
问题可能出在没有设定rep.datesource
加上QuickRep1.DataSet:=dm.ADODS;就好了
 
等你再次CREATE的时候要把原先CREATE的qrlabel, DISABLE和HIDE掉。。不然会重复,,
 
空间释放:
for i := 2 to DMForm.CountTbl2.FieldCount - 3do
begin
if DMForm.CountTbl2.Fields.Visible then
begin
Name := 'LB' + DMForm.CountTbl2.Fields.FieldName;
aQRLabel := TQRLabel(FormCount2.FindComponent(Name));
if aQRLabel <> nil then
begin
aQRLabel.Free;
aQRLabel := nil;
end;
end;
 
接受答案了.
 
后退
顶部