需求:打印190*93mm尺寸的报表, 用QuickRep开发。
问题:在WIN98下,把打印机默认纸张设成自定义,打印及走纸都正常;但是在WIN2000或XP下面,在控制面板->打印机->创建新格式中也设置了与QuickRep相同的纸张大小,但是打印时总是以A4幅面打印? 请问有什么解决方法?附代码:
__________________________________________________________________________
var
  Device: array[0..cchDeviceName-1] of Char;
  Driver: array[0..(MAX_PATH-1)] of Char;
  Port: array[0..32]of Char;
  hDMode: THandle;
  pDMode: PDevMode;
  strSQL: String;
begin
  try
    Printer.GetPrinter(Device,Driver,Port,hDMode);
    // 获取打印机DevMode 结构的句柄值,存放在hDMode 中
    if hDMode <> 0 then
    begin
      pDMode := GlobalLock(hDMode);
      // 获取指向打印机DevMode 结构的指针
      if pDMode <> nil then
      begin
        pDMode^.dmPaperSize := 256;
        // 如果要将当前打印机纸张变为自定义 dmPaperSize 必须设置成256
        pDMode^.dmPaperLength := 1900;
        pDMode^.dmPaperWidth := 930;
        pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;
        pDMode^.dmFields := pDMode^.dmFields or DM_PAPERLENGTH;
        pDMode^.dmFields := pDMode^.dmFields or DM_PAPERWIDTH;
        //以上三条语句是对相应的dmFields 成员进行置位。
        ResetDC(Printer.Handle,pDMode^);
        // 设置打印机设备环境句柄的值
        GlobalUnlock(hDMode);
      end;
    end;
  except
    MessageBox(Self.Handle,'设置打印机错误!','系统提示',MB_OK+MB_ICONWARNING);
    Exit;
  end;
end;

解决方案 »

  1.   

    可以试着先升级一下你的QuickRep,最好是3.62以上的低版本的QuickRep问题不少
      

  2.   

    用WORD可以打印同样大小的纸张
      

  3.   

    关注啊
      我也遇见同样的问题,还有一个奇怪的问题就是我如果把报表设置为自定义的,用宽行打印机打印的时候就没有反应了,不知各位有没有好的解决办法
    --------------
    好像设计的时候选择customer,然后再选择default可能会这样
      

  4.   

    我在xp下也遇到这问题:
    1、QuickRep的page属性也设置成190*90的页面大小;
    2、pagesize设置成Custom;
    3、在设计过程中预览打印无误;
    4、在程序独立执行后永远都是按A4纸打印,并且还夸张地拉伸了字体;
    那位大侠有解决方法,望告知?
    (我那版本是4.03,delphi7.0下)
      

  5.   

    4.03可能有问题,你可以使用pdf打印出来看看,具体是多大?这个大小就是打印机打印时的实际大小.
    还有一个就是即使pdf打印的时候是需要的大小,但是到打印机还是有问题,或者不上纸,或者 窜纸,那可能是打印的问题,
      

  6.   


    windows2000下Delphi 报表的兼容性问题所造成 . 后来才发现把现在的印表机器安装成Epson LQ-2500(C), 实际打印机为Epson LQ-1600KIII+ 然后按如下更改打印机的设置后就不会跳纸:
    1>.在新增打印机Epson LQ-2500(C)后, 自定义纸张的大小,步骤如下:
         a.开始-->设定-->打印机  
         b.档案-->服务器内容
         c.格式-->建立新格式-->在"格式描述"中输入格式名称(exmple:barpacking)
         d.纸张大小:宽度:21.16;  高度:13.97   单位: 公制
         e.存储格式
    2>.设置打印机:
        a.内容-->一般-->打印喜好设定-->纸张格式-->进阶-->在纸张大小处选择上述建立的格
          式(exmple:barpacking)-->确定
           -->纸张/品质-->色彩:选黑色-->进阶-->在纸张大小处选择上述建立的格式
           (exmple:barpacking)-->确定
        b.内容-->进阶-->打印默认值-->纸张格式-->进阶-->在纸张大小处选择上述建立的格式
          (exmple:barpacking)-->确定
          -->纸张/品质-->色彩:选黑色-->进阶-->在纸张大小处选择上述建立的格式
          (exmple:barpacking)-->确定
        c.内容-->装置设定值-->纸匣设定下各分项-->全部选"无法使用"
    3>.QuickReport中设置为Default; Page Size:211.67*139.70
       注意必须是Default, 而不要是Custom.
    以上结论是本人大概浪费了差不多半箱连续报表打印纸和一个礼拜时间后得出的心得.百试百灵,请务必按照以上步骤执行,如还有问题,与我联系.