public void AddCell(DPrintItem item) { DPrintItemTableCell cell = new DPrintItemTableCell(); cell.Item = item; _Cells.Add(cell); }
private void pDocument_PrintPage(object sender, PrintPageEventArgs e) { // Позицията на елемента за отпечатване float _PrintItemY = _PrintPageStartY; // Печата елементите for (; _PrintItemIndex < _Document.Items.Count; _PrintItemIndex++) { DPrintItem item = _Document.Items[_PrintItemIndex]; _PrintItemY = PrintItem(e, _PrintItemY, _PrintPageStartX, _PrintPageEndX, item); // Ако е достигнат края, се отваря нова стр. if (_PrintItemY > _PrintPageEndY) { // Брой отпечатани страници _PrintCountPage += 1; // Елемента за отпечатване _PrintItemIndex += 1; if (_IsPrintPreviewMode) { nud_Page.Maximum = _PrintCountPage; } e.HasMorePages = true; return; } } }
/// <summary> /// Принтиране на елемент /// </summary> private float PrintItem(PrintPageEventArgs e, float startY, float startX, float endX , DPrintItem item, Font parentFont = null, DPrintAlignment alignment = DPrintAlignment.None) { Type itemType = item.GetType(); // Текст if (itemType == typeof(DPrintItemText)) { DPrintItemText itemText = (DPrintItemText)item; if (itemText.PrintFont == null) { itemText.PrintFont = parentFont; } if (itemText.Alignment == DPrintAlignment.None) { itemText.Alignment = alignment; } return(PrintItemText(e, startY, startX, endX, itemText)); } // Таблица else if (itemType == typeof(DPrintItemTable)) { return(PrintItemTable(e, startY, startX, endX, (DPrintItemTable)item)); } // Празно място else if (itemType == typeof(DPrintItemBlank)) { return(PrintItemBlank(e, startY, startX, endX, (DPrintItemBlank)item)); } // от средата на стр. else if (itemType == typeof(DPrintFromMiddlePage)) { return(pDocument.DefaultPageSettings.PaperSize.Height / 2); } // DataTable else if (itemType == typeof(DPrintItemDataRow)) { return(PrintItemDataRow(e, startY, startX, endX, (DPrintItemDataRow)item)); } else { return(startY); } }
public void AddCell(DPrintItem cell) { _Cells.Add(cell); }
/// <summary> /// Принтир ред от DataTable /// </summary> private float PrintItemDataRow(PrintPageEventArgs e, float startY, float startX, float endX, DPrintItemDataRow item) { // Margins float startTableY = startY + item.Margins.Top; float startTableX = startX + item.Margins.Left; float endTableX = endX - item.Margins.Right; // край на таблицата по Y float endY = startTableY; PointF[] cols = item.DTable.GetColumns(startTableX, endTableX); for (int colIndex = 0; colIndex < cols.Length; colIndex++) { // Позиция на колоната PointF col = cols[colIndex]; // Принтира елемента if (colIndex < item.Cells.Count) { DPrintItem cell = item.Cells[colIndex]; DPrintAlignment columnAlignment = DPrintAlignment.None; if (item.DTable.Columns.Count > colIndex) { DPrintItemDataColumn column = item.DTable.Columns[colIndex]; columnAlignment = column.Alignment; } if (cell.BackgroundColor.IsEmpty) { cell.BackgroundColor = item.BackgroundColor; } if (item.CountTextLine > 1) { Type itemType = cell.GetType(); // Текст if (itemType == typeof(DPrintItemText)) { DPrintItemText cellText = (DPrintItemText)cell; cellText.CountTextLine = item.CountTextLine; } } float cellY = PrintItem(e, startY, col.X, col.Y, cell , item.DTable.CellFont, columnAlignment); // Максималната височина на клетката if (cellY > endY) { endY = cellY; } // Слага рамка на клетката if (item.CellBorder == DPrintBorderType.Solid) { PrintItemBorder(e.Graphics, col.X, startY, col.Y, endY); } } } // Слага рамка на реда if (item.Border == DPrintBorderType.Solid) { PrintItemBorder(e.Graphics, startX, startY, endX, endY); } return(endY); }