打印時改變紙張大小 在執行打印前調用以下函數: procedure SetPaperSize(X, Y: Integer); // 單位是0.1mm // A4時 Printer.Pagewidth:=1440; A5時 Printer.Pagewidth:=1049; // B5時 Printer.Pagewidth:=1290; 16K時 Printer.Pagewidth:=1035; // lq1600寬行打印機這個值寬度最大為42cm左右, 長度大約2m。 //改變devicemode結構 var Device: array[0..255] of char; Driver: array[0..255] of char; Port: array[0..255] 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 if (x = 0) or (y = 0) then begin {Set to legal} pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize; {pDMode^.dmPaperSize := DMPAPER_LEGAL; changed by wulianmin} pDMode^.dmPaperSize := DMPAPER_FANFOLD_US; end else begin {Set to custom size} pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE or DM_PAPERWIDTH or DM_PAPERLENGTH; pDMode^.dmPaperSize := DMPAPER_USER; pDMode^.dmPaperWidth := x {SomeValueInTenthsOfAMillimeter}; pDMode^.dmPaperLength := y {SomeValueInTenthsOfAMillimeter}; end; {設定紙張來源} pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL; pDMode^.dmDefaultSource := DMBIN_MANUAL;