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 Druckseitenanzahl eines Richedit? (https://www.delphipraxis.net/126710-druckseitenanzahl-eines-richedit.html)

Mattze 31. Dez 2008 16:22


Druckseitenanzahl eines Richedit?
 
Hallo,

fällt mir gerade ein, aber erst mal: Guten Rutsch und ein erfolgreiches 2009!

Wie bekommt man vor dem Druck eines Richedit die zu erwartende Seitenzahl raus?

Geht das so, wie in TRichedit.print vorgemacht. Nur, dass als Ziel Range.hdctarget NIL angegeben wird?
Äh... Nein, das kann ja nicht funktionieren, weil ja damit für die Druckausgabe formatiert wird, was die Seitenanzahl natürlich wieder beeinflusst.
Vielleicht ohne BeginDoch und Enddoc für den Drucker?

Also, ich habe keine Idee.
Habt Ihr eine Vorschlag?

Gruß
Mattze

Reinhard Kern 1. Jan 2009 09:06

Re: Druckseitenanzahl eines Richedit?
 
Zitat:

Zitat von Mattze
Hallo,

fällt mir gerade ein, aber erst mal: Guten Rutsch und ein erfolgreiches 2009!

Wie bekommt man vor dem Druck eines Richedit die zu erwartende Seitenzahl raus?

Geht das so, wie in TRichedit.print vorgemacht. Nur, dass als Ziel Range.hdctarget NIL angegeben wird?
Äh... Nein, das kann ja nicht funktionieren, weil ja damit für die Druckausgabe formatiert wird, was die Seitenanzahl natürlich wieder beeinflusst.
Vielleicht ohne BeginDoch und Enddoc für den Drucker?

Also, ich habe keine Idee.
Habt Ihr eine Vorschlag?

Gruß
Mattze

Hallo,

ohne Drucker kann man i.A. überhaupt keine Seitenzahl berechnen, weil man ja das Seitenformat nicht kennt. Wenn du meinst für A4, dann musst du einen Drucker mit A4-Papier angeben. Wie Microsoft demonstriert, gibt es auch dann noch Abweichungen. Das einzig sichere ist daher der tatsächlich verwendete Drucker.

Gruss Reinhard

Mattze 1. Jan 2009 09:28

Re: Druckseitenanzahl eines Richedit?
 
Hallo Reinhard,

ja und Nein, also Jein!
Selbstverständlich ist der Drucker an dieser Stelle (kurz (!!!) vor dem Druck) schon bekannt!
Sonst kannst Du auch mit Richedit.print nicht ordentlich drucken, weil es nicht möglich ist, ordentlich zu formatieren. (Schau Dir mal richedit.print an, wenn Du die Quellen hast.)

Das Problem ist eben "nur", dass die ordentliche Formatierung (Umbruch und auch Seitenränder usw.) sowohl vom Drucker als auch von der eingelegten Papiergröße (und noch von viel mehr) abhängt.
Man kann die Seitenzahl also nicht fest vorher berechnen. (A4 hat 64 Zeilen usw....)
Erst, wenn alle Angaben zum Drucker usw. bekannt sind, geht das überhaupt richtig.

Die Frage lautet(te9.
Wie kann ich dann, wenn alle Angaben bekannt sind (!!!), die Seitenanzahl bei korrekter Formatierung des Richedit für eine Druckerseite (SendMessage(richedit.Handle, EM_FORMATRANGE, 1, Longint(@Range))) berechnen?
(Nach meinen Versuchen muss ich sagen, dass das evtl. gar nicht geht. Leider!)

Gruß und schönes neues Jahr
Mattze

RWarnecke 1. Jan 2009 09:56

Re: Druckseitenanzahl eines Richedit?
 
Hallo Mattze,

auch Dir ein frohes neues Jahr. Schaue Dir doch mal dieses Beispiel von den Schweizern an. Vielleicht kannst Du damit etwas anfangen.

Lannes 1. Jan 2009 10:21

Re: Druckseitenanzahl eines Richedit?
 
Hallo,

und das, im Detail in Flockes Garage:
RichEdit: Breite und Höhe des Inhalts bestimmen
RichEdit: Variable Druckfunktion

Reinhard Kern 1. Jan 2009 12:51

Re: Druckseitenanzahl eines Richedit?
 
Zitat:

Zitat von Mattze
...
Wie kann ich dann, wenn alle Angaben bekannt sind (!!!), die Seitenanzahl bei korrekter Formatierung des Richedit für eine Druckerseite (SendMessage(richedit.Handle, EM_FORMATRANGE, 1, Longint(@Range))) berechnen?
(Nach meinen Versuchen muss ich sagen, dass das evtl. gar nicht geht. Leider!)

Hallo Matze,

ganz streng genommen hast du damit wahrscheinlich recht: eine eingebettete EPS-Grafik mit Seitenvorschub drin (ist natürlich kein guter Stil) wird sich nicht analysieren lassen. Und bei einem eingebetteten Word-Doc brauchst du ein laufendes Word.

Gesucht wird eine perfekte Druckvorschau - das ist eigenmtlich bloss eine andere Formulierung des Problems. Ich denke am besten,zumindest für nicht-exotische Fälle, geht noch das Anlegen eines zum Drucker kompatiblen DCs und das Rendern der kompletten Ausgabe in diesen DC (heisst hier meistens Canvas). Schau mal nach CreateCompatibleDC.

Gruss Reinhard

Mattze 1. Jan 2009 16:10

Re: Druckseitenanzahl eines Richedit?
 
Hallo,

vielen Dank für den Tipp mit den Schweizern. Das ist genau das, was ich suchte.

Ärgerlich, dass ich das schon lange habe!!! Eben, weil ich dachte, das könnte usw.
Irgendwie habe ich da wohl nicht richtig reingeguckt.

Flocke's Garage ist auch interessant. Ist zwar noch wenig, sieht aber gar nicht schlecht aus!

Tschau
Mattze


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