2009-08-04 197 views
2

我创建了一个Delphi服务,它负责将QuckReports打印到Printer.Printers列表中包含的特定打印机。我将我的例程传递给打印机名称,并在printer.printers数组中查找以获取正确的索引。然后它会这样做:Delphi打印机。打印机不刷新

QuickRep1.PrinterSettings.PrinterIndex:= iIndex;

在帮助文件中它对printer.refresh说:“当前系统上安装的字体或打印机可能已经改变时调用刷新”。因此,在查找printer.printers数组的打印机名称之前,我先调用刷新。

在我的一个安装中,此功能无法正常工作。如果添加/删除打印机,或者其配置文件下的打印机登录,那么在服务停止并重新启动之前,列表似乎不会刷新。

此功能不适用于服务吗? 发生这种情况的安装使用“虚拟服务”。这可能与它有什么关系?

谢谢。

回答

2

我的经验和理解是打印机阵列仅在应用程序启动时更新。每次安装新打印机时,都必须重新启动应用程序以获取正确的列表。

我很好奇听到任何与此不同的经历。

编辑:从我下面的评论;我写了一个小测试程序来确认TPrinters.Refresh()确实更新了打印机列表。

+1

数组在第一次调用TPrinters.GetPrinters()方法时加载。后续调用不会刷新列表。不过,如果你需要刷新单独的打印机,TPrinter确实有一个Refresh()方法。 – 2009-08-05 00:15:21