关键在于不要在Treport的DataSet属性选定任何表, QuickReport便不会控制表记录的提取,否则系统会自动取出一个记录供打印,并将表中的
记录指针移到下一位,这样程序无法控制表中记录指针的移动,就无法实现多栏打印。
利用OnNeedData事件可以实现多栏打印。
在窗口上放TquickReport组件 quickReport1,并在上面放Tband组件band1,将其BandType属性改为Detail,在Tband 组件上并排放两个QRLabel
组件QRLabel1和QRLabel2,在quickReport1的OnNeedData事件中写如下代码:
procedure TForm1.QuickRep1NeedData(Sender:TObject;
var MoreData: Boolean);
var
I: integer;
begin
MoreData := True;
for I:= 1 to 2do
begin
if Table1.Eof then
Break;
case I of
1: QRLabel1.Caption := Table1.FieldByName(‘Name‘).AsString;
2: QRLabel2.Caption := Table1.FieldByName(‘Name‘).AsString;
end;
Table1.Next;
end;
if Table1.Eof then
MoreData := False;
end;
procedure TForm1.QuickRep1BeforePrint
(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
Table1.First;
end;
通过调用QuickRep1.Preview或者QuickRep1.Print便能预览或者打印到一个关于Name的从左至右,从上到下的多栏报表。