تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكلة فى كود الطباعة المباشرة
#1
السلام عليكم ورحمة الله وبركاته 

طباعة من الداتا جريد فيو حصلت لها كود و لكن عند استعماله يظهر خطا 
برجاء المساعدة حول هذا الامر

مرفق الملف


الملفات المرفقة
.rar   test_print.rar (الحجم : 95.25 ك ب / التحميلات : 6)
الرد
تم الشكر بواسطة:
#2
المشكلة كانت في السطر رقم 182
كود :
               e.Graphics.DrawString(DataGridView1.Rows(r).HeaderCell.Value.ToString , DataGridView1.Font, Brushes.Black, cell, sf)

كلما بحث عن القيمة وجدها nothing
وتم حلها بالتحقق اولا من القيمة اذا كانت لاشيء نقوم برسم نص فارغ 
كود :
               e.Graphics.DrawString(If(DataGridView1.Rows(r).HeaderCell.Value, String.Empty), DataGridView1.Font, Brushes.Black, cell, sf)


الملفات المرفقة
.zip   test_print.zip (الحجم : 97.2 ك ب / التحميلات : 20)
الرد
#3
(28-09-20, 12:47 AM)Anas Mahmoud كتب : المشكلة كانت في السطر رقم 182
كود :
               e.Graphics.DrawString(DataGridView1.Rows(r).HeaderCell.Value.ToString , DataGridView1.Font, Brushes.Black, cell, sf)

كلما بحث عن القيمة وجدها nothing
وتم حلها بالتحقق اولا من القيمة اذا كانت لاشيء نقوم برسم نص فارغ 
كود :
               e.Graphics.DrawString(If(DataGridView1.Rows(r).HeaderCell.Value, String.Empty), DataGridView1.Font, Brushes.Black, cell, sf)
شكرا استاذنا الغالي 
جعلها الله فى ميزان حسناتك
الرد
تم الشكر بواسطة: ابراهيم ايبو
#4
هذا الكود استاذي واخي انس هذا الكود يطبع طوليا كيف يتم الطباعة عرض

اين يحتاج التعديل في المثال السابق بارك الله فيك


وشكرا

PHP كود :
   Private Sub PrintDocument1_PrintPage(ByVal sender As System.ObjectByVal e As System.Drawing.Printing.PrintPageEventArgsHandles PrintDocument1.PrintPage
        Dim rect 
As New Rectangle(2020CInt(PrintDocument1.DefaultPageSettings.PrintableArea.Width), Label1.Height)
 
       Dim sf As New StringFormat
        sf
.Alignment StringAlignment.Center
        sf
.LineAlignment StringAlignment.Center

        e
.Graphics.DrawString(Label1.TextLabel1.FontBrushes.Blackrectsf)

 
       sf.Alignment StringAlignment.Near

        Dim startX 
As Integer 50
        Dim startY 
As Integer rect.Bottom

        Static startPage 
As Integer 0

        For p 
As Integer startPage To pages.Count 1
            Dim cell 
As New Rectangle(startXstartYDataGridView1.RowHeadersWidthDataGridView1.ColumnHeadersHeight)
 
           e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
 
           e.Graphics.DrawRectangle(Pens.Blackcell)

 
           startY += DataGridView1.ColumnHeadersHeight

            For r 
As Integer pages(p).startRow To pages(p).startRow pages(p).rows 1
                cell 
= New Rectangle(startXstartYDataGridView1.RowHeadersWidthDataGridView1.Rows(r).Height)
 
               e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
 
               e.Graphics.DrawRectangle(Pens.Blackcell)
 
               e.Graphics.DrawString(If(DataGridView1.Rows(r).HeaderCell.ValueString.Empty), DataGridView1.FontBrushes.Blackcellsf)
 
               startY += DataGridView1.Rows(r).Height
            Next

            startX 
+= cell.Width
            startY 
rect.Bottom

            For c 
As Integer pages(p).startCol To pages(p).startCol pages(p).columns 1
                cell 
= New Rectangle(startXstartYDataGridView1.Columns(c).WidthDataGridView1.ColumnHeadersHeight)
 
               e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
 
               e.Graphics.DrawRectangle(Pens.Blackcell)
 
               e.Graphics.DrawString(DataGridView1.Columns(c).HeaderCell.Value.ToStringDataGridView1.FontBrushes.Blackcellsf)
 
               startX += DataGridView1.Columns(c).Width
            Next

            startY 
rect.Bottom DataGridView1.ColumnHeadersHeight

            For r 
As Integer pages(p).startRow To pages(p).startRow pages(p).rows 1
                startX 
50 DataGridView1.RowHeadersWidth
                For c 
As Integer pages(p).startCol To pages(p).startCol pages(p).columns 1
                    cell 
= New Rectangle(startXstartYDataGridView1.Columns(c).WidthDataGridView1.Rows(r).Height)
 
                   e.Graphics.DrawRectangle(Pens.Blackcell)
 
                   e.Graphics.DrawString(DataGridView1(cr).Value.ToStringDataGridView1.FontBrushes.Blackcellsf)
 
                   startX += DataGridView1.Columns(c).Width
                Next
                startY 
+= DataGridView1.Rows(r).Height
            Next

            If p 
<> pages.Count 1 Then
                startPage 
1
                e
.HasMorePages True
                Return
            Else
                startPage 
0
            End 
If

 
       Next

    End Sub 
زر الطباعة
PHP كود :
   Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        Dim ppd 
As New PrintPreviewDialog
        ppd
.Document PrintDocument1
        ppd
.WindowState FormWindowState.Maximized
        ppd
.ShowDialog()


 
 
   End Sub 

ظهور خطأ ارجو تعديل الخطا كما في الصورة


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة: ابراهيم ايبو , ابراهيم ايبو
#5
اخي انس ارجو الرد
الرد
تم الشكر بواسطة:
#6
(15-10-20, 12:52 AM)عمور2016 كتب : هذا الكود استاذي واخي انس هذا الكود يطبع طوليا كيف يتم الطباعة عرض

اين يحتاج التعديل في المثال السابق بارك الله فيك


وشكرا

PHP كود :
   Private Sub PrintDocument1_PrintPage(ByVal sender As System.ObjectByVal e As System.Drawing.Printing.PrintPageEventArgsHandles PrintDocument1.PrintPage
        Dim rect 
As New Rectangle(2020CInt(PrintDocument1.DefaultPageSettings.PrintableArea.Width), Label1.Height)
 
       Dim sf As New StringFormat
        sf
.Alignment StringAlignment.Center
        sf
.LineAlignment StringAlignment.Center

        e
.Graphics.DrawString(Label1.TextLabel1.FontBrushes.Blackrectsf)

 
       sf.Alignment StringAlignment.Near

        Dim startX 
As Integer 50
        Dim startY 
As Integer rect.Bottom

        Static startPage 
As Integer 0

        For p 
As Integer startPage To pages.Count 1
            Dim cell 
As New Rectangle(startXstartYDataGridView1.RowHeadersWidthDataGridView1.ColumnHeadersHeight)
 
           e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
 
           e.Graphics.DrawRectangle(Pens.Blackcell)

 
           startY += DataGridView1.ColumnHeadersHeight

            For r 
As Integer pages(p).startRow To pages(p).startRow pages(p).rows 1
                cell 
= New Rectangle(startXstartYDataGridView1.RowHeadersWidthDataGridView1.Rows(r).Height)
 
               e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
 
               e.Graphics.DrawRectangle(Pens.Blackcell)
 
               e.Graphics.DrawString(If(DataGridView1.Rows(r).HeaderCell.ValueString.Empty), DataGridView1.FontBrushes.Blackcellsf)
 
               startY += DataGridView1.Rows(r).Height
            Next

            startX 
+= cell.Width
            startY 
rect.Bottom

            For c 
As Integer pages(p).startCol To pages(p).startCol pages(p).columns 1
                cell 
= New Rectangle(startXstartYDataGridView1.Columns(c).WidthDataGridView1.ColumnHeadersHeight)
 
               e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell)
 
               e.Graphics.DrawRectangle(Pens.Blackcell)
 
               e.Graphics.DrawString(DataGridView1.Columns(c).HeaderCell.Value.ToStringDataGridView1.FontBrushes.Blackcellsf)
 
               startX += DataGridView1.Columns(c).Width
            Next

            startY 
rect.Bottom DataGridView1.ColumnHeadersHeight

            For r 
As Integer pages(p).startRow To pages(p).startRow pages(p).rows 1
                startX 
50 DataGridView1.RowHeadersWidth
                For c 
As Integer pages(p).startCol To pages(p).startCol pages(p).columns 1
                    cell 
= New Rectangle(startXstartYDataGridView1.Columns(c).WidthDataGridView1.Rows(r).Height)
 
                   e.Graphics.DrawRectangle(Pens.Blackcell)
 
                   e.Graphics.DrawString(DataGridView1(cr).Value.ToStringDataGridView1.FontBrushes.Blackcellsf)
 
                   startX += DataGridView1.Columns(c).Width
                Next
                startY 
+= DataGridView1.Rows(r).Height
            Next

            If p 
<> pages.Count 1 Then
                startPage 
1
                e
.HasMorePages True
                Return
            Else
                startPage 
0
            End 
If

 
       Next

    End Sub 
زر الطباعة
PHP كود :
   Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        Dim ppd 
As New PrintPreviewDialog
        ppd
.Document PrintDocument1
        ppd
.WindowState FormWindowState.Maximized
        ppd
.ShowDialog()


 
 
   End Sub 

ظهور خطأ ارجو تعديل الخطا كما في الصورة


الطباعة عرض تحتاج للسطر
كود :
PrintDocument1.DefaultPageSettings.Landscape = True
تضعه قبل ShowDialog
PHP كود :
   Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click

        PrintDocument1
.DefaultPageSettings.Landscape True

        Dim ppd 
As New PrintPreviewDialog
        ppd
.Document PrintDocument1
        ppd
.WindowState FormWindowState.Maximized
        ppd
.ShowDialog()


 
 
   End Sub 

الخطا الذي ظهر لديك قد يكون بسبب تغييرات قمت بعملها في الكود فلم ينفذ الكود
كود :
pages = New Dictionary(Of Integer, pageDetails)
الرد



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


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