Druckvorschau realisieren
-
Hallo,
hab die Nase voll vom Quickreport und möchte daher eine eigene Druckvorschau realisieren.
Nur irgendwie fehlt mir der richtige Ansatz.
Über ein Bitmap zeichnen ...,
nur wie realisiere ich dann mehrere Seiten ?Hat jemand sowas schon mal gemacht und kann mir irgendwie (eventuell auch mit Links) weiterhelfen ?
-
nichtseinfall schrieb:
Hallo,
Hat jemand sowas schon mal gemacht...
jo, hab' ich.

Was willst Du denn drucken? (Komponenteninhalt, beliebige Daten - Linien, Kreise..., oder Bilder)
in meiner Komponente hab ich eine Callback- Funktion gemacht. Die wird von Vorschau oder bei "Drucken" gerufen. Die hat 3 Parameter:
a) ein Bitmap der Groesse des Printer- Canvas
b) Anzahl Seiten als Referenz
c) Nummer akt. Seite.Im Hauptprogramm wird die Funktion ausgefuehrt. ("Als OnGetPicture"- Methode)
in Anzahl Seiten sagt Hauptprogramm, wieviel Seiten kommen sollen - das steuert die Anzeige der Vorschau/ den Druck.
in Nummer akt. Seite wird vom Hauptprogramm die entsprechende Seite abgefordert - fuer Vorschau / den Druck.
in Canvas des Bitmap kann beliebig gemalt werden!Das Bitmap wird in der Kompo in ein TImage kopiert (mit skalierung) oder in Canvas ders Printer kopiert beim Druck.
PS: das verbraucht etlichen RAM, da ein Bitmap der Groesse von Printer->Canvas erzeugt wird /3000x2000 Pixel oder mehr, je nach Drucker/ Plotter und Format)
-
Hallo,
erstmal danke für die Antwort.
Möchte die Daten aus einer mySQL-Abfrage drucken.
Daher würde ich dann wohl eine Referenz auf mein Query übergeben.
Es soll in verschiedenen Schriftgrößen gedruckt werden.
Das Problem sehe ich bei der Berechnung wieviel Seiten die Vorschau enthalten soll.
Muss dabei ja entsprechend die Schriftgröße beachten ...
-
nichtseinfall schrieb:
Muss dabei ja entsprechend die Schriftgröße beachten ...
Siehe TCanvas::TextWidth/TextHeight/TextExtent.