تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] كيف يُمكن طباعة بيانات Datagridview عندما تكون البيانات أكثر من صفحة واحدة
#1
بسم الله الرحمن الرحيم
يا أهل الخير عندي مشكلة بسيطة عليكم إن شاء الله 
هذا الكود كتبه أحد الأفاضل لطباعة بيانات ال Datagridview يعمل بشكل جيد عندما تكون البيانات في صفحة واحدة وللأسف الشديد عندما تكون البيانات في إطار أكثر من صفحة تبدأ الطابعة في العد دون انتهاء ، فهل من فاعل خيرٍ يقوم بالتعديل على الكود حتى يقوم بطباعة أكثر من صفحة وجزاكم الله حيراً.



 Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim mRow As Integer = 0
        Dim newpage As Boolean = True
        With DataGridView1
            Dim fmt As StringFormat = New StringFormat(StringFormatFlags.LineLimit)
            fmt.LineAlignment = StringAlignment.Center
            fmt.Trimming = StringTrimming.EllipsisCharacter
            Dim y As Single = 230
            Do While mRow < .RowCount
                Dim row As DataGridViewRow = .Rows(mRow)
                Dim x As Single = 50
                Dim h As Single = 0
                For Each cell As DataGridViewCell In row.Cells
                    Dim rc As RectangleF = New RectangleF(x, y, cell.Size.Width, cell.Size.Height)
                    Dim rrc As RectangleF = New RectangleF(x, 210, cell.Size.Width, cell.Size.Height)
                    e.Graphics.DrawRectangle(Pens.Black, rc.Left, rc.Top, rc.Width, rc.Height)
                    e.Graphics.DrawString(DataGridView1.Columns(cell.ColumnIndex).HeaderText, .Font, Brushes.Black, rrc, fmt)
                    e.Graphics.DrawString(DataGridView1.Rows(cell.RowIndex).Cells(cell.ColumnIndex).FormattedValue.ToString(), .Font, Brushes.Black, rc, fmt)
                    'من هنا رسم كتابات و تفاصيل اخرى في القائمة
                    Dim Font As New System.Drawing.Font("arial ", 12)
                    Dim Font1 As New System.Drawing.Font("arial ", 10)

                    'Dim image As New Bitmap(filename:="hidd1.jpg")
                    'e.Graphics.DrawImage(image, 353, 30, 170, 150)
                    'e.Graphics.DrawString("Date:", Font, Brushes.Black, 50, 64)
                    'e.Graphics.DrawString(Today, Font, Brushes.Black, 92, 64)
                    'e.Graphics.DrawString("Date:", Font, Brushes.Black, 50, 80)
                    'e.Graphics.DrawString(DateString, Font, Brushes.Black, 92, 80)
                    'e.Graphics.DrawString("Hidd Consumer Society", Font, Brushes.Black, 340, 160)
                    'e.Graphics.DrawString("MM-DD-YYYY", Font1, Brushes.Black, 50, 99)
                    x += rc.Width
                    h = Math.Max(h, rc.Height)
                Next
                newpage = False
                y += h
                mRow += 1
                If y + h > e.MarginBounds.Bottom Then
                    e.HasMorePages = True
                    mRow -= 1
                    newpage = True
                    Exit Sub
                End If
            Loop
            mRow = 0
        End With

    End Sub



    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        PrintPreviewDialog1.Document = PrintDocument1
        PrintPreviewDialog1.ShowDialog()
    End Sub
عن أبي هريرة - رضي الله عنه - قال: قال رسول الله - صلى الله عليه وسلم -: ((كلمتان خفيفتان على اللسان، ثقيلتان في الميزان، حبيبتان إلى الرحمن: سبحان الله وبحمده، سبحان الله العظيم))؛ متفق عليه.

الرد
#2
تفضل الكود بعد التعدل
PHP كود :
Private Sub PrintDocument1_PrintPage(ByVal sender As System.ObjectByVal e As System.Drawing.Printing.PrintPageEventArgsHandles PrintDocument1.PrintPage
        static mRow 
As Integer 0
        With DataGridView1
            Dim fmt 
As StringFormat = New StringFormat(StringFormatFlags.LineLimit)
 
           fmt.LineAlignment StringAlignment.Center
            fmt
.Trimming StringTrimming.EllipsisCharacter
            Dim y 
As Single 230
            Do 
While mRow < .RowCount
                Dim row 
As DataGridViewRow = .Rows(mRow)
 
               Dim x As Single 50
                Dim h 
As Single 0
                For Each cell 
As DataGridViewCell In row.Cells
                    Dim rc 
As RectangleF = New RectangleF(xycell.Size.Widthcell.Size.Height)
 
                   Dim rrc As RectangleF = New RectangleF(x210cell.Size.Widthcell.Size.Height)
 
                   e.Graphics.DrawRectangle(Pens.Blackrc.Leftrc.Toprc.Widthrc.Height)
 
                   e.Graphics.DrawString(DataGridView1.Columns(cell.ColumnIndex).HeaderText, .FontBrushes.Blackrrcfmt)
 
                   e.Graphics.DrawString(DataGridView1.Rows(cell.RowIndex).Cells(cell.ColumnIndex).FormattedValue.ToString(), .FontBrushes.Blackrcfmt)
 
                   'من هنا رسم كتابات و تفاصيل اخرى في القائمة
                    Dim Font As New System.Drawing.Font("arial ", 12)
                    Dim Font1 As New System.Drawing.Font("arial ", 10)

                    '
Dim image As New Bitmap(filename:="hidd1.jpg")
 
                   'e.Graphics.DrawImage(image, 353, 30, 170, 150)
                    '
e.Graphics.DrawString("Date:"FontBrushes.Black5064)
 
                   'e.Graphics.DrawString(Today, Font, Brushes.Black, 92, 64)
                    '
e.Graphics.DrawString("Date:"FontBrushes.Black5080)
 
                   'e.Graphics.DrawString(DateString, Font, Brushes.Black, 92, 80)
                    '
e.Graphics.DrawString("Hidd Consumer Society"FontBrushes.Black340160)
 
                   'e.Graphics.DrawString("MM-DD-YYYY", Font1, Brushes.Black, 50, 99)
                    x += rc.Width
                    h = Math.Max(h, rc.Height)
                Next
                y += h
                mRow += 1
                If y + h > e.MarginBounds.Bottom Then
                    if  mRow < .RowCount then  e.HasMorePages = True
                    Exit Sub
                End If
            Loop
            mRow = 0
        End With

    End Sub



    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        PrintPreviewDialog1.Document = PrintDocument1
        PrintPreviewDialog1.ShowDialog()
    End Sub 
الرد
تم الشكر بواسطة: Hazem1 , Hazem1 , elgokr , السندبااد , اسامه الهرماوي
#3
أشكر حضرتك جدًا أخي الكريم عابر سبيل 2 ، جزاك الله خيراً وأكرمك الرحمن بالفردوس الأعلى.
عن أبي هريرة - رضي الله عنه - قال: قال رسول الله - صلى الله عليه وسلم -: ((كلمتان خفيفتان على اللسان، ثقيلتان في الميزان، حبيبتان إلى الرحمن: سبحان الله وبحمده، سبحان الله العظيم))؛ متفق عليه.

الرد
#4
الاخ عابر سبيل 2 ما قصر
فتحياتى له فيما يقدمه من مساعدة

تحياتى لكم
وتمنياتى لكم التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
تم الشكر بواسطة: essawq , عابر سبيل 2 , اسامه الهرماوي


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] قاعده البيانات لاتقوم بالحفظ من اول امر jassim316 0 11 منذ 4 ساعة مضت
آخر رد: jassim316
  [كود] طريقة البحث عن صورة في قاعدة البيانات access باستعمال صورة أخرى technomedia 6 94 منذ 10 ساعة مضت
آخر رد: elgokr
  استدعاء بيانات العميل الى جدول الفاتورة mostafa nada 8 166 19-02-19, 11:54 AM
آخر رد: asemshahen5
  [VB.NET] مشكلة فى عرض محتويات DataGridView فى TextBox mr_hso 8 164 18-02-19, 10:52 PM
آخر رد: nabil.1710
  مشكلة كود استيراد ملف اكسيل يقراء لغة واحدة فقط new_programer 4 68 18-02-19, 02:04 AM
آخر رد: new_programer
  [VB.NET] فتح ارتباط تشعبي موجود ضمن قاعدة البيانات اكسس EMADSSS 2 68 17-02-19, 09:32 PM
آخر رد: EMADSSS
  [VB.NET] رفع قاعدة بيانات علي جوجل دريف والاتصال بها من أكثر من جهاز محمد صلاح ابراهيم 4 363 17-02-19, 02:31 PM
آخر رد: sendbad100
  برجاء تجربة المثال المرفق لتصدير البيانات الى اكسيل new_programer 7 149 15-02-19, 08:09 PM
آخر رد: new_programer
  [سؤال] عرض الصورة من قاعدة البيانات محمد اسماعيل 3 87 15-02-19, 06:28 AM
آخر رد: princelovelorn
  تغيير كلمة المرور في الفيجوال بيسك مع قواعد البيانات عبدالله اااا 4 121 14-02-19, 06:46 PM
آخر رد: عبد العزيز البسكري

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم