Bei dieser Druckvariante wird ein ClassiX-Dokument erzeugt und mit Daten
gefüllt. Diese sind üblicherweise einfache Texte und werden zum schnellen Druck von Listen oder einfachen Dokumenten verwendet. Da solche Dokumente früher häufig einfach aus direkt positioniertem Text (einfaches Alphabet, sogenannte ASCII-Zeichen) bestand, hat sich der Begriff "ASCII-Druck" eingebürgert. Tatsächlich lassen sich mit dieser Druckvariante aber neben Linien und Grafiken auch nicht-ASCII-Texte drucken. Dadurch, dass zusätzlich beliebige Fonts ausgewählt werden können
lassen sich auch sehr einfach Barcodes ausgeben.Eines der Hauptmerkmale dieser Art zu Drucken besteht darin, sehr einfach ein
Fenster (oder Teile davon) auf einen Drucker auszugeben. Dabei unterscheidet
sich der ASCII-Druck von einem Screenshot u.a. dadurch, dass- alle Daten eines Widgets gedruckt werden (also z.B. alle Zeilen einer Listbox, auch die, die nicht am Bildschirm angezeigt werden),
- die Ausgabe als reiner Text Text erfolgt (Buttons, Scrollbars, etc. werden also nicht als Widgets dargestellt)
- das entstehende Dokument weiter bearbeitet werden kann (indem z.B. weiterer Text oder Grafiken eingefügt wird)
Die Ausgabe von Drucklisten wird durch ein Document-Objekt gesteuert, das zugleich als
Puffer zwischen den InstantView®-Anweisungen und dem Druckausgabekanal des jeweiligen
Betriebssystems steht. Das Document-Objekt kann die Information der gesamten Druckliste
halten - die Ausgabe wird explizit mit PrintDocument angestoßen.
Außerdem ist eine Vorschau auf dem Bildschirm möglich. Bei sehr großen Listen ist
dieser Modus uneffektiv oder nicht durchführbar: Hier werden die Daten um eine
vorgegebene Anzahl von k Druckseiten verzögert an den Ausgabekanal weitergegeben. Je
nachdem, welcher Modus benutzt wird, kann innerhalb der gesamten Liste oder innerhalb der
letzten k Seiten frei positioniert werden. Zur gleichen Zeit können mehrere
Document-Objekte existieren, d.h. man kann verschiedene Drucklisten simultan bearbeiten.
Der einfache Ablauf von der Erstellung eines Dokuments beim Drucken eines Dokuments besteht in der Regel aus folgenden Schritten:
- Auswahl des Druckers und der Druckereinstellungen (SetPrinter, Printer-Manager)
- Erzeugen eines Dokumentes (Document)
- Setzen der Dokument-Einstellungen (SetParameter)
- Bearbeiten des Dokuments:
- Befüllen des Dokuments mit den gewünschten Daten (DrawLine, DrawOle, DrawBitmap, DrawRectangle, PutLine)
- Abfragen von Werten des Dokuments: Line
oder GetLine, GetAbsPosY und GetPosY oder dem Befehl Page
- Ausgabe des Dokuments: Vorschau mit ShowDocument,
Drucken mit PrintDocument, Export in eine Text-Datei mit ExportDocument.
Zusätzlich kann das Dokument in eine emf-Datei geschrieben werden (CreateEmfFiles)
SetPrinter ist eine sehr einfache Art der
Druckerauswahl: Ein Druckdialog geht auf und der ausgewählte Drucker mit seinen Eigenschaften wird als Standarddrucker verwendet. Soll der Druckerdialog mit Vorgaben belegt werden oder die Auswahl des Dialogs gespeichert und bearbeitet werden (z.B. um Druckereinstellungen nur für die Titelseite auszuwählen), muss die Funktion SelectPrinterWithPresets
verwendet werden.Um den Druckvorgang besser beeinflussen zu können kann während der
Erstellung des Dokuments (Schritt 4) auf das Druck-Ergebnis mithilfe der Funktionen von CXS_DOCUMENT Einfluss genommen werden. Dadurch ist es möglich z.B. verschiedene Seiten automatisch auf unterschiedliche Drucker auszugeben oder das Seitenformat
(z.B. Ränder oder Orientation) für bestimmte Seiten zu ändern.Folgende Klassen gibt es, mit denen das Drucken gesteuert werden kann:
- CXS_PRINTER_MANAGER: Wird verwendet um die installierten Drucker abzufragen
- CX_PRINTER: Repräsentieren die installierten Drucker
- CX_PRINTER_PROPERTIES: Entsprechen den Einstellungen eines Druckers (z.B. Auflösung, Schacht, Anzahl Kopien, ...)
- CX_PAGE_PROPERTIES: Entsprechen den Drucker-unabhängigen Seiteneinstellungen (z.B. Papierformat, Ränder, ...)
- CXS_DOCUMENT: Das zu druckende Dokument.
Dieses Dokument wird mit zu druckenden Daten gefüllt (Text, Bilder, Widgets, ...). Seitenweise können Einstellungen von Druckern, dessen Einstellungen
und Seiteneigenschaften gesetzt werden (SetPagePropertiesAndPrinter).
Als Alternative zum Drucken mit dem Befehl PrintDocument kann mit CreatePrinterJob auch ein Druck-Job verwendet werden. Dieser lässt sich etwas genauer steuern.
Siehe auch: