老大,你循环创建了这四个qrlable,循环10次,就是创建了40个qrlable,而不是4个。开始你只是释放上次创建的最后四个,当然还剩下36个。举个例子:
var l: TLable;
begin
l := TLable.Create(Self); // 创建了一个
l := TLable.Create(Self); // 由创建了一个,前一个指针丢失
l.Free; //只是释放了后一个 l
end;
var l: TLable;
begin
l := TLable.Create(Self); // 创建了一个
l := TLable.Create(Self); // 由创建了一个,前一个指针丢失
l.Free; //只是释放了后一个 l
end;
QRep.Bands.HasDetail := false; //假设你动态创建的项在DetailBand上
QRep.Bands.HasDetail := true;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
I.Desire := '加不加分随你';
—————————————————————————————————
begin
qrpsf.Free;
Application.CreateForm(Tqrpsf, qrpsf);
iniprint;
qrpsf.Preview;
end
else
begin
try
Application.CreateForm(Tqrpsf, qrpsf);
iniprint;
qrpsf.Preview;
except
showmessage('创建窗口失败!');
exit;
end;
end;
////////////
以上是我自己解决的代码:)
但是我觉得不用创建这么多。只要4个就可以了。去掉For 循环。
用QUERY跟报表连接。