你试打开指定的打印机,如果可以打开,说明已经就绪。
以下程序你可以参考参考
var
FDevice:array [0..255] of char;
FDriver:array [0..255] of char;
FPort:array [0..255] of char;
FDeviceMode:THandle;
PaperSize:Word;
procedure TForm1.SetPaperSize;
var
Dev:PDevMode;
Hand:THandle;
begin
Printer.GetPrinter(FDevice,FDriver,FPort,FDeviceMode);
if FDeviceMode<>0 then
begin
Dev:=PDEVMODE(Ptr(FDeviceMode)^);
if Dev <>nil then
begin
OpenPrinter(FDevice,Hand,nil);
dev^.dmFields:=dm_PaperSize or dm_Orientation or dm_PaperLength or dm_PaperWidth;
dev^.dmPaperSize:=PaperSize;
dev^.dmOrientation:=1;
if PaperSize=DMPAPER_USER then
begin
Dev^.dmPaperwidth:=(原来的宽度);
Dev^.dmPaperLength:=(你所要打印报表的高度,你可以通过QuickReport报表所占用的行数r*行高h,作为Dev^.dmPaperLength的参数。打印时,当纸张的高度到达你所设置的参数时,即停止打印);
end;
DocumentProperties(0,Hand,FDevice,Dev^,Dev^,DM_Modify or Dm_COPY or DM_UPDATE);
ClosePrinter(hand);
end;
end;
end;