Im Release 5.6.03 wurde das CtxDocEdit-Objekt eingeführt. Welche Funktionalität das neue Objekt zur Verfügung stellt, wurde im Artikel /Blog/2012/01/CodeLibrary-Beispiel-fuer-CtxDocEdit beschrieben. Das Beispiel implementiert eine komplette Textverarbeitung in CONZEPT 16.
Der vorliegende Artikel beschäftigt sich mit den Druckmöglichkeiten im CtxDocEdit.
PrintPage() und PrintDoc()
Für das Drucken stellt das CtxDocEdit-Objekt zwei Methoden bereit. PrintPage() druckt eine einzelne Seite, PrintDoc() hingegen druckt das gesamte Dokument.
Ohne weitere Änderungen erfolgt die Druckausgabe auf dem Standard-Drucker. Die Methoden werden jedoch durch COM-Eigenschaften beeinflusst.
Device
Die Eigenschaft "Device" legt fest, wohin PrintDoc() bzw. PrintPage() den Inhalt drucken. Sie beeinflussen jedoch auch die aktuelle Formatierung des Textes auf dem Bildschirm.
Die folgende Anweisung definiert den zu verwendenden Drucker:
CtxDocEdit->cpaDevice # 'MyPrinterName';
Nachfolgende Aufrufe von PrintDoc() und PrintPage() leiten die Druckausgabe auf den angegebenen Drucker. Steht der Druckername nicht fest, kann dieser auch über das Application-Objekt ermittelt werden:
tPrinterList # _App->ppPrinterList(_PrtListRefresh);
tPrinter # tPrinterList->PrtInfo(_PrtFirst);
CtxDocEdit->cpaDevice # tPrinter->ppName;
Das Beispiel liest den ersten Drucker im System und setzt anschließend die Device-Eigenschaft.
Der Device-Eigenschaft können jedoch auch Integer-Werte zugewiesen werden:
// Formatierung für Standard-Drucker
// Druck auf Standard-Drucker
CtxDocEdit->cpiDevice # 2;
// Formatierung für Bildschirm
// Kein Druck möglich!
CtxDocEdit->cpiDevice # 1;
Standardmäßig enthält die Eigenschaft den Wert 2. Wichtig ist außerdem, dass bei Angabe des Wertes 1 keine Druckausgabe möglich ist, da die Formatierung in diesem Fall ausschließlich für den Bildschirm erfolgt.
PrintDevice
Da die Device-Eigenschaft die Ausgabe immer für den gewählten Drucker am Bildschirm formatiert, ist sie ungeeignet, wenn die Ausgabe nicht auf demselben Drucker durchgeführt werden soll.
Hierfür bietet das CtxDocEdit-Objekt die COM-Eigenschaft PrintDevice. Diese darf jedoch nicht mit der CONZEPT 16-Eigenschaft wpPrtDevice
verwechselt werden.
Der COM-Eigenschaft kann ein Handle auf einen Geräte-Kontext (Device Context) übergeben werden. Dieser wird dann von PrintPage() bzw. PrintDoc() ausschließlich für die Druckausgabe verwendet.
Da es zur Zeit mit CONZEPT 16 nicht möglich ist einen Geräte-Kontext zu ermitteln, ist die Verwendung der COM-Eigenschaft PrintDevice ebenfalls nicht möglich. Mit dem Release 5.6.06 werden wir dies ändern und eine Erweiterung implementieren.