TEasyPrint arbeitet intern mit einem logischen Koordinatensystem vom
1000 x 1000 Pixeln, unabhängig von der tatsächlichen physikalischen
Auflösung des Druckers. Der Mittelpunkt des Blattes wird also mit
dem Wertepaar 500, 500 beschrieben.
Es stehen zwei Kopfzeilen zur Verfügung (Header1
und Header2), die auf jede neue Seite gedruckt werden.
Jede Kopfzeile hat ihre eigene Schrift.(Header1Font
und
Header2Font). Werden mehr Kopfzeilen
benötigt, kann dies über den Event "AfterPrintHeader"
erreicht werden. Die Kopfzeilen werden normalerweise linksbündig ausgegeben,
die rechtsbündige Ausgabe kann über die Zeichenfolge || (2 x
ASCII 179) im Textstring eingeschaltet werden. Alle Zeichen vor "||"
werden links- alle Zeichen danach werden rechtsbündig ausgegeben.
In jedem beliebigen Textstring können sogenannte "Makros" vorkommen.
Makros sind definiert durch den Ausdruck $(Makroname). Momentan ist nur
das Makro $(Page) implementiert, es ersetzt sich selbst im Textstring mit
der aktuellen Seitenzahl.
Diese Methode bricht den Druckvorgang ab.
bool __fastcall PrintBitmap (AnsiString
BitmapFilename, AnsiString Headline,float x,float y);
bool __fastcall PrintBitmap (AnsiString BitmapFilename, AnsiString
HeadLine);
bool __fastcall PrintBitmap (AnsiString BitmapFilename);
Diese Methode druckt das Bitmap in der Datei "BitmapFilename", versehen
mit der Überschrift "HeadLine" mit den Skalierungsfaktoren "x" und
"y" an die Stelle, an der der interne y - Cursor gerade steht. Der Skalierungsfaktor
"1" bedeutet Orginalgrösse. Skalierungsfaktor 0,5 halbe Orginalgrösse
und "2" doppelte Grösse.
Werden die Skalierungsfaktoren weggelassen, wird jeweils der
Skalierungsfaktor "1" verwendet.
bool __fastcall PrintText (int x,AnsiString
Text);
bool __fastcall PrintText (AnsiString text); // nicht
eingerückt
Diese Methode druckt den Text, der in "text" enthalten ist, mit der aktuell eingestellten Schrift um "x" logische Pixel links eingerückt an die aktuelle Position des y - Cursors.
bool __fastcall PrintMemo (TMemo *m,AnsiString
uber);
bool __fastcall PrintMemo (TMemo *m); // Ohne Überschrift
Diese Methode druckt den Inhalt des übergebenen TMemo - Objects versehen mit der Überschrift "uber" an die Position, an der der aktuelle y - Cursor gerade steht.
bool __fastcall PrintTable (AnsiString
s [],int x_count,int y_count,AnsiString uber);
bool __fastcall PrintTable (AnsiString s [],int x_count,int y_count);
Diese Methode druckt den Inhalt des Arrays s tabellenförmig, x_count
gibt dabei die Spaltenzahl an. "x_count" muß entweder den Wert 2
oder 4 enthalten (zwei- oder vierspaltig), y_count enthält die Anzahl
der Zeilen in s. Die Spalten werden intern so berechnet, dass der längste
Eintrag immer noch hineinpasst.
"uber" enthält eine optionale Überschrift. Die erste und
dritte Spalte werden in der Schriftart "BoldFont"
gedruckt. Wird dies nicht gewünscht, setzen Sie "BoldFont mit Hilfe
der Funktion "Assign" auf "NormalFont".
bool __fastcall PrintList (TListBox
*t);
bool __fastcall PrintList (TListBox *t,AnsiString uber);
Diese Methode druckt den Inhalt des übergebenen TListBox - Objekts inklusive einer optionalen Überschrift.
void __fastcall SetPrinterIndex (short index);
Diese Methode setzt den "PrinterIndex" (siehe Delphi bzw. C++ Builder Hilfe und ist vor allem dann nützlich, wenn der Druckerauswahldialog nicht angezeigt werden soll (es wird gleich drauf los gedruckt).
int __fastcall GetPrinterIndex ();
Diese Methode gibt den aktuellen "PrinterIndex" zurück.
Diese Methode beendet den Druck und muss immer dann aufgerufen werden, wenn "PrintInit" aufgerufen wurde.
bool __fastcall Print (TListView *tl);
bool __fastcall Print (TTreeView *tv);
bool __fastcall Print (TListView *tl,int von,int bis);
bool __fastcall Print (TTreeView *tv,int von,int bis);
Diese Methode druckt den Inhalt des übergebenen TListView- bzw.
TTreeView - Objekts, die optionalen Parameter "von" bzw. "bis" bezeichnen
den zu druckenden Index der Einträge des Objekts. Z.B. bedeuten die
Werte 5,100, dass ab dem fünften bis zum hundersten Eintrag alle "Items"
gedruckt werden.
Das ListView-Objekt muss den ViewStyle "vsReport" aufweisen.
Siehe auch "Options"
int __fastcall GetPageHeight ();
Diese Methode gibt die Höhe der zu druckenden Seite in absoluten Pixeln (nicht logischen) zurück
int __fastcall GetPageWidth ();
Diese Methode gibt die Breite der zu druckenden Seite in absoluten Pixeln (nicht logischen) zurück
Diese Methode löst einen Seitenvorschub aus.
Diese Methode muss am Beginn einer Druckopertion aufgerufen werden, wenn mehr als ein Objekt gedruckt werden soll, andernfalls wird diese Funktion intern aufgerufen. Wenn diese Methode aufgerufen wird, muss am Schluss des Druckvorgangs auch immer PrintEnd aufgerufen werden. Bricht der Anwender den Druckerauswahldialog ab, liefert PrintInit FALSE ansonsten TRUE zurück. Wollen Sie die Anzeige des Druckerauswahldialogs unterbinden, rufen Sie vor "PrintInit" "SetPrinterIndex" auf.
Beispiel:
void BeispielApplication.DruckeBeispiel_1 ()
{
EasyPrint->Print (TreeViewObject);
// Hier reicht der Aufruf von Print ()
}
void BeispielApplication.DruckeBeispiel_2 ()
{
if (!EasyPrint->Init ()) return;
// Mehr als ein Druckkommando, Aufruf von "PrintInit" erforderlich
EasyPrint->Print (TreeViewObject);
EasyPrint->NewLine ();
EasyPrint->Print (ListViewObject);
EasyPrint->PrintEnd ();
// Jetzt muss "PrintEnd" aufgerufen werden
}
void __fastcall SetFont (TFont *f);
Diese Methode ändert die aktuelle Schrift, indem die eingestellten
Werte des übergebenen TFont - Objekts übernommen werden.
void __fastcall GetFont (TFont *f);
Diese Methode liefert die aktuell eingestellte Schrift in TFont zurück. TFont muss ein gültiges Objekt sein.
Wenn gerade eine Tabelle gedruckt wird (siehe PrintTable), liefert diese
Methode die aktuelle Spalte züruck.
Werden gerade Kopfzeilen gedruckt, liefert diese Methode bei linksbündig
zu druckenden Kopfzeilen 0 und bei rechtsbündig ausgerichteten Kopfzeilen
1 zurück.
Wird gerade ein TListView - Objekt mit der Methode "Print"
gedruckt, wird die aktuelle Spalte zurückgegeben, wenn mit der Methode
"Print" ein TTreeView - Objekt gedruckt wird, liefert diese Methode den
Level des aktuell zu druckenden Items aus. In allen anderen Fällen
ist das Funktionsergebnis der Methode undefiniert.
Wenn gerade eine Tabelle gedruckt wird (siehe PrintTable), liefert diese
Methode die aktuelle Zeile züruck.
Werden gerade Kopfzeilen gedruckt, liefert diese Methode bei
der ersten Kopfzeile -3 und und bei der zweiten Kopfzeilen -2 zurück.
Wird gerade ein TListView- oder ein TTreeView- Objekt mit der Methode
"Print" gedruckt, wird die aktuelle Zeile zurückgegeben.
In allen anderen Fällen ist das Funktionsergebnis der Methode undefiniert.
void __fastcall NewLine (double t);
void __fastcall NewLine ()
Diese Methode bewirkt einen Zeilenvorschub. In der Variablen t kann
ein Faktor angegeben werden, mit dem der Wert "LineSpacing"
multipliziert wird, um einen vom Defaultwert abweichenden Zeilenabstand
zu erreichen.
ConfFileName: Name der Datei, aus
der die aktuellen Einstellungen zur Laufzeit geladen werden sollen.
Wenn der Anwender die Möglichkeit haben soll, das Druckbild selbst
zu verändern, können in diese Datei die aktuellen Einstellungen
des Anwenders eingetragen werden. Die Datei muss das Format der Struktur
"PrintConf" haben (zu finden in PrintConf.h). Die Einstellungen, die in
dieser Datei hinterlegt werden, überschreiben die Einstellungen, die
zur Entwurfszeit festgelegt werden. Das Programm "printconf.exe" liegt
im Sourcecode als C++ Builder 4 Projekt vor, bzw "printconf5.exe"
las C++ Builder 5 Projekt. Es demonstriert die Einstellung der Druckparameter
für das EasyPrint - Package. Dieses Programm können Sie direkt
oder modifiziert verwenden.
FrameLines: Einstellungen für die Randlinien
Bottom: Abstand der Randlinie vom unteren Rand des Blattes in logischen Pixeln.
Left: Abstand der Randlinie vom linken Rand des Blattes in logischen Pixeln.
Pen: Linienart und Stärke der Randlinien
PrintBottomFrameLine: Soll untere Randlinie gedruckt werden?
PrintLeftFrameLine: Soll linke Randlinie gedruckt werden?
PrintRightFrameLine: Soll rechte Randlinie gedruckt werden?
PrintTopFrameLine: Soll obere Randlinie gedruckt werden?
Header1: Text der ersten Kopfzeile
Header1Font: Schriftart der ersten Kopfzeile
Header2: Text der zweiten Kopfzeile
Header2Font: Schriftart der ersten Kopfzeile
HeadLineFont: Schriftart für Überschriften
LineSpacing: Zeilenabstand als Wert multipliziert mit der Zeilenhöhe einer fiktiven Zeile gedruckt mit der aktuellen Schriftart.
Margins: Abstand von den Papierrändern
in
logischen Pixeln.
Die Werte in Margins beschreiben ein Rechteck innerhalb dessen alles
gedruckt wird.
Bottom: unterer logischer Rand
Left: linker logischer Rand
Right: rechter logischer Rand
Top: oberer logischer Rand
TreeView: Optionen für Druck des Inhalts eines TreeView - Controls:Indent: Einrückung in logischen Pixeln für jeden Level des Baumes
Numbering: Wissenschaftliche Numerierung der einzelnen Einträge des TreeView
ParentHeadLine: Wenn ein Eintrag "Kinder" hat (also ein Elternknoten ist), wird er mit dem Schrifttyp "HeadLineFont" gedruckt
Pen: Linienart für PrintLines
PrintImages: Die Icons der TreeView - Einträge werden gedruckt
PrintLines: Die einzelnen Einträge des TreeView - Controls werden mit Linien verbunden (wie sie auf dem Bildschirm erscheinen).
PrintStateImages: Die "State" - Icons des TreeView - Control werden gedruckt (sofern vorhanden).
PrintLogo: Sie können auf jede
Seite ein Bitmap drucken
Bitmap: Zu druckendes TBitmap - Objekt
Bottom, Left, Right, Top: Rechteck in logischen Pixeln, in das das Bitmap gedruckt wird.