我需要使用TPrinter進行一些打印。問題是我不能,由於各種原因,使用全局對象打印機。如何使用TPrinter的本地實例
我希望能夠創建我的TPrinter實例並使用該實例進行打印。
我試着用:
MyPrinter := TPrinter.Create;
MyPrinter.BeginDoc;
但這生成AV。
任何想法使用我的TPrinter實例打印什麼需要什麼?
問候 戈蘭·納吉
我需要使用TPrinter進行一些打印。問題是我不能,由於各種原因,使用全局對象打印機。如何使用TPrinter的本地實例
我希望能夠創建我的TPrinter實例並使用該實例進行打印。
我試着用:
MyPrinter := TPrinter.Create;
MyPrinter.BeginDoc;
但這生成AV。
任何想法使用我的TPrinter實例打印什麼需要什麼?
問候 戈蘭·納吉
如果你看一下soucre打印機,該AbortProc使用全局FPrinter對象。
您可以在調用TPrinter.Create之前通過調用Printer函數解決此問題,然後它不會生成AccessViolation。 這將明顯地解決您的問題,但MyPrinter.Abort不會正常工作不正確。
告訴你爲什麼不能使用全局對象,爲其他用戶提供建議替代解決方案的可能性。
TPrinter
對象並非真正設計爲在本地創建,而是設計用於在Printers
單元中的「單例」函數Printer
。通常你會使用它。
從幫助:
使用TPrinter來管理應用程序進行任何打印。通過調用打印機單元中的打印機功能來獲取TPrinter的實例。
編輯:其實,有過一個想你可以做這樣的事情:
procedure PrintThings;
var
LMyPrinter: TPrinter;
LOldPrinter: TPrinter;
begin
LMyPrinter := TPrinter.Create;
try
LOldPrinter := SetPrinter(LMyPrinter);
try
// your printing code goes here
finally
SetPrinter(LOldPrinter);
end;
finally
LMyPrinter.Free;
end;
end;
爲什麼你不能使用全局打印機?您是否將多件東西同時打印到不同的打印機上? – 2010-04-16 13:33:22