我在quickrep中编译
procedure tform27.wztj;
var
a,i,s:integer;
begin
//打印表头
tt[0] :=tqrlabel.create(form27.qrband1);
tt[0].parent :=form27.QRband1;
tt[0].Top :=10;
tt[0].font.name:='宋体';
tt[0].Font.size:=25;
tt[0].Caption :=form26.edit1.text;
tt[0].Left :=round((1511-tt[0].width)/2);
//打印表头完毕
//打印被选中的项目
a:=form26.checklistbox1.Items.Count;
for i:=0 to a-1do
begin
if form26.checklistbox1.Checked=true then
begin
case i of
// 类别
0:begin
tt[i+1] :=tqrlabel.create(form27.qrband2);
tt[i+1].parent :=form27.QRband2;
tt[i+1].Top :=15;
tt[i+1].font.name:='宋体';
tt[i+1].Font.size:=10;
tt[i+1].Caption :=form26.checklistbox1.items.strings;
qrshape2.Left :=45;
nr :=tqrdbtext.create(form27.qrband3);
nr.parent :=form27.QRband3;
nr.Top :=15;
nr.font.name:='宋体';
nr.Font.size:=10;
nr.DataField :=form26.listbox1.items.strings;
nr.DataSet :=query1;
query1.active:=true;
qrshape5.Left :=45;
if qrlabel1.caption='0' then
begin
tt[i+1].Left :=5;
qrlabel1.caption:=inttostr(45);
nr.Left :=2;
end
else
begin
tt[i+1].Left :=5+strtoint(qrlabel1.caption);
nr.Left :=2+strtoint(qrlabel1.caption);
qrlabel1.caption:=inttostr(strtoint(qrlabel1.caption)+45);
end;
end;
end;
后面很长,基本都是重复的,就不写了。我在Afterpreview中也释放空间了,但是每次调用这个程序,第一遍都好使,第二遍就出错,这是为什么?