我的数据是用listview 显示的 ,如何把listview里的数据用Qreport 打印出来?
有的朋友说  建临时表 ,把listview的数据 放到表里 ,再把表赋给Qreport 的dataset  ,表能赋给dataset  类型吗? 很急 谢谢!!1

解决方案 »

  1.   

    其实QuickRep不一定要绑定数据库才能打印的,你可以不设置QuickRep的DataSet属性,而通过他的OnNeedData事件实现对DetailBand上内容的填写,MoreData参数用来控制DetailBand是否打印完毕,true表示还有后续Detail需要打印,false表示Detail已经打印完毕了
      

  2.   

    你把它的内容复制到QRDBText,再用QRDBText打印就行了
      

  3.   

    OnNeedData 中是可以加数据 ,但多行怎么加阿  ,每行的表格  又怎么定位置?  谢谢
      

  4.   

    我用过动态生成QRlabel打印过。。
      

  5.   

    to xiamang 怎么用动态QRlabel   位置怎么定阿  能给些建议吗? 
    谢谢!
      

  6.   

    可以动态的画线再加数据,代码如下:
    var
      frmqcarcoderep: Tfrmqcarcoderep;
      qrlabel:array of array of tqrlabel;
      qrshape:array of array of tqrshape;
      fieldlen:integer;implementation{$R *.dfm}
    uses
    dayrep,mainform, qcarcode;...
    //////////////////////////////////////////////////////////////////////画线
     procedure Tfrmqcarcoderep.FormCreate(Sender: TObject);
    fieldlen:=frmqcarcode.Query2.FieldCount;
    setlength(qrlabel,fieldlen,9);
    setlength(qrshape,fieldlen,9);
    if  (2*fieldlen*24+20 )<902 then
    frmqcarcoderep.DetailBand1.Height :=fieldlen*24+20;
    for i:=0 to fieldlen-1 do
    for j:=0 to 8 do
    begin
    qrshape[i,j]:=tqrshape.create(quickrep1);
     with qrshape[i,j] do
          begin
          parent:=detailband1;
          left:=j*79;
          top:=i*24;
          height:=25;
          width:=80;
          enabled:=true;
          visible:=true;
          end;
          qrlabel[i,j]:=tqrlabel.create(quickrep1);
     with qrlabel[i,j] do
          begin
          parent:=detailband1;
          left:=j*79+2;
          top:=i*24+6;
          height:=16;
          width:=76;
          alignment:=tacenter;
          autosize:=false;
          caption:='';
          enabled:=true;
          visible:=true;
          end;
     end;end;//////////////////////////////////////////////////////////////////////加数据procedure Tfrmqcarcoderep.QuickRep1NeedData(Sender: TObject;
      var MoreData: Boolean);
    var i,j:integer;
    begin
     with frmqcarcode.Query2 do
          begin
           if EOF then
               begin
               moredata:=false;
               exit;
               end;
            moredata:=true;
            for i:=0 to fieldlen-1 do
            for j:=0 to 8          do
            qrlabel[i,j].caption:='';
            for i:=0 to fieldlen-1 do
            qrlabel[i,0].caption:=fields[i].fieldname;
            for j:=1 to 8 do
            begin
                 if eof then break;
                 for i:=0 to fieldlen-1 do
                    begin
                    qrlabel[i,j].caption:=fieldbyname(fields[i].fieldname).asstring;
                    end;
                    next;
             end;
        end;
    end;
    希望对你有点用处!