csdn怎么了??!!辛辛苦苦写的一段话没了。:(
再写一次吧。

解决方案 »

  1.   

    kao,怎么又能发上去了?我原来写的:
    -------------------------
    挺麻烦的
    写一个自己的DataSet吧。:)
    TMyDataSet=Class(TDataSet)
    ......
    我记得有一本Delphi的书上有个这样的例子,具体那一本书我忘了,好像是徐新华写的那本。
    -------------------
    (这次以防万一,先Ctrl+C)
      

  2.   

    在QuickRep的onNeedData 事件中写你要打印的内容
    注意要设置AutoStop:=FALSE;
    然后在beforeprint事件中达到某些条件调用QuickRep.stop;
      

  3.   

    在报表的ONNEEDDATA的过程,将MOREDATA:=TRUE;
    然后处理打印数据
    到你认为数据打完后,MOREDATA:=FALSE;
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        ListBox1: TListBox;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    uses
      unit2;
    {$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
      QuickReport2.i:=0;
      QuickReport2.Preview;
    end;end.unit Unit2;interfaceuses Windows, SysUtils, Messages, Classes, Graphics, Controls,
      StdCtrls, ExtCtrls, Forms, Quickrpt, QRCtrls,unit1;type
      TQuickReport2 = class(TQuickRep)
        DetailBand1: TQRBand;
        QRLabel1: TQRLabel;
        procedure QuickRepNeedData(Sender: TObject; var MoreData: Boolean);
      private  public
        i:integer;
      end;var
      QuickReport2: TQuickReport2;implementation{$R *.DFM}procedure TQuickReport2.QuickRepNeedData(Sender: TObject;
      var MoreData: Boolean);
    begin
      if  i<=form1.ListBox1.Items.Count-1 then
      begin
      MoreData:=true;  QRLabel1.Caption:=form1.ListBox1.Items[i];
      i:=i+1;
      end;
    end;end.
      

  5.   

    --->ghz2000(浩中)
    写得好!不过,MoreData应该在后面判断。应该先判断本次有无数据,以便写QRLabel1。然后在退出时给MoreData指示是否还有数据。而且你没给出MoreData为False的明显句子。  if  i<form1.ListBox1.Items.Count then
      begin
        QRLabel1.Caption := form1.ListBox1.Items[i];
        Inc( i );
      end;
      MoreData := (i<form1.ListBox1.Items.Count);