PrintPreviewDialog

JK_net

Erfahrenes Mitglied
Hallo!

Beim Standard-PrintPreviewDialog gibt es ja den Button zum Drucken. Jetzt möchte ich aber verhindern, dass der User entweder darauf drückt, oder aber dass es abgefangen wird, und nicht sofort gedruckt wird.
Ich habe auch schon versucht mir eine eigene Vorschau zu basteln, jedoch ist dies bis jetzt daran gescheitert, dass ich nicht weiß ich wie der Seitenwechsel funktioniert (wie im standard-Dialog oben rechts...)

Kann mir evtl. jemand bei einem meiner Probleme helfen?!

Vielen Dank im Voraus

MfG
Jens
 
Hallo Jens!

Habe gerade eben meine "Quellen" durchforstet. Im PrintPreviewDialog den Druckbefehl abzufangen scheint mir nicht möglich zu sein. Der PrintPreviewDialog ist ja ein recht simples Control mit entsprechend karger Funktionalität.
Ich fürchte dir bleibt nichts anderes übrig als eine eigene Vorschau zu machen. Wenn ich dich richtig verstanden habe, möchtest du mehrere Seiten nebeneinander oder übereinander darstellen. Dies erreichst du mit einem PrintPreviewControl und dessen Eigenschaften "Columns" bzw. "Rows". Die Seitenzahl des ersten, in der Vorschau angezeigten Blattes, änderst du mit "StartPage", damit kannst du die weiteren Seiten anzeigen.
 
Hallo!

Soweit schon mal vielen Dank!

Hast du evtl. noch eine Idee, wie man bei mehreren Seiten immer nur eine Seite im PrintPreviewControl angezeigt bekommt?

Ich baue mir die Vorschau selbst, bekomme allerdings bei "Autozoom" immer alle Seiten angezeigt.

MfG
Jens
 
Also die Eigenschaft "StartPage" legt die Seitenzahl der linken oberen dargestellten Seite fest. Die Seiten werden ja "Matrix-förmig" angeodnet, d.h. wenn du die Eigenschaften "Rows" und "Columns" auf 1 setzest, sollte eigentlich nur eine Seite ("StartPage") angezeigt werden.
Die Eigenschaft "AutoZoom" kannst du schon auf true setzen; das bedeutet nur, dass die Seiten so skaliert werden, dass die vorgegebene Anzahl von Seiten flächenfüllend dargestellt wird. Alternativ könntest du mit der Eigenschaft "Zoom" den Zoomfaktor explizit festlegen.
 
Super, vielen Dank!

Vielleicht noch eine Frage:
Hast du eine Idee, wie man die Seitenzahl (gesamt) eines PrintDocuments berechnen oder auslesen kann?

MfG
Jens Kruse
 
Ich denke das kriegst du nur raus, indem du mit einer globalen Variable zählst, wie oft die "PrintPage" Methode aufgerufen wird.
Im letzten Beitrag deines letzten Threads, müsstest du also noch eine zusätzliche Zählvariable einfügen, die bei jedem Aufruf inkrementiert wird. Mit dem Ereignis "EndPrint" (Wenn alle PrintPages erstellt sind...) kannst du dir diese Variable ausgeben lassen und sie für einen späteren Aufruf wieder zurücksetzen.
 
Zurück