sách gpt4 ai đã đi

delphi - 打印二维码报告时列表索引越界错误

In lại 作者:行者123 更新时间:2023-12-02 18:31:04 25 4
mua khóa gpt4 Nike

当访问 Printer.Printers 字符串列表时,将 QuickReport 报告发送到选定的打印机时,我收到诸如“列表索引超出范围”之类的错误。

exception class : EStringListError
exception message : List index out of bounds (6).

main thread ($1594c):
00479559 skdata.exe Classes 5060 TStringList.GetObject
004a258b skdata.exe Printers 581 TPrinter.GetPrinter
007ca744 skdata.exe QRPrntr 3208 TPrinterSettings.ApplySettings
007cb5bb skdata.exe QRPrntr 3995 TQRPrinter.BeginDoc
007be227 skdata.exe QuickRpt 4645 TCustomQuickRep.CreateReport
007be909 skdata.exe QuickRpt 4853 TCustomQuickRep.Print
00859bc7 skdata.exe PostLst 142 TPostSpecListReport.Print

我添加了日志记录,显示打印机列表 (Printer.Printers) 在错误发生之前已更改。我猜想如果网络打印机关闭、网络中断以及其他原因,打印机列表可能会发生变化。

遇到这种情况该如何处理?在 Delphi 中,选定的打印机由 Printer.PrinterIndex 给出,但如果打印机列表发生更改,则该索引不再有效。

我只能想到一种解决方案,即在每次打印之前显示选择打印机对话框,换句话说,不要依赖 Printer.PrinterIndex 从一个打印作业到下一个打印作业的正确性。但这对于用户来说可能会很烦人。

理想情况下,所选打印机应存储为 GUID 或按名称存储。这将使它更加可靠。

我搜索过这个论坛以及 Embarcadero 论坛,但没有发现任何提及此类问题的信息。那么也许这里有一些简单的事情我忽略了?

我使用 Delphi 2007 和 QuickReport 5。

1 Câu trả lời

如果您愿意,您可以存储打印机名称,并将其分配到 OnBeforePrint 事件处理程序或报表的构造函数中。如果您不想对其进行硬编码,请将其存储在注册表或 ini 文件中。

kiểu
TMyForm = class(TForm)
....
riêng tư
FPrinterName: string;
published
....
end;

implementation

sử dụng
Printers;

procedure TMyForm.FormCreate(Sender: TObject);
begin
// Set, or read from registry or ini file
FPrinterName := 'My LaserJet Printer';
end;

procedure TMyForm.PrintReportButtonClick(Sender: Object);
begin
// Create report and set up. Select stored printer, or set to default
// printer if none is stored
QuickRep1.PrinterSettings.PrinterIndex := Printers.IndexOf(FPrinterName);
QuickRep1.Print;
// Clean up - free report, etc.
end;

关于delphi - 打印二维码报告时列表索引越界错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11739835/

25 4 0
Bài viết được đề xuất: javascript - 如何使 Zepto 与 Browserify 兼容?
Bài viết được đề xuất: docker - 如何将容器文件挂载到我的 Docker 主机?
Bài viết được đề xuất: docker - 执行docker-compose时发生崩溃错误
Bài viết được đề xuất: javascript - 如何使Combine.js 文件异步加载
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com