这是我以前学得时候找到的资料,很管用
Procedure SetPrnPage(mLength, mWidth: Integer);
//打印机纸张设置 大小单位 0.1毫米
Var
Device: Array[0..128] Of Char;
Driver: Array[0..128] 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 := mLength;
pDMode^.dmPaperWidth := mWidth;
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;