之前根据对客户需求分析后做了一个打印的部分,用的是Tprinter.canvas直接画上去的,没有打印预览,现在客户强烈要求怎加打印预览.大大们有没有什么好办法能教下,最好有详细点的代码,我是一筹莫展,tprintbox我也不会用,先拜一拜.

解决方案 »

  1.   

    前面可以加一个窗体上面加上一些要打印的内容及数据,然后放一个打印按钮,再用Tprinter.Canvas打印;或者干脆用TQuitReport组件进行打印。
      

  2.   

    打印的内容数量是不定的,用Create在QuickReport新建仿佛没用.
      

  3.   

    不知道你用没有用过RAVE呢,这个组件不错而且也是可视话的,你可以用用。
      

  4.   

    自己写的打印代码;动态创建报表和内容 type
       PrintContent=^TContent;                //报表信息结构
       TContent=record
        Inf     :   String;
        PosX    :   integer;
        PosY    :   integer;
     end;
      RepFrm:= TQuickRep.CreateParented(self);
      repFrm.Units:=MM;
      repFrm.Font.Name:= '宋体';
      repFrm.Font.Size:= 10;
      repFrm.Page.Length:=FPrintPageHeight;  //打印纸的高度
      repFrm.Page.Width:= FPrintPageWidth;   //打印纸的宽度
      
      repFrm.Page.BottomMargin:=0;           //左右上下边距的设置
      repFrm.Page.LeftMargin:=0;
      repFrm.Page.RightMargin:=0;
      repFrm.Page.TopMargin:=0;  repFrm.Bands.HasTitle:= true;            
      repFrm.Bands.TitleBand.Height:= FPrintPageHeight;
      repFrm.Bands.TitleBand.Width:= FPrintPageWidth;  for i:=0 to PrintList.Count-1 do             //PrintList   自己定义的打印列表
      begin
        tmQRLabel:=TQRLabel.Create(repFrm);        // PrintContent是打印的结构
        tmQRLabel.Parent:= repFrm.Bands.TitleBand;
        tmQRLabel.Caption:=PrintContent(PrintList.Items[i]).Inf;       
        tmQRLabel.AutoStretch:= true;
        tmQRLabel.WordWrap:= true;
        tmQRLabel.Left:= formCmToPix(PrintContent(PrintList.Items[i]).PosX);
        tmQRLabel.Top:= formCmToPix(PrintContent(PrintList.Items[i]).PosY);
      end;
      try
        RepFrm.Preview;
      finally
        RepFrm.Free;
      end;
      

  5.   

    推薦使用fastreport試一下,很好用的
      

  6.   

    那干脆把你的打印的代码用在TImage上,然后画出来,这样就成了预览了
      

  7.   

    不行啊,我新建qrlable都不能显示出来