Avatar billede medions Nybegynder
08. september 2004 - 13:18 Der er 1 løsning

Vedr. udskrivning at et ListView.

Hej,

Eer der en der har et eksempel, eller kan gi' et eksempel, på hvordan man printer dataen ud fra et listview.

Det skal være sådan at hvis der er flere data i listViewet end der kan stå på et A4 ark, så skal den automatisk hoppe over på side 2 og printe videre hvor den kom fra.

Jeg har prøvet mig lidt frem selv, så hvis i kan bruge nedenstående kode så er i velkommen:



        private void button2_Click(object sender, System.EventArgs e)
        {
            try
            {
                PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
                printPreviewDialog1.Document = this.printDocument1 ;
                printPreviewDialog1.FormBorderStyle = FormBorderStyle.Fixed3D ;
                printPreviewDialog1.SetBounds(20, 20, this.Width, this.Height);
                printPreviewDialog1.ShowDialog();
            }
            catch(Exception exp)
            {
                System.Console.WriteLine(exp.Message.ToString());
            }
        }

        private int counter = 0;
        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            float linesPerPage = 54;
            float linesPerPageTmp = linesPerPage;
            double TotalPages = listView1.Items.Count / linesPerPage;
            TotalPages = System.Math.Ceiling(TotalPages);

            int r=0;
            string sRowDesign = "1";
            for (r=1;r<=TotalPages;r++)
            {
                sRowDesign += "," + linesPerPage.ToString();
                linesPerPageTmp = linesPerPageTmp + linesPerPage;
            }
            //MessageBox.Show(sRowDesign);

            char[] sep = {','};
            //Generere hvor mange rows der skal tælles for hver side.
            String [] aRowDesign = sRowDesign.Split(sep);

            this.Focus();

            Font ManifestFont = new Font("Verdana", 12, FontStyle.Bold);
            SolidBrush drawBrush = new SolidBrush(Color.Black);

            if( counter <= TotalPages )
            {
                e.HasMorePages = true;
            }
            else
            {
                e.HasMorePages = false;
                counter = 0; // counter ++ tæller den op til 1
            }

            counter ++;
           
            try
            {
                int nWidth = printDocument1.PrinterSettings.DefaultPageSettings.PaperSize.Width;
                int nHeight = printDocument1.PrinterSettings.DefaultPageSettings.PaperSize.Height;
                RectangleF destRect = new Rectangle(0, 0, nWidth, nHeight);


                Pen aPen = new Pen(Brushes.Black, 1);

                // Skrifttypen.
                //Font ManifestFont = new Font("Verdana", 12, FontStyle.Bold);
                Font HeadLine = new Font("Verdana", 8, FontStyle.Bold);
                Font NormalFont_Small = new Font("Verdana", 8, FontStyle.Regular);
                Font NormalFont_Bold = new Font("Verdana", 12, FontStyle.Bold);

                // Penselen
                //SolidBrush drawBrush = new SolidBrush(Color.Black);
                   
                // Definere positionen (upper-left)
                float DLine1_x1 = 20.0F;
                float DLine1_y1 = 40.0F;
                float DLine1_x2 = 790.0F;
                float DLine1_y2 = 40.0F;

                // Skriver teksterne til skærmen:
                e.Graphics.DrawString((counter).ToString(), ManifestFont, drawBrush, new PointF(700.0F, 20.0F)); //Side tal.

                e.Graphics.DrawString("Manifest", ManifestFont, drawBrush, new PointF(20.0F, 20.0F));
                e.Graphics.DrawString("T & T", HeadLine, drawBrush, new PointF(20.0F, 50.0F));
                e.Graphics.DrawString("Kolli", HeadLine, drawBrush, new PointF(270.0F, 50.0F));
                e.Graphics.DrawString("Vægt ialt", HeadLine, drawBrush, new PointF(330.0F, 50.0F));
                e.Graphics.DrawString("Service", HeadLine, drawBrush, new PointF(420.0F, 50.0F));
                e.Graphics.DrawString("Modtager", HeadLine, drawBrush, new PointF(490.0F, 50.0F));
                e.Graphics.DrawString("Navn", HeadLine, drawBrush, new PointF(580.0F, 50.0F));

                e.Graphics.DrawLine(Pens.Black, DLine1_x1, DLine1_y1, DLine1_x2, DLine1_y2);
                MessageBox.Show(counter.ToString());
                if (counter <= TotalPages)
                {
                    for (int i=Convert.ToInt16(aRowDesign[counter]);i<=Convert.ToInt16(aRowDesign[counter+1]);i++)
                    {
                        if (listView1.Items[i].SubItems.Count > 10)
                        {
                            //Track & Trace nummer
                            e.Graphics.DrawString(listView1.Items[i].SubItems[0].Text, NormalFont_Small, Brushes.Black, 20.0F, 70.0F+((float)i*20), new StringFormat());

                            //Kolli
                            e.Graphics.DrawString(listView1.Items[i].SubItems[10].Text, NormalFont_Small, Brushes.Black, 270.0F, 70.0F+((float)i*20), new StringFormat());

                            //Vægt
                            e.Graphics.DrawString(listView1.Items[i].SubItems[11].Text, NormalFont_Small, Brushes.Black, 330.0F, 70.0F+((float)i*20), new StringFormat());

                            //Service
                            e.Graphics.DrawString(listView1.Items[i].SubItems[9].Text, NormalFont_Small, Brushes.Black, 420.0F, 70.0F+((float)i*20), new StringFormat());

                            //Modtager
                            e.Graphics.DrawString(listView1.Items[i].SubItems[3].Text, NormalFont_Small, Brushes.Black, 490.0F, 70.0F+((float)i*20), new StringFormat());

                            //Navn
                            e.Graphics.DrawString(listView1.Items[i].SubItems[4].Text, NormalFont_Small, Brushes.Black, 580.0F, 70.0F+((float)i*20), new StringFormat());
                        }
                    }
                }
            }

            catch( Exception e1 )
            {
                MessageBox.Show( e1.ToString() );
            }
        }


//>Rune
Avatar billede medions Nybegynder
13. september 2004 - 10:04 #1
Koden er blevet omskrevet til en anden.

//>Rune
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

IT-Universitetet i København

CIO