using System; using System.Collections.Generic; using System.Globalization; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using GCHR.Model.Konto; namespace GCHR.Control.Printing { public class PageElement : UserControl { private const int PageMargin = 75; private const int HeaderHeight = 25; private const int LineHeight = 20; private const int ColumnWidth1 = 75; private const int ColumnWidth2 = 350; private const int ColumnWidth3 = 100; private const int ColumnWidth4 = 100; private readonly int _currentRow; private readonly int _rows; private readonly List _konten; private readonly String _aktuellePeriode; private readonly String _altePeriode; public PageElement(int currentRow, int rows, List konten, String aktuellePeriode, String altePeriode) { //Console.WriteLine("Test"); Margin = new Thickness(PageMargin); _currentRow = currentRow; _rows = rows; _konten = konten; _aktuellePeriode = aktuellePeriode; _altePeriode = altePeriode; } public static int RowsPerPage(double height) { return (int)Math.Floor((height - (2 * PageMargin) - HeaderHeight) / LineHeight); } private static FormattedText MakeText(string text, bool rechtsbündig) { if (rechtsbündig) return new FormattedText(text, CultureInfo.CurrentCulture, FlowDirection.RightToLeft, new Typeface("Tahoma"), 10, Brushes.Black); return new FormattedText(text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface("Tahoma"), 10, Brushes.Black); } protected override void OnRender(DrawingContext dc) { var curPoint = new Point(0, 0); dc.DrawText(MakeText("Kontonummer", false), curPoint); curPoint.X += ColumnWidth1; /*for (int i = 1; i < 4; i++) { dc.DrawText(MakeText("Column " + i), curPoint); curPoint.X += ColumnWidth; }*/ dc.DrawText(MakeText("Beschriftung", false), curPoint); curPoint.X += ColumnWidth2; curPoint.X += ColumnWidth3; String temp = "Neuer Wert - " + _aktuellePeriode; dc.DrawText(MakeText(temp, true), curPoint); curPoint.X += ColumnWidth4; temp = "Vormonat - " + _altePeriode; dc.DrawText(MakeText(temp, true), curPoint); curPoint.X = 0; curPoint.Y += LineHeight; dc.DrawRectangle(Brushes.Black, null, new Rect(curPoint, new Size(Width, 2))); curPoint.Y += HeaderHeight - LineHeight; // var numberGen = new Random(); for (var i = _currentRow; i < _currentRow + _rows; i++) { HaendlerKonto konto = _konten[i]; //Console.WriteLine("Aktuell: " + konto.Kontonummer); //dc.DrawText(MakeText(i.ToString()), curPoint); dc.DrawText(MakeText(konto.Kontonummer, false), curPoint); curPoint.X += ColumnWidth1; dc.DrawText(MakeText(konto.Bezeichnung, false), curPoint); curPoint.X += ColumnWidth2; curPoint.X += ColumnWidth3; dc.DrawText(MakeText(konto.Soll.ToString("0.00"), true), curPoint); curPoint.X += ColumnWidth4; dc.DrawText(MakeText(konto.Haben.ToString("0.00"), true), curPoint); /*for (int j = 1; j < 4; j++) { dc.DrawText(MakeText(numberGen.Next().ToString()), curPoint); curPoint.X += ColumnWidth; }*/ curPoint.Y += LineHeight; curPoint.X = 0; } } } }