Ich habe vor kurzem einen kompletten Print-Dialog geschrieben, der verschiedene Dinge drucken kann. Er basiert auf der Jedi-Komponente TjvCustomPreviewRenderer.
Um das zu implementieren, müsstest Du dich in die Jedi-Komponenten der verschiedenen Renderer reinlesen (ich habe auch länger gebraucht um es zu kapieren). Eine einzelne Druckseite wird über die CallBack-Methode DoAddPage erzeugt.
Notfalls kann ich Dir meinen Code hier posten, aber wäre das wirklich eine Hilfe?
Über DoAddPage wird jede einzelne Seite (PageIndex=0..Seitenummer-1) einfach über das mitgelieferte Canvas-Objekt gezeichnet. Einfacher geht's nicht.
Den eigentlichen Ausdruck startest Du mit CreatePreview. Das Schöne daran ist, dass die Druckvorschau schon vor dem eigentlichen Ausdruck auf dem Drucker zu sehen ist.
Hier jedoch zum Start die grobe Definition meines eigenen Renderers, dass Du Dir schonmal ein ungefähres Bild machen kannst. Wie gesagt ist es etwas Lesearbeit aber Du wirst mit dem Ergebnis zufrieden sein, versprochen!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| TMyPreviewRenderer=class(TjvCustomPreviewRenderer) private FFinished:boolean; protected procedure DoAddPage(Sender:TObject; PageIndex:Integer; Canvas:TCanvas; PageRect,PrintRect:TRect; var NeedMorePages:boolean); override; public constructor Create(AOwner:TComponent; newprintpreviewdialog:TPrintPreviewDialog); reintroduce; destructor Destroy; override; function CreatePreview(Append:boolean):boolean; override; end; |