这断代码是设置"走纸"方向的,要是哪位高人设计过这样的Delphi程序,直接贴出来给他就是了,干妈一定要转换.

解决方案 »

  1.   

    不是改写,希望有点用。
    Procedure SetPage(pagewidth,pageheight:integer);
    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.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 := pageheight);
          pDMode^.dmPaperWidth := pagewidth;
          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;
    end;