qreport如何打印多列?(50分)

  • 主题发起人 主题发起人 jinrui
  • 开始时间 开始时间
J

jinrui

Unregistered / Unconfirmed
GUEST, unregistred user!
我用quickrep1.Page.Columns := 3 后为什么数据是一列一列显示,比如表中只有3条数据
那报表上会在左边一列显示3个数据,如何一行一行显示呢?
 
关键在于不要在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的从左至右,从上到下的多栏报表。
 
强制结束,请自行验证!
 
后退
顶部