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 Rave: Seitenanzahl nach Preview feststellen? (https://www.delphipraxis.net/177577-rave-seitenanzahl-nach-preview-feststellen.html)

SearchBot 14. Nov 2013 12:45

Rave: Seitenanzahl nach Preview feststellen?
 
Hallo,

ich habe mir die Aufgabe gestellt, anhand der erzeugten Seiten im Preview einzustellen, ob die Ausgabe auf Duplex geht oder nicht.

Ich finde aber nicht heraus, wo ich die Anzahl der gerenderten Seiten auslesen kann...
Ich suche sowas wie
Delphi-Quellcode:
if Preview.PageCount>1 then
      RvSystem1.SystemPrinter.Duplex:=dupHorizontal
 else RvSystem1.SystemPrinter.Duplex:=dupSimplex;
Also anstelle von Preview.PageCount sollte die Variable stehen, aus der ich die Anzahl der Seiten lesen kann.
Wiewowas geht das? Oder gehts noch viiiiel einfacher?

Volker Z. 14. Nov 2013 19:04

AW: Rave: Seitenanzahl nach Preview feststellen?
 
Hallo

Zitat:

[...] Ich finde aber nicht heraus, wo ich die Anzahl der gerenderten Seiten auslesen kann [...] Wiewowas geht das?
Einfach selbst zählen.

Etwa so (das Rave Project etc. muss man sich dazudenken):
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    RvSystem1: TRvSystem;
    procedure RvSystem1AfterPrint(Sender: TObject);
    procedure RvSystem1BeforePrint(Sender: TObject);
    procedure RvSystem1NewPage(Sender: TObject);
  private
    FPageCount : Integer;
  end;

procedure TForm1.RvSystem1BeforePrint(Sender: TObject);
begin
  FPageCount := 0;
end;

procedure TForm1.RvSystem1NewPage(Sender: TObject);
begin
  Inc (FPageCount)
end;

Zitat:

Ich suche sowas wie
Delphi-Quellcode:
if Preview.PageCount>1 then
      RvSystem1.SystemPrinter.Duplex:=dupHorizontal
 else RvSystem1.SystemPrinter.Duplex:=dupSimplex;

Und dann noch:
Delphi-Quellcode:
procedure TForm2.RvSystem1AfterPrint(Sender: TObject);
begin
  if FPageCount = 1 then
    RvSystem1.SystemPrinter.Duplex := dupSimplex
  else
    RvSystem1.SystemPrinter.Duplex := dupHorizontal
end;
fertig

Gruß

SearchBot 15. Nov 2013 10:46

AW: Rave: Seitenanzahl nach Preview feststellen?
 
Vielen Dank, klappt super.

Ich hab nur statt bei Afterprint es bei PreviewShow reingemacht.
:thumb:

Volker Z. 16. Nov 2013 00:01

AW: Rave: Seitenanzahl nach Preview feststellen?
 
Hallo,

Zitat:

Vielen Dank, klappt super.
Freut mich.

Zitat:

Ich hab nur statt bei Afterprint es bei PreviewShow reingemacht.
Der Code war in AfterPrint schon richtig. Du kannst es natürlich auch gerne in PreviewShow reinsetzen (ist ja nicht zwangsläufig falsch).

Wenn Du Dir mal ein leeren AfterPrint Event in Dein Projekt legst, dann zwei Breakpoints - jeweils einen am Ende von AfterPrint und PreviewShow - setzt und Dein Programm durch den Debugger laufen lässt, wirst Du sehen, dass die Programmausführung zunächst mal in AfterPrint anhalten wird (erst danach in PreviewShow). Mit anderen Worten: Das direkte Drucken (ohne vorherige Preview) wird dann im Simplex-Mode laufen.

Lass Dich nicht vom Methodennamen verwirren; AfterPrint heißt nicht, dass der Code erst nach der Ausgabe auf dem Drucker abgearbeitet wird, sondern nur: Ich habe fertig (das/die Dokument(e) gerendert)

Gruß

SearchBot 21. Nov 2013 08:35

AW: Rave: Seitenanzahl nach Preview feststellen?
 
Oh, das ist ein guter Hinweis. Vielen Dank.

Ich habe nämlich schon darüber nachgedacht, nun durch die automatische Anwahl einen Dialog weniger anzuzeigen und dann hätte ich wieder ein Problem gehabt. So kenne ich nun durch deine Erläuterung die Zusammenhänge und ... *glücklich* :thumb:


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