public void AddColumn(string name, float width, DPrintAlignment alignment) { DPrintItemDataColumn column = new DPrintItemDataColumn(); column.Name = name; column.Width = width; column.Alignment = alignment; _Columns.Add(column); }
public PointF[] GetColumns(float startTableX, float endTableX) { PointF[] cols = null; // има дефинирани колони if (_Columns.Count > 0) { // формира колоните cols = new PointF[_Columns.Count]; float cellX = startTableX; // Ако колоните са с фиксиран размер if (_ColumnsWidthType == DPrintSizeType.Fixed) { for (int i = 0; i < _Columns.Count; i++) { DPrintItemDataColumn column = _Columns[i]; cols[i].X = cellX; cellX += column.Width; cols[i].Y = cellX; } } // Ако колоните са с процентен размер else { // ширина на таблицата float tableWidth = (endTableX - startTableX); for (int i = 0; i < _Columns.Count; i++) { DPrintItemDataColumn column = _Columns[i]; cols[i].X = cellX; cellX += (tableWidth * column.Width / 100); cols[i].Y = cellX; } } } return(cols); }
/// <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); }