在NT,2000下如何设置自定义打印纸张的大小?(100分)

  • 主题发起人 主题发起人 liukeen
  • 开始时间 开始时间
procedure TForm1.Button1Click(Sender: TObject);
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

{Set to legal}
pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
pDMode^.dmPaperSize := DMPAPER_LEGAL;
{Set to custom size}
pDMode^.dmFields := pDMode^.dmFields or
DM_PAPERSIZE or
DM_PAPERWIDTH or
DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := 100 {SomeValueInTenthsOfAMillimeter};
pDMode^.dmPaperLength := 100 {SomeValueInTenthsOfAMillimeter};
{Set the bin to use}
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL;
GlobalUnlock(hDMode);
end;

end;

Printer.PrinterIndex := Printer.PrinterIndex;
Printer.begin
Doc;
Printer.Canvas.TextOut(100,100, 'Test 1');
Printer.EndDoc;
end;
 
To only you:
你的代码在 NT 下测试过吗?我的印象里 NT 是没有自定义纸张的。
 
liukeen:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。

 
多人接受答案了。
 
后退
顶部