示例#1
0
        public void AddCell(DPrintItem item)
        {
            DPrintItemTableCell cell = new DPrintItemTableCell();

            cell.Item = item;
            _Cells.Add(cell);
        }
示例#2
0
        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;
                }
            }
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
 public void AddCell(DPrintItem cell)
 {
     _Cells.Add(cell);
 }
示例#5
0
        /// <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);
        }