SharpDevelop Community

Get your problems solved!
Welcome to SharpDevelop Community Sign in | Join | Help
in Search

I can not print all pages

Last post 08-26-2008 8:20 PM by ematrix. 0 replies.
Page 1 of 1 (1 items)
Sort Posts: Previous Next
  • 08-26-2008 8:20 PM

    I can not print all pages

      I need help with programming in C # program SharpDevelop,
    as print the full contents of the ranks datagridview with a header as this block of code
    google search for prints and works part. I explain:

    a. - if the datagridview has less than 22 Rows prints (use class preview) better and complete the road and only one sheet should print
    b. - if the datagridview has 59 rows me prints (use class preview) several sheets and I always Printed and cancel all leaves, the contents of the first page
    I think I reset any accountant or content of the buffer or something.

    The program has a button that calls the routine imprime_inventario.
    if they can see the code shown what I show.
    I am hoping to help them appreciate their contribution.
    Thanks Friends.


    Atte.
    Matrix

     

    private void imprime_inventario(object sender,  PrintPageEventArgs e)
            {
                ArrayList arrColumnLefts=new ArrayList();
                ArrayList arrColumnWidths=new ArrayList();
                int    iCellHeight=0;
                int    iCount=0;
                bool bFirstPage =true;
                bool bNewPage=true;
                int iTotalWidth=0;
                foreach (DataGridViewColumn dgvGridCol in dataGridView1.Columns) {
                    iTotalWidth +=dgvGridCol.Width;
                }
                StringFormat strFormat=new StringFormat();
                strFormat.Alignment=StringAlignment.Near;
                strFormat.LineAlignment=StringAlignment.Center;
                strFormat.Trimming=StringTrimming.EllipsisCharacter;
                int iLeftMargin = e.MarginBounds.Left;
                int iTopMargin = e.MarginBounds.Top;
                bool bMorePagesToPrint=false;
                int iTmpWidth=0;
                int iHeaderHeight=0;
                arrColumnLefts.Clear();
                arrColumnWidths.Clear();
                Font PrintFont=new Font(dataGridView1.Font,FontStyle.Bold);
                if(bFirstPage){
                foreach(DataGridViewColumn GridCol in dataGridView1.Columns) {
                        iTmpWidth=(int)(Math.Floor((double)((double)GridCol.Width/(double)iTotalWidth * (double)iTotalWidth* ((double)e.MarginBounds.Width/(double)iTotalWidth))));
                        iHeaderHeight=(int)(e.Graphics.MeasureString(GridCol.HeaderText,GridCol.InheritedStyle.Font,iTmpWidth).Height)+11;
                        arrColumnLefts.Add(iLeftMargin);
                        arrColumnWidths.Add(iTmpWidth);
                        iLeftMargin +=iTmpWidth;
                    }
                }
               
                           
            int iRow =0;
            float linePerPage=(e.MarginBounds.Height/PrintFont.GetHeight(e.Graphics));
            while (iRow <=dataGridView1.Rows.Count-1)  {
                    DataGridViewRow GridRow=dataGridView1.Rows[iRow];
                    iCellHeight=GridRow.Height+5;
                    if(iTopMargin+iCellHeight>=e.MarginBounds.Height+e.MarginBounds.Top){
                        bNewPage=true;
                        bFirstPage=false;
                        bMorePagesToPrint=true;
                        break;
                    }
                    else{
                        if(bNewPage){
                            e.Graphics.DrawString("MARBETE",new Font(dataGridView1.Font,FontStyle.Bold),Brushes.Black,e.MarginBounds.Left,e.MarginBounds.Top-e.Graphics.MeasureString("MARBETE",new Font(dataGridView1.Font,FontStyle.Bold),e.MarginBounds.Width).Height-13);
                            String strDate =DateTime.Now.ToLongDateString()+""+DateTime.Now.ToShortDateString();
                            e.Graphics.DrawString(strDate,new Font(dataGridView1.Font,FontStyle.Bold),Brushes.Black,e.MarginBounds.Left+(e.MarginBounds.Width-e.Graphics.MeasureString(strDate, new Font(dataGridView1.Font,FontStyle.Bold),e.MarginBounds.Width).Width),e.MarginBounds.Top-e.Graphics.MeasureString("MARBETE",new Font(dataGridView1.Font,FontStyle.Bold),e.MarginBounds.Width).Height-13);
                            iTopMargin=e.MarginBounds.Top;
                            foreach(DataGridViewColumn GridCol in dataGridView1.Columns){
                                e.Graphics.FillRectangle(new SolidBrush(Color.LightGray), new Rectangle((int)arrColumnLefts[iCount],iTopMargin,(int)arrColumnWidths[iCount],iHeaderHeight));
                                e.Graphics.DrawRectangle(Pens.Black,new Rectangle((int)arrColumnLefts[iCount],iTopMargin,(int)arrColumnWidths[iCount],iHeaderHeight));
                                e.Graphics.DrawString(GridCol.HeaderText,GridCol.InheritedStyle.Font,new SolidBrush(GridCol.InheritedStyle.ForeColor), new RectangleF((int)arrColumnLefts[iCount],iTopMargin,(int)arrColumnWidths[iCount],iHeaderHeight), strFormat);
                                //new SolidBrush(Color.ForestGreen)
                                iCount++;
                            }
                            bNewPage=false;
                            iTopMargin+=iHeaderHeight;
                        }//Fin If
                        iCount=0;
                   
                    foreach(DataGridViewCell Cel in GridRow.Cells){
                        if(Cel.Value !=null){
                            e.Graphics.DrawString(Cel.Value.ToString(),Cel.InheritedStyle.Font, new SolidBrush(Cel.InheritedStyle.ForeColor), new RectangleF((int)arrColumnLefts[iCount],(float)iTopMargin,(int)arrColumnWidths[iCount],(float)iCellHeight),strFormat);
                        }
                        e.Graphics.DrawRectangle(Pens.Black,new Rectangle((int)arrColumnLefts[iCount],iTopMargin,(int)arrColumnWidths[iCount],iCellHeight));
                        iCount++;
                       }
                    }//fin Else
                    iRow++;
                    iTopMargin+=iCellHeight;
                }    //Fin while   
            if(bMorePagesToPrint)
                e.HasMorePages=true;
            else
                e.HasMorePages=false;
            }
           
           
    void Button2Click(object sender,  EventArgs e)
        {
        PrintPreviewDialog dlg = new PrintPreviewDialog();   
        PrintDocument PD =new PrintDocument();
        PD.PrinterSettings.FromPage=0;
        PD.PrinterSettings.ToPage=0;
        PD.PrinterSettings.PrintRange=PrintRange.AllPages;
        PD.DefaultPageSettings.Landscape=true;
        PD.PrintPage += new PrintPageEventHandler(this.imprime_inventario);   
        dlg.Document=PD;
        dlg.ShowDialog();
        }//Fin boton Imprimir

     

Page 1 of 1 (1 items)
Powered by Community Server (Commercial Edition), by Telligent Systems
Don't contact us via this (fleischfalle@alphasierrapapa.com) email address.