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:= Round(FPageSetup.PageHeight*100); pDevMode^.dmPaperWidth := Round(FPageSetup.PageWidth*100); 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; //用修改DeviceMode的方法的话,只是改变你程序中的打印机设置,不会影响其他程序打印的。
我也有同样的苦恼,2000下只能打半拉子,你的打印机是不是epson lq 1600系列的
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:= Round(FPageSetup.PageHeight*100);
pDevMode^.dmPaperWidth := Round(FPageSetup.PageWidth*100);
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;
//用修改DeviceMode的方法的话,只是改变你程序中的打印机设置,不会影响其他程序打印的。
->创建新格式->表格明(custom)->定义大小,结束后存入自定义类型。
我是以管理员登录。
创建新格式-》定义大小后直接单击“保存格式”按钮了。看到你和aaaa 都有说“结束后存入自定义类型”。不知什么意思,没看到这一项。