Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fastreport und TPrintDialog (https://www.delphipraxis.net/68217-fastreport-und-tprintdialog.html)

Karstadt 26. Apr 2006 13:31


Fastreport und TPrintDialog
 
Hallo.

Kann man irgendie den Fastreport sagen, auf welchen Drucker der drucken soll?

MFG

franktron 26. Apr 2006 13:42

Re: Fastreport und TPrintDialog
 
Welche Version ??

DP-Maintenance 26. Apr 2006 13:43

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Datenbanken" nach "Sonstige Fragen zu Delphi" verschoben.
Auch wenn die Daten aus der DB kommen ist das ja keine Frage die etwas mit einem DB-Problem zu tun hat ;-)

Karstadt 26. Apr 2006 14:05

Re: Fastreport und TPrintDialog
 
3.20

Karstadt 26. Apr 2006 14:32

Re: Fastreport und TPrintDialog
 
Kannst du mir weiterhelfen?

franktron 26. Apr 2006 14:35

Re: Fastreport und TPrintDialog
 
Ich hab das Ganz normal über TPrinter gesetzt

Karstadt 26. Apr 2006 14:38

Re: Fastreport und TPrintDialog
 
wie kann ich auslesen welches Drucker bei TPrintDialog ausgewählt ist?

Danke für deine Hilfe.

franktron 26. Apr 2006 14:43

Re: Fastreport und TPrintDialog
 
Wozu das Printer.Printerindex Wird doch vom TPrinterdialog automatisch gesetzt.

Und Fastreport kann auch einen Druckerdialog.

Karstadt 26. Apr 2006 14:56

Re: Fastreport und TPrintDialog
 
Das habe ich auch schon gemerkt. Aber wenn ich dann auf Print gehe druck der mir aus dem standard drucker und nich aus dem ausgewählten.

Die Muhkuh 26. Apr 2006 14:58

Re: Fastreport und TPrintDialog
 
Kannst du nur mal etwas Code zeigen?

Karstadt 27. Apr 2006 07:52

Re: Fastreport und TPrintDialog
 
Delphi-Quellcode:

  dm.PrintDialog.Copies := dm.frxReport.PrintOptions.Copies;
  dm.PrintDialog.Collate := dm.frxReport.PrintOptions.Collate;
  IF dm.PrintDialog.Execute then
  begin
    dm.frxReport.PrintOptions.Copies := dm.PrintDialog.Copies;
    dm.frxReport.PrintOptions.Collate := dm.PrintDialog.Collate;
    //Ladedatei und drucke
  end;

Gedruckr wird aber auf dem Standard drucker obwohl ich einen anderen ausgewählt habe

franktron 27. Apr 2006 19:14

Re: Fastreport und TPrintDialog
 
Zitat:

Zitat von Karstadt
Delphi-Quellcode:

  dm.PrintDialog.Copies := dm.frxReport.PrintOptions.Copies;
  dm.PrintDialog.Collate := dm.frxReport.PrintOptions.Collate;
  IF dm.PrintDialog.Execute then
  begin
    dm.frxReport.PrintOptions.Copies := dm.PrintDialog.Copies;
    dm.frxReport.PrintOptions.Collate := dm.PrintDialog.Collate;
    //Ladedatei und drucke
  end;

Gedruckr wird aber auf dem Standard drucker obwohl ich einen anderen ausgewählt habe

Du must erst die Datei laden und dann die sachen ändern. Weil in der FR3 Datei kann auch der Drucker mitgespeichert werden

franktron 27. Apr 2006 19:16

Re: Fastreport und TPrintDialog
 
Nachtrag was hat den der Code für einen Sinn wenn man normal mit FR druckt kommt doch ein Druckerdialog

Karstadt 28. Apr 2006 07:35

Re: Fastreport und TPrintDialog
 
Das ist richtig! Wenn man die Funktion Report.Print aufruf kommt es zu einem Druckdialog! Aber wenn ich eine Druckverwaltung habe mit 100 Dokumenten dann will ich vielleicht alle 100 Druckdokumenten auf einen anderen drucke ausdrucken, weil der Standard Drucker momentan Offline ist. Das soll definitiv per Auswahl eines Drucker gelöst werdem. Das ist die Ausganssituation.

Sharky 28. Apr 2006 07:48

Re: Fastreport und TPrintDialog
 
Hai Karstadt,

in diesem Fall würde ich an einem zentralen Punkt des Programmes (Im Hauptmenü) die Auswahl des Druckers anbiete.
Jetzt aber nicht den Standarddrucker von Windows ändern. Das gehört sich nicht für ein Programm sonder mit der Methode .ChangePrinter() von TfrReport den Drucker immer vor dem Ausdruck ändern.

Karstadt 28. Apr 2006 08:21

Re: Fastreport und TPrintDialog
 
Ich stehe auf dem Schlauch.

Du meinst doch die Komponente TfrxReport und dort soll eine Methode namens ChangePrinter geben?

frxReport.habe.ich.aber.nicht warum?

Sharky 28. Apr 2006 08:57

Re: Fastreport und TPrintDialog
 
Hai Karstadt,

es wurde wohl einiges in der 3.x geändert. Ich habe mir die jetzt mal schnell installiert und mir dieses Beispiel gebaut:
Delphi-Quellcode:
uses
  Printers;

procedure TDemoForm.FormCreate(Sender: TObject);
var
  ndx: Integer;
begin
  for ndx := 0 to Printer.Printers.Count - 1 do // Alle installierten Drucker
  begin
    ComboBox1.Items.Add(Printer.Printers[ndx]); // in einer ComboBox auflisten
  end;
end;

procedure TDemoForm.Button1Click(Sender: TObject);
begin
  with frxReport1 do
  begin
    PrintOptions.Printer := ComboBox1.Text; // Als Drucker den aus der ComboBox nehmen.
    PrintOptions.ShowDialog := FALSE; // Kein Dialog notwendig
    PrepareReport(); // Vorbereiten
    Print; // und weg damit
  end;
end;

Karstadt 28. Apr 2006 09:02

Re: Fastreport und TPrintDialog
 
Danke! Das hat funktioniert SUPER! :-D

Karstadt 28. Apr 2006 09:06

Re: Fastreport und TPrintDialog
 
Delphi-Quellcode:
cbx_drucker.Items := Printer.Printers;
TURBO :) Jetzt muss ich nur rausfinden welche Drucker der standard drucke ist und fertig ;)

Sharky 28. Apr 2006 09:14

Re: Fastreport und TPrintDialog
 
Zitat:

Zitat von Karstadt
... Jetzt muss ich nur rausfinden welche Drucker der standard drucke ist und fertig ;)

Printer.PrinterIndex gibt den Standarddrucker an.
Delphi-Quellcode:
begin
  ComboBox1.Items := Printer.Printers;
  ComboBox1.ItemIndex := Printer.PrinterIndex;
end;

Karstadt 28. Apr 2006 09:40

Re: Fastreport und TPrintDialog
 
..kann ich diesen Drucker Fettmarkieren?

Das Ereignis ist onDrawItem.. aber was nun... :(

Sharky 28. Apr 2006 09:43

Re: Fastreport und TPrintDialog
 
Neue Frage -> Neuer Thread.

Vorher aber mal die Suche benutzen. Ich bin fast sicher das wir das schon einmal hatten.

Karstadt 28. Apr 2006 09:54

Re: Fastreport und TPrintDialog
 
So. Nun habe ich alles was ich wissen wollte. Vielen Dank!

Delphi-Quellcode:
procedure bx_druckerDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with cbx_drucker do
  begin
    Canvas.FillRect(Rect);
    If Index = Printer.PrinterIndex then
    Canvas.Font.Style := [fsBold] else Canvas.Font.Style := [];
    Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]);
  end;
end
Du hast natürlich recht bezüglich der Suchfunktion! Wer suchen kann ist klar in Vorteil :)

Karstadt 28. Apr 2006 10:05

Re: Fastreport und TPrintDialog
 
[quote]
Printer.PrinterIndex gibt den Standarddrucker an.
Delphi-Quellcode:
begin
  ComboBox1.Items := Printer.Printers;
  ComboBox1.ItemIndex := Printer.PrinterIndex;
end;
nein. das ist der augewähle drucker. Wenn ich mit Printdialog einen anderen auswähle, dann ist dann wird das als STANDARD drucker angezeigt.

Sharky 28. Apr 2006 10:52

Re: Fastreport und TPrintDialog
 
Zitat:

Zitat von Karstadt
... nein. das ist der augewähle drucker.

Okay, habe ich etwas unglücklich formuliert.
Beim Programmstart ist Delphi-Referenz durchsuchen.PrinterIndex auf den Standarddrucker eingestellt.
Zitat:

Zitat von Karstadt
Wenn ich mit Printdialog einen anderen auswähle, dann ist dann wird das als STANDARD drucker angezeigt.

Jup. Weil Delphi das ja intern in seinem "Objekt" Delphi-Referenz durchsuchenPrinter handelt. Du kannst dir jetzt also entweder beim Programmstart den Index des Standarddruckers merken (schlecht). Oder an einer gewünschten Stelle PrinterIndex wieder auf den Standarddrucker stellen und dann den Index auslesen (besser).


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