如题

解决方案 »

  1.   

    procedure SetRepPaperType(Const rpForm: TForm;var lvQrp:TQuickRep);
    var
      dlvWidth,dlvLength: Integer;
    begin
      dlvWidth := Trunc(Printer.PageWidth * (GetDeviceCaps(rpForm.Canvas.Handle,
        LOGPIXELSX) / GetDeviceCaps(Printer.Handle, LOGPIXELSX)));
      dlvLength := Trunc(Printer.PageHeight * (GetDeviceCaps(rpForm.Canvas.Handle,
        LOGPIXELSY) / GetDeviceCaps(Printer.Handle, LOGPIXELSY)));
      if lvQrp <> nil then
      begin
        lvQrp.Page.Orientation:=printer.Orientation;
        lvQrp.Page.papersize:=Custom;
        lvQrp.Units := pixels;
        lvQrp.Page.width:=  dlvWidth;
        lvQrp.Page.length:= dlvLength;
      end;
    end;
    可以参考以上的代码
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    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;
    begin
      Printer.PrinterIndex :=  Printer.PrinterIndex ;  Printer.GetPrinter(Device,Driver,Port,HDMode);  if HDMode <> 0 then
      begin
        PDMode := GlobalLock(HDMode);    if PDMode <> nil then
        begin
          case pDMode.dmPaperSize of
            DMPAPER_USER: showmessage('纸张类型:自定义');
            DMPAPER_A3: showmessage('纸张类型:A3');
            DMPAPER_A4: showmessage('纸张类型:A4');
            DMPAPER_A5: showmessage('纸张类型:A5');
            DMPAPER_B4: showmessage('纸张类型:B4');
            DMPAPER_B5: showmessage('纸张类型:B5');
            else showmessage('纸张类型:其它');
          end;
          GlobalUnLock(HDMode);
          Printer.PrinterIndex := Printer.PrinterIndex;
        end;  end;
    end;