我想实现设置打印份数的功能,按钮中的代码如下,但在fineprint中,看打印预览,显示的还是1页。我用其他软件,以及WORD试,只要设置了打印X份,fineprint中,都显示X页。
我的代码为何不对?
假设要在程序用代码设置 各种打印信息如
1、指定 打印输出的特定打印机(不一定是默认的)
2、纸张类型(用标准纸张时)
3、纸张大小(自定义时)
4、打印方向
5、打印份数
我想请教,这个打印流程是如何的?
是不是:
1、进行各个设置
2、printer.begin
Doc;
3、写实际要打印的内容
4、printer.EndDoc;
请大家帮忙。
富翁名称: delhpi
专 家 分: 6
可用积分: 15
给14分。
procedure TForm1.BtnChkPrnClick(Sender: TObject);
begin
SetCopies(3);
printer.begin
Doc;
printer.Canvas.TextOut(100,100,'测试');
printer.EndDoc;
end;
//这个是设置打印份数的代码
procedure SetCopies(Copies: Integer);
var
ADevice, ADriver, APort: String;
ADeviceMode: THandle;
DevMode: PDeviceMode;
begin
SetLength(ADevice, 255);
SetLength(ADriver, 255);
SetLength(APort, 255);
{ If ADeviceMode is zero, a printer driver is not loaded. Therefore,
setting PrinterIndex forces the driver to load. }
if ADeviceMode = 0 then
begin
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(PChar(ADevice), PChar(ADriver), PChar(APort), ADeviceMode);
end;
if ADeviceMode <> 0 then
begin
DevMode := GlobalLock(ADeviceMode);
try
DevMode^.dmFields := DevMode^.dmFields or DM_Copies;
DevMode^.dmCopies := Copies;
finally
GlobalUnlock(ADeviceMode);
end;
end
else
raise Exception.Create('Could not set printer copies');
end;