H
haisie
Unregistered / Unconfirmed
GUEST, unregistred user!
现在要实现一个Table1中Name项两栏打印,在窗口上放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;
---- 为了保证打印或者打印预览开始时Table1指针在第一条记录,在quickReport1的 BeforePrint事件中写如下代码:
procedure TForm1.QuickRep1BeforePrint
(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
Table1.First;
end;
---- 这样程序调用QuickRep1.Preview或者QuickRep1.Print便能预览或者打印到一个关于 Name的从左至右,从上到下的多栏报表。
程序表面上运行没什么问题,但在显示时总是少了最后一行,请各位大侠指点迷津
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;
---- 为了保证打印或者打印预览开始时Table1指针在第一条记录,在quickReport1的 BeforePrint事件中写如下代码:
procedure TForm1.QuickRep1BeforePrint
(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
Table1.First;
end;
---- 这样程序调用QuickRep1.Preview或者QuickRep1.Print便能预览或者打印到一个关于 Name的从左至右,从上到下的多栏报表。
程序表面上运行没什么问题,但在显示时总是少了最后一行,请各位大侠指点迷津