delphi7+sql2000  如何实现 打印panel 中全部的内容

解决方案 »

  1.   

    复制form,截取panel其中的区域
      

  2.   

    你panel中有啥呀,如果是数据表格的话,直接报表打印吗
      

  3.   

    主要是一些combobox edit.text  memo
      

  4.   

    用PaintTo方法绘制到图片里,然后打印图片就行了!
      

  5.   

    打印panel东西 不难  BMp:TBitMap;  Bmp:=TBitMap.Create;
      Bmp.Width:=Pnl.Width;
      Bmp.Height:=Pnl.Height;
      Pnl.Paintto(Bmp.Canvas,0,0);
     可以导出panel上所有控件
      

  6.   

    能说得具体点吗,如单击 button 按扭,代码怎么写
      

  7.   

    Uses Printers;procedure TForm1.Button1Click(Sender:TOBject);
    var  
      BMp:TBitMap;
    begin
          Bmp:=TBitMap.Create;
          Bmp.Width:=Pnl.Width;
          Bmp.Height:=Pnl.Height;
          Pnl.Paintto(Bmp.Canvas,0,0);
          //打印
          Printer.BeginDoc;
          ScaleX := GetDeviceCaps(Printer.Canvas.Handle, logPixelsX) div PixelsPerInch;
          ScaleY := GetDeviceCaps(Printer.Canvas.Handle, logPixelsY) div PixelsPerInch;
          dx :=  trunc((Printer.PageWidth-Bmp.Width*Scalex)/2);
          dy :=  trunc((Printer.PageHeight-Bmp.height*Scalex)/2);
          r.Left := dx;
          r.Top := dy;
          r.Right := dx+trunc(Bmp.Width*Scalex);
          r.Bottom := dy+trunc(Bmp.Height*ScaleY);
          Printer.Canvas.StretchDraw(r,Bmp);
          Printer.EndDoc;  
    end;
      

  8.   


    提示; undeclare identifier scalex ;...  ScaleX,ScaleY,dx,dy,r:real; 后,又提示undeclare r
      

  9.   

    var
      r : TRect;
      ScaleX , ScaleY : double;
      dx,dy : integer;把这些声明了 就可以
      

  10.   

    打印出来的都是空白的, edit.text combobox.text 内容都没有的?
      

  11.   

    ..........楼主,你不如用BITBLT,根据panel的坐标把图抓下来吧,只要屏幕上能看到,就一定能打印出来。哈哈
      

  12.   


    能提供下,buttononclik 的代码吗,谢谢