工作原因,我要设计一个标签打印程序,数据库用sqlserver,三个表:1、货品资料表;2、单头表;3、单据明细表。
功能大致如下:
1、从数据库中动态查询出数据来打印;
2、可以动态设置标签的大小、格式等;
3、可以设置每条查询结果各打印几个标签。
请教大家思路、控件或者源码。
QQ:86401372 在线等。谢谢!

解决方案 »

  1.   

    QuickReport
    FastReport
    ReportBuilder
      

  2.   

    用wsReport报表打印控件 ,他们提供全程技术支持.去www.wave12.com看看
      

  3.   

    uses Printers;var
      rc: TRect;
    begin
      with TPrintDialog.Create(nil) do
      try
        if not Execute then
          Exit;
        Printer.Copies := Copies;
      finally
        Free;
      end;
      Printer.Title := Caption;
      Printer.Orientation := poPortrait;
      Printer.BeginDoc;
      rc := GetPrintRect(srcRect);  //转换分辨率
      Printer.Canvas.StretchDraw(rc,Image1.Picture.Bitmap);
      Printer.EndDoc;
    end;你就把打印机当作一个Canvas来进行画图就可以了
      

  4.   

    补充说明:
    打印方法无非就是Canvas.TextOut,Canvas.Draw等
    需要注意的是转换打印机与Screen的分辩率,要注意控制打印机的newPage
      

  5.   

    happyct(绿叶对大树的情怀www.happy-city.com)老师:我之前有用过Delphi7、DBGrid控件、rmreport控件来写过一些程序。如果用这些控件写,我需要解决两个问题,1、在DBGrid上显示复选框;2、对每条记录设置打印数量。这两点,我都不会,也找不到人问。请问您对这些了解吗?
      

  6.   

    对于你说的这些东西,Delphi是没有现成的方法给你调用的,具体的要看你自己的需求如果你用三方控件,那就不提,否则,以DBGrid为例子:你可以获取每个Cell的具体位置,例如为:rc: TRect;      c := Printer.Canvas.Brush.Color;
          Printer.Canvas.Brush.Color := clBlack;
          Printer.Canvas.FrameRect(rc);     //画一个矩形图,其实就是你的Grid
          Printer.Canvas.Brush.Color := c;
          {InflateRect(rc, -dw, -dh);    //缩放当前打印区域(按照打印机的分辨率)}
          Printer.Canvas.TextRect(rc, rc.Left, rc.Top, AGrid.Columns[x].Title.Caption); //打印输出如果要使效果和屏幕显示一样,那你就得多下功夫了
      

  7.   

    汗,不要叫我Teacher,我是假装高手的CheckBox你可以模拟实现,也可以用其他的方法打印出来,如BitBlt,CopyRect等
      

  8.   

    套打 ,直接调用  printers 或者 QR ,FR都可以  ,
    具体调试起来我觉得 调 printer比较方便,但是FR有预览 还可以控制要不要打印。随意吧
      

  9.   

    关于报表打印,我想我可以做到,但是两位似乎没有说到点子上,我怎么解决我这两个问题呢?1、在DBGrid上显示复选框;2、对每条记录设置打印数量。
      

  10.   

    你可以获取每个Cell的具体位置,例如为:rc: TRect;打印多遍不就是了?不过,打印多遍之后,你要仔细计算纸张当前的位置
      

  11.   

    直接用数组+ stringgrid的方式自己画出来,然后再贴勾选chkbox  (我是用advstringgrid)
    打印 如果printer 预先问用户要打多少边 。如果是Fr直接让打咯。
      

  12.   

    各位大侠说的方法好象太难了,我自己已经在DBGridEH上加了checkbox(用设置是否打印)和一个空字段(用来设置打印次数),但是听说现有的控件不能直接设置要打印的记录和次数,所以,再请教大家,有没有一些控件直接就可以与报表控件对接,实现动态设置打印记录和次数?谢谢!!!