コード例 #1
0
        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);
        }
コード例 #2
0
        public void AddItemText(string text, Font printFont = null, DPrintAlignment alignment = DPrintAlignment.None)
        {
            DPrintItemText item = new DPrintItemText();

            item.Text      = text;
            item.PrintFont = printFont;
            item.Alignment = alignment;

            _Items.Add(item);
        }
コード例 #3
0
        public DPrintItemTableColumn AddColumn(string name, float width, DPrintAlignment alignment = DPrintAlignment.None)
        {
            DPrintItemTableColumn column = new DPrintItemTableColumn();

            column.Name      = name;
            column.Width     = width;
            column.Alignment = alignment;

            _Columns.Add(column);
            return(column);
        }
コード例 #4
0
        private StringAlignment CastToStringAlignment(DPrintAlignment value)
        {
            switch (value)
            {
            case DPrintAlignment.Far:
                return(StringAlignment.Far);

            case DPrintAlignment.Center:
                return(StringAlignment.Center);

            case DPrintAlignment.Near:
            default:
                return(StringAlignment.Near);
            }
        }
コード例 #5
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);
            }
        }
コード例 #6
0
        /// <summary>
        /// Принтиране на ред от таблица
        /// </summary>
        private float PrintItemTableRow(PrintPageEventArgs e, float startY, PointF[] cols
                                        , DPrintItemTableRow item, DPrintItemTable table)
        {
            float maxCellY = startY;

            // Принтира данните на клетката
            for (int colIndex = 0; colIndex < cols.Length; colIndex++)
            {
                // Позиция на колоната
                PointF col = cols[colIndex];
                // Принтира елемента
                if (colIndex < item.Cells.Count)
                {
                    DPrintItemTableCell cell            = item.Cells[colIndex];
                    DPrintAlignment     columnAlignment = DPrintAlignment.None;
                    if (table.Columns.Count > colIndex)
                    {
                        DPrintItemTableColumn column = table.Columns[colIndex];
                        columnAlignment = column.Alignment;
                    }
                    float cellY = PrintItem(e, startY, col.X, col.Y, cell.Item
                                            , table.CellFont, columnAlignment);
                    // Максималната височина на клетката
                    if (cellY > maxCellY)
                    {
                        maxCellY = cellY;
                    }
                }
            }
            // Слага рамка на клетките
            if (table.CellBorder == DPrintBorderType.Solid)
            {
                for (int colIndex = 0; colIndex < cols.Length; colIndex++)
                {
                    // Позиция на колоната
                    PointF col = cols[colIndex];
                    PrintItemBorder(e.Graphics, col.X, startY, col.Y, maxCellY);
                }
            }
            return(maxCellY);
        }
コード例 #7
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);
        }