Exemplo n.º 1
0
        /// <summary>
        /// the majority of this Sub is calculating printed page ranges
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <remarks></remarks>
        private void pd_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            //'this removes the printed page margins
            pd.OriginAtMargins = true;
            pd.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(location.X, 0, location.Y, 0);

            pages = new Dictionary<int, pageDetails>();

            int maxWidth = Convert.ToInt32(pd.DefaultPageSettings.PrintableArea.Width) - 40;
            int maxHeight = Convert.ToInt32(pd.DefaultPageSettings.PrintableArea.Height - (titleHeight + 12)) - 100;

            int pageCounter = 0;
            pages.Add(pageCounter, new pageDetails { headerIndices = new List<int>() });

            int columnCounter = 0;

            int columnSum = 0;

            for (int c = 0; c <= lv.Columns.Count - 1; c++) {
            if (columnSum + lv.Columns[c].Width < maxWidth) {
                columnSum += lv.Columns[c].Width;
                columnCounter += 1;
            } else {
                pages[pageCounter] = new pageDetails {
                    columns = columnCounter,
                    rows = 0,
                    startCol = pages[pageCounter].startCol,
                    headerIndices = pages[pageCounter].headerIndices
                };
                columnSum = lv.Columns[c].Width;
                columnCounter = 1;
                pageCounter += 1;
                pages.Add(pageCounter, new pageDetails {
                    startCol = c,
                    headerIndices = new List<int>()
                });
            }
            if (c == lv.Columns.Count - 1) {
                if (pages[pageCounter].columns == 0) {
                    pages[pageCounter] = new pageDetails {
                        columns = columnCounter,
                        rows = 0,
                        startCol = pages[pageCounter].startCol,
                        headerIndices = pages[pageCounter].headerIndices
                    };
                }
            }
            }

            maxPagesWide = pages.Keys.Max() + 1;

            pageCounter = 0;

            int rowCounter = 0;
            int counter = 0;

            int itemHeight = lv.GetItemRect(0).Height;

            int rowSum = itemHeight;

            if (hasGroups)
            {
            for (int g = 0; g <= lv.Groups.Count - 1; g++)
            {
                rowSum += itemHeight + 6;
                pages[pageCounter].headerIndices.Add(counter);
                for (int r = 0; r <= lv.Groups[g].Items.Count - 1; r++)
                {
                    counter += 1;
                    if (rowSum + itemHeight < maxHeight)
                    {
                        rowSum += itemHeight;
                        rowCounter += 1;
                    }
                    else
                    {
                        pages[pageCounter] = new pageDetails
                        {
                            columns = pages[pageCounter].columns,
                            rows = rowCounter,
                            startCol = pages[pageCounter].startCol,
                            startRow = pages[pageCounter].startRow,
                            headerIndices = pages[pageCounter].headerIndices
                        };
                        for (int x = 1; x <= maxPagesWide - 1; x++)
                        {
                            pages[pageCounter + x] = new pageDetails
                            {
                                columns = pages[pageCounter + x].columns,
                                rows = rowCounter,
                                startCol = pages[pageCounter + x].startCol,
                                startRow = pages[pageCounter].startRow,
                                headerIndices = pages[pageCounter].headerIndices
                            };
                        }

                        pageCounter += maxPagesWide;
                        for (int x = 0; x <= maxPagesWide - 1; x++)
                        {
                            pages.Add(pageCounter + x, new pageDetails
                            {
                                columns = pages[x].columns,
                                rows = 0,
                                startCol = pages[x].startCol,
                                startRow = counter - 1,
                                headerIndices = new List<int>()
                            });
                        }

                        rowSum = itemHeight * 2 + itemHeight + 6;
                        rowCounter = 1;
                    }
                    if (counter == lv.Items.Count)
                    {
                        for (int x = 0; x <= maxPagesWide - 1; x++)
                        {
                            if (pages[pageCounter + x].rows == 0)
                            {
                                pages[pageCounter + x] = new pageDetails
                                {
                                    columns = pages[pageCounter + x].columns,
                                    rows = rowCounter,
                                    startCol = pages[pageCounter + x].startCol,
                                    startRow = pages[pageCounter + x].startRow,
                                    headerIndices = pages[pageCounter + x].headerIndices
                                };
                            }
                        }
                    }
                }
            }
            }
            else
            {
            for (int r = 0; r <= lv.Items.Count - 1; r++)
            {
                counter += 1;
                if (rowSum + itemHeight < maxHeight)
                {
                    rowSum += itemHeight;
                    rowCounter += 1;
                }
                else
                {
                    pages[pageCounter] = new pageDetails
                    {
                        columns = pages[pageCounter].columns,
                        rows = rowCounter,
                        startCol = pages[pageCounter].startCol,
                        startRow = pages[pageCounter].startRow
                    };
                    for (int x = 1; x <= maxPagesWide - 1; x++)
                    {
                        pages[pageCounter + x] = new pageDetails
                        {
                            columns = pages[pageCounter + x].columns,
                            rows = rowCounter,
                            startCol = pages[pageCounter + x].startCol,
                            startRow = pages[pageCounter].startRow
                        };
                    }

                    pageCounter += maxPagesWide;
                    for (int x = 0; x <= maxPagesWide - 1; x++)
                    {
                        pages.Add(pageCounter + x, new pageDetails
                        {
                            columns = pages[x].columns,
                            rows = 0,
                            startCol = pages[x].startCol,
                            startRow = counter - 1
                        });
                    }

                    rowSum = itemHeight * 2;
                    rowCounter = 1;
                }
                if (counter == lv.Items.Count)
                {
                    for (int x = 0; x <= maxPagesWide - 1; x++)
                    {
                        if (pages[pageCounter + x].rows == 0)
                        {
                            pages[pageCounter + x] = new pageDetails
                            {
                                columns = pages[pageCounter + x].columns,
                                rows = rowCounter,
                                startCol = pages[pageCounter + x].startCol,
                                startRow = pages[pageCounter + x].startRow
                            };
                        }
                    }
                }
            }

            }

            maxPagesTall = pages.Count / maxPagesWide;

            if (hasGroups)
            {
            items = new ListViewItem[] { };
            foreach (ListViewGroup g in lv.Groups)
            {
                items = items.Concat(g.Items.Cast<ListViewItem>().ToArray()).ToArray();
            }
            }
            else
            {
            items = lv.Items.Cast<ListViewItem>().ToArray();
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// the majority of this Sub is calculating printed page ranges
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <remarks></remarks>
        private void pd_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            //'this removes the printed page margins
            pd.OriginAtMargins             = true;
            pd.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(location.X, location.X, location.Y, location.Y);

            pages = new Dictionary <int, pageDetails>();

            int maxWidth  = Convert.ToInt32(pd.DefaultPageSettings.PrintableArea.Width) - (pd.DefaultPageSettings.Margins.Left + pd.DefaultPageSettings.Margins.Right + 40);
            int maxHeight = Convert.ToInt32(pd.DefaultPageSettings.PrintableArea.Height - (titleHeight + 12)) - (pd.DefaultPageSettings.Margins.Top + pd.DefaultPageSettings.Margins.Bottom + 40);

            int pageCounter = 0;

            pages.Add(pageCounter, new pageDetails {
                headerIndices = new List <int>()
            });

            int columnCounter = 0;

            int columnSum = 0;

            for (int c = 0; c <= lv.Columns.Count - 1; c++)
            {
                if (columnSum + lv.Columns[c].Width < maxWidth)
                {
                    columnSum     += lv.Columns[c].Width;
                    columnCounter += 1;
                }
                else
                {
                    pages[pageCounter] = new pageDetails {
                        columns       = columnCounter,
                        rows          = 0,
                        startCol      = pages[pageCounter].startCol,
                        headerIndices = pages[pageCounter].headerIndices
                    };
                    columnSum     = lv.Columns[c].Width;
                    columnCounter = 1;
                    pageCounter  += 1;
                    pages.Add(pageCounter, new pageDetails {
                        startCol      = c,
                        headerIndices = new List <int>()
                    });
                }
                if (c == lv.Columns.Count - 1)
                {
                    if (pages[pageCounter].columns == 0)
                    {
                        pages[pageCounter] = new pageDetails {
                            columns       = columnCounter,
                            rows          = 0,
                            startCol      = pages[pageCounter].startCol,
                            headerIndices = pages[pageCounter].headerIndices
                        };
                    }
                }
            }

            maxPagesWide = pages.Keys.Max() + 1;

            pageCounter = 0;

            int rowCounter = 0;
            int counter    = 0;

            int itemHeight = lv.GetItemRect(0).Height;

            int rowSum = itemHeight;

            if (hasGroups)
            {
                for (int g = 0; g <= lv.Groups.Count - 1; g++)
                {
                    rowSum += itemHeight + 6;
                    pages[pageCounter].headerIndices.Add(counter);
                    for (int r = 0; r <= lv.Groups[g].Items.Count - 1; r++)
                    {
                        counter += 1;
                        if (rowSum + itemHeight < maxHeight)
                        {
                            rowSum     += itemHeight;
                            rowCounter += 1;
                        }
                        else
                        {
                            pages[pageCounter] = new pageDetails
                            {
                                columns       = pages[pageCounter].columns,
                                rows          = rowCounter,
                                startCol      = pages[pageCounter].startCol,
                                startRow      = pages[pageCounter].startRow,
                                headerIndices = pages[pageCounter].headerIndices
                            };
                            for (int x = 1; x <= maxPagesWide - 1; x++)
                            {
                                pages[pageCounter + x] = new pageDetails
                                {
                                    columns       = pages[pageCounter + x].columns,
                                    rows          = rowCounter,
                                    startCol      = pages[pageCounter + x].startCol,
                                    startRow      = pages[pageCounter].startRow,
                                    headerIndices = pages[pageCounter].headerIndices
                                };
                            }

                            pageCounter += maxPagesWide;
                            for (int x = 0; x <= maxPagesWide - 1; x++)
                            {
                                pages.Add(pageCounter + x, new pageDetails
                                {
                                    columns       = pages[x].columns,
                                    rows          = 0,
                                    startCol      = pages[x].startCol,
                                    startRow      = counter - 1,
                                    headerIndices = new List <int>()
                                });
                            }

                            rowSum     = itemHeight * 2 + itemHeight + 6;
                            rowCounter = 1;
                        }
                        if (counter == lv.Items.Count)
                        {
                            for (int x = 0; x <= maxPagesWide - 1; x++)
                            {
                                if (pages[pageCounter + x].rows == 0)
                                {
                                    pages[pageCounter + x] = new pageDetails
                                    {
                                        columns       = pages[pageCounter + x].columns,
                                        rows          = rowCounter,
                                        startCol      = pages[pageCounter + x].startCol,
                                        startRow      = pages[pageCounter + x].startRow,
                                        headerIndices = pages[pageCounter + x].headerIndices
                                    };
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                for (int r = 0; r <= lv.Items.Count - 1; r++)
                {
                    counter += 1;
                    if (rowSum + itemHeight < maxHeight)
                    {
                        rowSum     += itemHeight;
                        rowCounter += 1;
                    }
                    else
                    {
                        pages[pageCounter] = new pageDetails
                        {
                            columns  = pages[pageCounter].columns,
                            rows     = rowCounter,
                            startCol = pages[pageCounter].startCol,
                            startRow = pages[pageCounter].startRow
                        };
                        for (int x = 1; x <= maxPagesWide - 1; x++)
                        {
                            pages[pageCounter + x] = new pageDetails
                            {
                                columns  = pages[pageCounter + x].columns,
                                rows     = rowCounter,
                                startCol = pages[pageCounter + x].startCol,
                                startRow = pages[pageCounter].startRow
                            };
                        }

                        pageCounter += maxPagesWide;
                        for (int x = 0; x <= maxPagesWide - 1; x++)
                        {
                            pages.Add(pageCounter + x, new pageDetails
                            {
                                columns  = pages[x].columns,
                                rows     = 0,
                                startCol = pages[x].startCol,
                                startRow = counter - 1
                            });
                        }

                        rowSum     = itemHeight * 2;
                        rowCounter = 1;
                    }
                    if (counter == lv.Items.Count)
                    {
                        for (int x = 0; x <= maxPagesWide - 1; x++)
                        {
                            if (pages[pageCounter + x].rows == 0)
                            {
                                pages[pageCounter + x] = new pageDetails
                                {
                                    columns  = pages[pageCounter + x].columns,
                                    rows     = rowCounter,
                                    startCol = pages[pageCounter + x].startCol,
                                    startRow = pages[pageCounter + x].startRow
                                };
                            }
                        }
                    }
                }
            }

            maxPagesTall = pages.Count / maxPagesWide;

            if (hasGroups)
            {
                items = new ListViewItem[] { };
                foreach (ListViewGroup g in lv.Groups)
                {
                    items = items.Concat(g.Items.Cast <ListViewItem>().ToArray()).ToArray();
                }
            }
            else
            {
                items = lv.Items.Cast <ListViewItem>().ToArray();
            }
        }
Exemplo n.º 3
0
        /// <summary>
        ///  build class pageDetails and add it
        /// </summary>
        /// <param name="myname"></param>
        /// <param name="mylink"></param>
        /// <param name="myclass"></param>
        public void AddPage(string myname, string mylink, string myclass)
        {
            pageDetails MyPage = new pageDetails(myname, mylink, myclass);

            AddPage(MyPage);
        }
Exemplo n.º 4
0
        /// <summary>
        /// the majority of this Sub is calculating printed page ranges
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <remarks></remarks>
        private void PrintDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            //'this removes the printed page margins
            PrintDocument1.OriginAtMargins             = true;
            PrintDocument1.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);

            pages = new Dictionary <int, pageDetails>();

            int maxWidth  = Convert.ToInt32(PrintDocument1.DefaultPageSettings.PrintableArea.Width) - 40;
            int maxHeight = Convert.ToInt32(PrintDocument1.DefaultPageSettings.PrintableArea.Height) - 150 + Label1.Height;

            int pageCounter = 0;

            pages.Add(pageCounter, new pageDetails());

            int columnCounter = 0;

            int columnSum = GVHerb.RowHeadersWidth;

            for (int c = 0; c <= GVHerb.Columns.Count - 1; c++)
            {
                if (columnSum + GVHerb.Columns[c].Width < maxWidth)
                {
                    columnSum     += GVHerb.Columns[c].Width;
                    columnCounter += 1;
                }
                else
                {
                    pages[pageCounter] = new pageDetails
                    {
                        columns  = columnCounter,
                        rows     = 0,
                        startCol = pages[pageCounter].startCol
                    };
                    columnSum     = GVHerb.RowHeadersWidth + GVHerb.Columns[c].Width;
                    columnCounter = 1;
                    pageCounter  += 1;
                    pages.Add(pageCounter, new pageDetails {
                        startCol = c
                    });
                }
                if (c == GVHerb.Columns.Count - 1)
                {
                    if (pages[pageCounter].columns == 0)
                    {
                        pages[pageCounter] = new pageDetails
                        {
                            columns  = columnCounter,
                            rows     = 0,
                            startCol = pages[pageCounter].startCol
                        };
                    }
                }
            }

            maxPagesWide = pages.Keys.Max() + 1;

            pageCounter = 0;

            int rowCounter = 0;

            int rowSum = GVHerb.ColumnHeadersHeight;

            for (int r = 0; r <= GVHerb.Rows.Count - 2; r++)
            {
                if (rowSum + GVHerb.Rows[r].Height < maxHeight)
                {
                    rowSum     += GVHerb.Rows[r].Height;
                    rowCounter += 1;
                }
                else
                {
                    pages[pageCounter] = new pageDetails
                    {
                        columns  = pages[pageCounter].columns,
                        rows     = rowCounter,
                        startCol = pages[pageCounter].startCol,
                        startRow = pages[pageCounter].startRow
                    };
                    for (int x = 1; x <= maxPagesWide - 1; x++)
                    {
                        pages[pageCounter + x] = new pageDetails
                        {
                            columns  = pages[pageCounter + x].columns,
                            rows     = rowCounter,
                            startCol = pages[pageCounter + x].startCol,
                            startRow = pages[pageCounter + x].startRow
                        };
                    }

                    pageCounter += maxPagesWide;
                    for (int x = 0; x <= maxPagesWide - 1; x++)
                    {
                        pages.Add(pageCounter + x, new pageDetails
                        {
                            columns  = pages[x].columns,
                            rows     = 0,
                            startCol = pages[x].startCol,
                            startRow = r
                        });
                    }

                    rowSum     = GVHerb.ColumnHeadersHeight + GVHerb.Rows[r].Height;
                    rowCounter = 1;
                }
                if (r == GVHerb.Rows.Count - 2)
                {
                    for (int x = 0; x <= maxPagesWide - 1; x++)
                    {
                        if (pages[pageCounter + x].rows == 0)
                        {
                            pages[pageCounter + x] = new pageDetails
                            {
                                columns  = pages[pageCounter + x].columns,
                                rows     = rowCounter,
                                startCol = pages[pageCounter + x].startCol,
                                startRow = pages[pageCounter + x].startRow
                            };
                        }
                    }
                }
            }

            maxPagesTall = pages.Count / maxPagesWide;
        }
Exemplo n.º 5
0
 /// <summary>
 ///  add class pageDetails
 /// </summary>
 /// <param name="MyPage"></param>
 public void AddPage(pageDetails MyPage)
 {
     MyPages.Add(MyPage);
 }