Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fastreport druckt nicht (https://www.delphipraxis.net/195955-fastreport-druckt-nicht.html)

borstenei 10. Apr 2018 23:44

Fastreport druckt nicht
 
Ich habe hier 2 Anwendungen die nur noch Reports ausdrucken wenn ich den Umweg über die Preview gehe...was mache ich hier falsch?..das hat doch alles mal funktioniert...einmal mit Delphi 10.1 und Fastreport 5 und einmal mit Delphi 10.2.3 und Fastreport 5 in beiden Fällen funktioniert das drucken über die Vorschau einwandfrei.....
Delphi-Quellcode:
PrintFrm.frxReport1.ShowReport
mit
Delphi-Quellcode:
PrintFrm.frxReport1.Print;
funktioniert es nicht ..obwohl beide Mal de selbe Druckdialog angezeigt wird.....

himitsu 11. Apr 2018 01:49

AW: Fastreport druckt nicht
 
Vor dem Print das PrepareReport aufgerufen?

borstenei 11. Apr 2018 03:57

AW: Fastreport druckt nicht
 
nein auch ein :
Delphi-Quellcode:
PrintFrm.frxReport1.PrepareReport(True);
hilft nicht, es druckt nicht obwohl der selbe Dialog wie im Preview aufgerufen wird.???

ensaron 11. Apr 2018 07:13

AW: Fastreport druckt nicht
 
Ich benutze Fastreport 6, aber ich denke nicht, dass das an der Stelle einen Unterschied macht. Folgendes funktioniert bei mir sowohl unter XE6 als auch 10.2 problemlos:
Delphi-Quellcode:
FReport.PrintOptions.ShowDialog := False;
FReport.PrintOptions.Copies := 1;
FReport.PrintOptions.Printer := 'PDFCreator';
FReport.PrepareReport;
FReport.Print;
edit:
Delphi-Quellcode:
FReport.PrintOptions.ShowDialog := True;
FReport.PrepareReport;
FReport.Print;
tut ebenfalls was es soll.

borstenei 11. Apr 2018 10:11

AW: Fastreport druckt nicht
 
nein hier leider nicht:shock:
Es wird der Druckdialog aufgerufen aber er druckt nicht.
Ich kann z.b. direkt in eine PDF speichern ohne Probleme nur drucken ohne den Umweg der Vorschau ist nicht möglich.
Was übersehe ich hier?...
Wie könnte ich dem Problem auf die Spur kommen?

himitsu 11. Apr 2018 10:35

AW: Fastreport druckt nicht
 
Wenn keine Seiten generiert werden, dann wird auch nichts gedruckt.

Sicher, dass dort auch Seiten raus kommen können? DataSet nicht gefüllt, oder sowas.


In PrepareReport und Print reindebuggen und schauen was die (anders) machen.
Oder erstmal schauen ob und wann bei beiden Varianten zugehörige Events aufgerufen werden.
OnProgressStart
OnProgress
OnProgressStop
OnStartReport
OnStopReport
...
OnPrintPage
OnPrintReport
OnAfterScriptCompile
...
oder so

borstenei 11. Apr 2018 11:08

AW: Fastreport druckt nicht
 
Danke Dir für deine Tipps. Ich schaue mal wie ich da weiter komme.
..aber der Aufruf zum drucken unterscheidet sich wirklich nur in
Delphi-Quellcode:
PrintFrm.frxReport1.ShowReport
oder
Delphi-Quellcode:
PrintFrm.frxReport1.Print
...sehr seltsam

ensaron 11. Apr 2018 13:54

AW: Fastreport druckt nicht
 
Hast du mal probiert, ob der Druck funktioniert, wenn du ihn ohne Druckdialog ausführst? Also wie in meinem ersten Quelltext-Block mit Zuweisung des Druckers anhand des Namens.

borstenei 11. Apr 2018 22:57

AW: Fastreport druckt nicht
 
Zitat:

Zitat von ensaron (Beitrag 1398809)
Hast du mal probiert, ob der Druck funktioniert, wenn du ihn ohne Druckdialog ausführst? Also wie in meinem ersten Quelltext-Block mit Zuweisung des Druckers anhand des Namens.

...tatsächlich dann druckt er direkt. Aber das ist so schlecht umsetzbar in der Praxis.. da das Programm an verschiedenen PC's zum Einsatz kommt und ich jetzt erst den Druckernamen ermitteln müsste und ich kann so nur wieder über Umwege die Druckoptionen ändern.
Was ist hier das Problem?

Jasocul 12. Apr 2018 06:30

AW: Fastreport druckt nicht
 
Zitat:

Zitat von borstenei (Beitrag 1398867)
...tatsächlich dann druckt er direkt. Aber das ist so schlecht umsetzbar in der Praxis.. da das Programm an verschiedenen PC's zum Einsatz kommt und ich jetzt erst den Druckernamen ermitteln müsste und ich kann so nur wieder über Umwege die Druckoptionen ändern.
Was ist hier das Problem?

Vermutlich musst du nach dem PrinterDialog den ausgewählten Drucker noch dem Fastreport zuweisen. Vielleicht greift FR nicht automatisch darauf zu.

ensaron 12. Apr 2018 07:11

AW: Fastreport druckt nicht
 
Zitat:

Zitat von Jasocul (Beitrag 1398876)
Vermutlich musst du nach dem PrinterDialog den ausgewählten Drucker noch dem Fastreport zuweisen.

Nein, die Anzeige des Druckerdialogs erfolgt in der Prozedur, die auch den Druck durchführt. Da ist kein manueller Eingriff notwendig.

@borstenei:
Hast du denn bei Auswahl des Druckers über den Druckdialog und bei dem funktionieren Ausdruck über Angabe des Druckernamens jeweils den gleichen Drucker benutzt?
Wenn ja, müsstest du mal in die Funktion TfrxPreviewPages.Print reindebuggen (Unit frxPreviewPages). Der einzige Unterschied beim Aufruf mit Druckernamen vs. mit Druckdialog sollte ja die Anzeige des Druckdialogs sein. Falls in den beiden Fällen der nachfolgende Quelltext unterschiedlich durchlaufen wird, hast du schonmal einen Anhaltspunkt an welcher Stelle dein Problem liegt.

KodeZwerg 12. Apr 2018 07:31

AW: Fastreport druckt nicht
 
Vielleicht hilft Dir ja einer der Schnippsel hier um ans Ziel zu kommen.
Delphi-Quellcode:
uses Printers;

// so könnte man den Standard-Drucker-Namen und sein Port ermitteln
procedure TForm1.Button1Click(Sender: TObject);
var
  MyPrinter, MyDriver, MyPort: array[0..100] of Char;
  DevMode: THandle;
begin
  Printer.GetPrinter(MyPrinter, MyDriver, MyPort, DevMode);
  Label1.Caption:=MyPrinter;
  Label2.Caption:=MyPort;
end;

// so könnte man alle Drucker ermitteln
procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines.Assign(Printer.Printers);
end;

// so könnte man die DPI vom Drucker ermitteln
procedure TForm1.Button3Click(Sender: TObject);
begin
  Label3.Caption := IntToStr(GetDeviceCaps(Printer.Handle, LOGPIXELSX)) +
                    ' x '+IntToStr(GetDeviceCaps(Printer.Handle, LOGPIXELSY))+
                    ' DPI (dots per inch)';
end;


// so könnte man die eingelegte papiergröße ermitteln
procedure TForm1.Button4Click(Sender: TObject);
var
  papermmx, papermmy: Extended;
begin
  Printer.BeginDoc;
  {
  PHYSICALWIDTH = Dots horizontal of the paper
  LOGPIXELSX   = DPI (Dots per Inch)
  25.4          = To calculte Inch to Millimeter
  }
  papermmx:=GetDeviceCaps(Printer.Canvas.Handle,PHYSICALWIDTH)/
            GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX) * 25.4;
  papermmy:=GetDeviceCaps(Printer.Canvas.Handle,PHYSICALHEIGHT)/
            GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY) * 25.4;
  with printer.canvas do
  begin
    TextOut(200,100,floattostr(papermmx)+' mm x '+floattostr(papermmy)+' mm');
  end;
  Printer.EndDoc;
end;

MichaelT 12. Apr 2018 07:46

AW: Fastreport druckt nicht
 
Druckst du auch das richtige Format? US/Legal vs. A4 oder so, falls das eine Rolle spielt.

Zitat:

Zitat von borstenei (Beitrag 1398695)
Ich habe hier 2 Anwendungen die nur noch Reports ausdrucken wenn ich den Umweg über die Preview gehe..


ggscholz 5. Jun 2021 08:59

AW: Fastreport druckt nicht
 
Gab es denn für das hier beschriebene Problem eine Lösung. Bei mir lande ich auch bei einem Rechner nach Aufruf der Preview und click auf den Druck-Button im Speichern Dialog


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 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