TEasyPrint Component 

Allgemeines

Schriften

TEasyPrint stellt 5 Schriften zur Verfügung, diese sind bestimmten Druckausgaben zugeordnet. Es gibt eine Schriftart für die erste Kopfzeile
(Header1Font), für die zweite Kopfzeile (Header2Font), für Überschriften (HeadLineFont), für Fettschrift (BoldFont) und für die Normalschrift (NormalFont).
Diese Schriften können jederzeit während des Programmablaufs geändert werden.

Internes Koordinatensystem

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.
 

Kopfzeilen

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.

Makros

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.
 

Methoden:

void __fastcall AbortPrinting ();

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.

void __fastcall PrintEnd ()

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

void __fastcall NewPage ();

Diese Methode löst einen Seitenvorschub aus.

bool __fastcall PrintInit ();

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.

 int __fastcall GetColumn ();

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.

 int __fastcall GetRow ();

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.
 
 
 
 
 

Properties

BoldFont:  Schrifteinstellungen für Fettschrift

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


Options:

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.

Events

AfterPrintHeader: Methode wird aufgerufen, nachdem die Kopfzeilen gedruckt wurden.
BeforeNewPage:  Methode wird aufgerufen, bevor ein Seitenvorschub erfolgt
BeforePrintHeader: Methode wird aufgerufen, bevor die Kofzeilen gedruckt werden
OnPrintEnd: Methode wird aufgerufen, bevor der Druck beendet wird.
OnPrintItem: Methode wird aufgerufen, bevor ein Stringobjekt gedruckt wird.
Wenn Sie den Inhalt des übergebenen AnsiString - Objekts überschreiben, wird der neue Inhalt anstatt des alten gedruckt. Ausserdem haben Sie hier Gelegenheit, die Schriftart zu wechseln usw..