Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi PrinterIndex gesetzt... trotzdem Standarddrucker (https://www.delphipraxis.net/161285-printerindex-gesetzt-trotzdem-standarddrucker.html)

haentschman 27. Jun 2011 07:22

Delphi-Version: XE

PrinterIndex gesetzt... trotzdem Standarddrucker
 
Moin... :hi:

Eher durch Zufall bin ich auf ein Problem gestoßen, weil ich mir nicht vorstellen konnte daß da etwas nicht funktionieren sollte.
Delphi-Quellcode:
procedure TdBK_Print.Print(Report: TfrxReport; Design, Dialog: Boolean);
begin
  if Report.PrepareReport(True) then
  begin
    Printer.PrinterIndex:= FPrinterID;
    Report.PrintOptions.ShowDialog:= Dialog;
    if Design then
      Report.DesignReport(True)
    else
      Report.Print;
  end;
end;
FPrinterID ist richtig gesetzt entsprechend einer Auswahl aus dem Drucker Dialog in den Einstellungen. Trotzdem kommen alle Ausdrucke auf dem Standarddrucker an :wiejetzt:

Was unter 2007 noch problemlos funktionierte geht unter XE nicht mehr ? Wo ist der Trick ?

Danke für Tipps... :hi:

Satty67 27. Jun 2011 08:09

AW: PrinterIndex gesetzt... trotzdem Standarddrucker
 
Ich kenne mich nicht im Detail mit dem Reportdesigner aus, aber evtl. setzt ein
Delphi-Quellcode:
Report.PrintOptions.ShowDialog:= Dialog;
.
auch den Drucker zurück, wenn Dialog = False.

Ich würde mal versuchen, bei Dialog = False den PrinterIndex nochmal nach setzen der Property ShowDialog zuzuweisen.

haentschman 27. Jun 2011 08:31

AW: PrinterIndex gesetzt... trotzdem Standarddrucker
 
Hallo Satty67...

ein Versuch war es Wert... Ich habe die 2 Zeilen auch vertauscht. Leider ist kein positives Ergebnis zu verzeichnen. :(
Zum Zeitpunkt
Delphi-Quellcode:
Report.Print
ist der Inhalt von Printer.PrinterIndex so wie er sein soll :gruebel:

Danke

pHL 27. Jun 2011 08:36

AW: PrinterIndex gesetzt... trotzdem Standarddrucker
 
Ich kenn mich mit den Reports auch nicht gut aus, aber kann es sein dass du den Drucker so setzen musst:

Delphi-Quellcode:
Report.PrintOptions.Printer := FPrintId;


Mfg.
pHL

haentschman 27. Jun 2011 08:44

AW: PrinterIndex gesetzt... trotzdem Standarddrucker
 
Danke erst mal...

Printer in PrintOptions ist ein String. Wenn ich mir den String über die ID aus Printer hole funktioniert das ganze...8-)
Delphi-Quellcode:
procedure TdBK_Print.Print(Report: TfrxReport; Design, Dialog: Boolean);
begin
  if Report.PrepareReport(True) then
  begin
    Report.PrintOptions.ShowDialog:= Dialog;
    Report.PrintOptions.Printer:= Printer.Printers[FPrinterID];
    //Printer.PrinterIndex:= FPrinterID;
    if Design then
      Report.DesignReport(True)
    else
      Report.Print;
  end;
end;
Das erklärt aber immer noch nicht weshalb obiger Code unter 2007 via PrinterIndex funktioniert und unter XE nicht mehr... :gruebel:

pHL 27. Jun 2011 08:48

AW: PrinterIndex gesetzt... trotzdem Standarddrucker
 
Zitat:

Zitat von haentschman (Beitrag 1108477)
Printer in PrintOptions ist ein String. Wenn ich mir den String über die ID aus Printer hole funktioniert das ganze...8-)

Danke, habe ich nicht gewusst :P

Satty67 27. Jun 2011 09:53

AW: PrinterIndex gesetzt... trotzdem Standarddrucker
 
Zitat:

Zitat von haentschman (Beitrag 1108477)
Printer in PrintOptions ist ein String

Dann bleibt ja nur noch, das hier ein String falsch interpretiert wird (Ansi/Unicode), zumal das wohl auch zu 99% immer das Problem bei 2007 -> XE Portierungen der Fall sein wird.

Evtl. mal mit expliziter Konvertierung experimentieren. (bzw. wenn ich das richtig lese, ist es schon gelöst?)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz