QuickRep1.PrinterSettings.PaperSize := ?
QuickRep1.Preview;问号代表我想设置为系统默认的打印机的纸张大小,该怎么操作,请大家帮帮忙。在此谢谢。
补充一下,我想用QuickRep1 打印帐单,系统打印机设置好了纸张大小,我想让它以系统的纸张大小进行设置 再打印。

解决方案 »

  1.   

    打印机中有1个画布canvas。打印的东西都是想输入到这个上面然后再打印的。它是以像素为单位。
    你这里设置纸张大小。要把你纸张实际大小转换以像素为单位的大小。
    然后设置就可以了。
      

  2.   

    难道QuickRep1.PrinterSettings.PaperSize := ?  这不行么?
    我只用用过delphi自带的printer。
    下面供参考procedure SetPrinterPaperWidth(Value: Integer);     //设置纸张宽度:单位--mm
    var
      Device                    : array[0..255] of char;
      Driver                    : array[0..255] of char;
      Port                      : array[0..255] of char;
      hDMode                    : THandle;
      PDMode                    : PDEVMODE;
    begin
      if Value < 76 then Value := 76;                   //自定义纸张最小宽度76mm
      if Value > 216 then Value := 216;                 //自定义纸张最大宽度216mm
      Printer.PrinterIndex := Printer.PrinterIndex;
      Printer.GetPrinter(Device, Driver, Port, hDMode);
      if hDMode <> 0 then
      begin
        PDMode := GlobalLock(hDMode);
        if PDMode <> nil then
        begin
          PDMode^.dmFields := PDMode^.dmFields or DM_PAPERSIZE or
            DM_PAPERWIDTH;
          PDMode^.dmPaperSize := DMPAPER_USER;
          PDMode^.dmPaperWidth := Value * 10;           //将毫米单位转换为0.1mm单位
          PDMode^.dmFields := PDMode^.dmFields or DMBIN_MANUAL or DM_COLOR;
          PDMode^.dmDefaultSource := DMBIN_MANUAL;
          PDMode^.dmColor := DMCOLOR_MONOCHROME;
          GlobalUnlock(hDMode);
        end;
      end;
      Printer.PrinterIndex := Printer.PrinterIndex;
    end;
      

  3.   

    用过了,还是不行的。
    我估计你可能没有时白我的意思。可能是我说得不够明白。
    我的意思是必须用QuickRep 打印。
    而且其他方式的打印都合我的要求,唯独用QuickRep 来打印就是不对,不符合我的要求。
    我觉得,应该是他的宽度不对,用的是自己的默认宽度,而不是用的系统打印机的默认宽度。