Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [QReport] Massive Probleme nach PrinterSetup (https://www.delphipraxis.net/55635-%5Bqreport%5D-massive-probleme-nach-printersetup.html)

Kinimod8 24. Okt 2005 17:34


[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

omata 24. Okt 2005 21:21

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:
Quickreport.QRPrinter.PrinterIndex:=-1;
Quickreport.Print;
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.
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

MarcoWarm 25. Okt 2005 08:53

Re: [QReport] Massive Probleme nach PrinterSetup
 
QR hat bei uns derart Probleme mit manchen virtuellen Druckertreibern gemacht.

Kinimod8 25. Okt 2005 15:35

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:
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;
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).

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?

omata 25. Okt 2005 20:13

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