怎样用程序修改系统里默认打印机的打印方向和纸张大小,修改后,右键点击该打印机并点击“属性”,可以看到确实改变了,这样才算。

解决方案 »

  1.   

    Elib2.5 里面的PrintDBGridEh可以轻松实现
      

  2.   

    楼上,正是PrintDBGridEh不能实现我才问这样的问题的。
      

  3.   

    转自超级猛料这样吧,用Delphi举个例子吧,以下程序将打印机纸张设为:114mm*190mm:
    procedure PreparePrinter;
    var
      aDevice: array[0..CCHDEVICENAME-1] of Char;
      aDriver: array[0..MAX_PATH-1] of Char;
      aPort: array[0..31] of Char;
      hDevMode: THandle;
      pDevMode: PDeviceMode;
    begin
      // 获取打印机DeviceMode的句柄
      Printer.GetPrinter(aDevice, aDriver, aPort, hDevMode);
      if hDevMode <> 0 then
      begin
        // 获取指向DeviceMode的指针
        pDevMode := GlobalLock(hDevMode);
        if pDevMode <> nil then
        begin
          pDevMode^.dmPaperSize := DMPAPER_USER;
          pDevMode^.dmPaperLength := 1140;
          pDevMode^.dmPaperWidth := 1900;
          pDevMode^.dmFields := pDevMode^.dmFields or DM_PAPERSIZE;
          pDevMode^.dmFields := pDevMode^.dmFields or DM_PAPERLENGTH;
          pDevMode^.dmFields := pDevMode^.dmFields or DM_PAPERWIDTH;
          ResetDC(Printer.Handle, pDevMode^);
          GlobalUnlock(hDevMode);
        end;
      end;
    end;
    用修改
    DeviceMode的方法的话,只是改变你程序中的打印机设置,不会影响其他程序打印的。
      

  4.   

    用我的reprint打印控件!可以实现!
    http://www.csdn.net/cnshare/soft/15/15471.shtm
      

  5.   

    qwertyasd(昊):
    要不要钱那?
      

  6.   

    bluemeteor(挂月||╭∩╮(︶_︶)╭∩╮) :  
      
      没有解决啊!