Пример #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 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);
 }
Пример #3
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);
        }