先根据内容计算有多少行,每行高度,得到总的高度。 设置自定义纸张,高度为上面计算得到的高度。下面是改变纸张大小的函数。procedure ChgPaperSize(PSize, PLen, PWid: 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); if hDMode <> 0 then begin PDMode:= GlobalLock(hDMode); if pDMode <> nil then begin pDMode^.dmPaperSize:= PSize; if PSize = 256 then begin pDMode^.dmPaperLength:= PLen; pDMode^.dmPaperWidth:= PWid; end; pDMode^.dmFields:= pDMode^.dmFields or DM_PAPERSIZE; pDMode^.dmFields:= pDMode^.dmFields or DM_PAPERLENGTH; pDMode^.dmFields:= pDMode^.dmFields or DM_PAPERWIDTH; ResetDC(Printer.Handle, pDMode^); GlobalUnlock(hDMode); end; end; end;
设置自定义纸张,高度为上面计算得到的高度。下面是改变纸张大小的函数。procedure ChgPaperSize(PSize, PLen, PWid: 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);
if hDMode <> 0 then
begin
PDMode:= GlobalLock(hDMode);
if pDMode <> nil then
begin
pDMode^.dmPaperSize:= PSize;
if PSize = 256 then
begin
pDMode^.dmPaperLength:= PLen;
pDMode^.dmPaperWidth:= PWid;
end;
pDMode^.dmFields:= pDMode^.dmFields or DM_PAPERSIZE;
pDMode^.dmFields:= pDMode^.dmFields or DM_PAPERLENGTH;
pDMode^.dmFields:= pDMode^.dmFields or DM_PAPERWIDTH;
ResetDC(Printer.Handle, pDMode^);
GlobalUnlock(hDMode);
end;
end;
end;