![]() |
[QReport] Massive Probleme nach PrinterSetup
Hallo,
ich habe einen Report mit QuickReport Version 2 erstellt und möchte ihn jetzt drucken. Klappt soweit problemlos. Wenn ich jedoch den PrinterSetup-Dialog (oder auch TPrintDialog) vor dem Druck öffne, erscheint bei jedem Aufruf von QuickRep1.Print; oder QuickRep1.Preview; die Fehlermeldung (EPrinter) "Druckerindex außerhalb des zulässigen Bereiches". Passiert übrigens auch nach Aufruf des QuickReport-internen Dialogs. Kann mir jemand helfen? Dominik |
Re: [QReport] Massive Probleme nach PrinterSetup
Moin,
ich kenne Quickreport 2 nicht, arbeite mit Quickreport 3. Aber versuch mal den Drucker über Quickreport.QRPrinter.PrinterIndex einzustellen. Mit -1 wird der Standarddrucker benutzt. Also...
Delphi-Quellcode:
Das eingebaute Druckersetup in der Preview hat soviel ich weiss den Fehler, dass die ausgewählten Einstellungen beim Schliessen nicht in den QRPrinter übernommen werden. Wie du das hinbekommst, weiss ich jetzt leider auch nicht, dafür müsstest du den Quellcode von den Quickreports haben.
Quickreport.QRPrinter.PrinterIndex:=-1;
Quickreport.Print; Ohne Quellcode würde ich eine neue Previewform selber bauen und diese dann regristieren (RegisterPreviewClass). Dort könnte das setzen der Einstellungen dann gehen. Ob das allerdings auch schon unter Quickreport 2 möglich ist, weiss ich leider nicht. MfG Thorsten |
Re: [QReport] Massive Probleme nach PrinterSetup
QR hat bei uns derart Probleme mit manchen virtuellen Druckertreibern gemacht.
|
Re: [QReport] Massive Probleme nach PrinterSetup
Ich habe ein bisschen weitergesucht und habe im QR-Tutorial auf dsdt.info den Tipp gefunden, den Standard-Drucker zu ändern.
Hab ich also probiert:
Delphi-Quellcode:
Mein HP-Deskjet-Drucker hat normalerweise den Index 3. Nach Aufruf von dem PrintDialog wird der Printer-Liste (Printer.Printers) temporär ein Eintrag zugefügt, nämlich "HP Deskjet 3600 Series an USB 000003" (Index 6).
procedure SetDefaultPrinter(PrinterName: string);
var I: Integer; Device: PChar; Driver: PChar; Port: PChar; HdeviceMode: THandle; aPrinter: TPrinter; begin Printer.PrinterIndex := -1; GetMem(Device, 255); GetMem(Driver, 255); GetMem(Port, 255); aPrinter := TPrinter.Create; try for I := 0 to Printer.Printers.Count - 1 do begin if Printer.Printers[i] = PrinterName then begin aprinter.PrinterIndex := i; aPrinter.getprinter(device, driver, port, HdeviceMode); StrCat(Device, ','); StrCat(Device, Driver); StrCat(Device, Port); WriteProfileString('windows', 'device', Device); StrCopy(Device, 'windows'); SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@Device)); end; end; finally aPrinter.Free; end; FreeMem(Device, 255); FreeMem(Driver, 255); FreeMem(Port, 255); end; procedure TForm1.Button1Click(Sender: TObject); begin PrintDialog1.Execute; SetDefaultPrinter(Printer.Printers[Printer.PrinterIndex]); QuickRep1.Preview; end; Nun versucht die Procedur SetDefaultPrinter den Drucker "HP Deskjet 3600 Series an USB 000003" als Standarddrucker zu setzen. Aber keine Chance für diese Procedur existiert nur der Drucker "HP Deskjet 3600 Series"! Wie bekomme ich jetzt das "an USB 000003" weg? |
Re: [QReport] Massive Probleme nach PrinterSetup
@MarcoWarm: Super Tip, danke hilft bestimmt das Problem zu lösen.
@Kinimod8: Hast du eigentlich auch mal ausprobiert, was ich geschrieben habe? Was ist mit QRPrinter? Was bringt das Umstellen des Default-Druckers, wenn der Quickreport nicht auf den Default gestellt ist? Verwunderte Grüsse Thorsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz