مشكلة فى كود الطباعة المباشرة - khaled Mohammed - 27-09-20
السلام عليكم ورحمة الله وبركاته
طباعة من الداتا جريد فيو حصلت لها كود و لكن عند استعماله يظهر خطا
برجاء المساعدة حول هذا الامر
مرفق الملف
RE: مشكلة فى كود الطباعة المباشرة - Anas Mahmoud - 28-09-20
المشكلة كانت في السطر رقم 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)
RE: مشكلة فى كود الطباعة المباشرة - khaled Mohammed - 28-09-20
(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)
شكرا استاذنا الغالي
جعلها الله فى ميزان حسناتك
RE: مشكلة فى كود الطباعة المباشرة - عمور2016 - 15-10-20
هذا الكود استاذي واخي انس هذا الكود يطبع طوليا كيف يتم الطباعة عرض
اين يحتاج التعديل في المثال السابق بارك الله فيك
وشكرا
PHP كود :
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim rect As New Rectangle(20, 20, CInt(PrintDocument1.DefaultPageSettings.PrintableArea.Width), Label1.Height) Dim sf As New StringFormat sf.Alignment = StringAlignment.Center sf.LineAlignment = StringAlignment.Center
e.Graphics.DrawString(Label1.Text, Label1.Font, Brushes.Black, rect, sf)
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(startX, startY, DataGridView1.RowHeadersWidth, DataGridView1.ColumnHeadersHeight) e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell) e.Graphics.DrawRectangle(Pens.Black, cell)
startY += DataGridView1.ColumnHeadersHeight
For r As Integer = pages(p).startRow To pages(p).startRow + pages(p).rows - 1 cell = New Rectangle(startX, startY, DataGridView1.RowHeadersWidth, DataGridView1.Rows(r).Height) e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell) e.Graphics.DrawRectangle(Pens.Black, cell) e.Graphics.DrawString(If(DataGridView1.Rows(r).HeaderCell.Value, String.Empty), DataGridView1.Font, Brushes.Black, cell, sf) 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(startX, startY, DataGridView1.Columns(c).Width, DataGridView1.ColumnHeadersHeight) e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell) e.Graphics.DrawRectangle(Pens.Black, cell) e.Graphics.DrawString(DataGridView1.Columns(c).HeaderCell.Value.ToString, DataGridView1.Font, Brushes.Black, cell, sf) 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(startX, startY, DataGridView1.Columns(c).Width, DataGridView1.Rows(r).Height) e.Graphics.DrawRectangle(Pens.Black, cell) e.Graphics.DrawString(DataGridView1(c, r).Value.ToString, DataGridView1.Font, Brushes.Black, cell, sf) startX += DataGridView1.Columns(c).Width Next startY += DataGridView1.Rows(r).Height Next
If p <> pages.Count - 1 Then startPage = p + 1 e.HasMorePages = True Return Else startPage = 0 End If
Next
End Sub
زر الطباعة
PHP كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim ppd As New PrintPreviewDialog ppd.Document = PrintDocument1 ppd.WindowState = FormWindowState.Maximized ppd.ShowDialog()
End Sub
ظهور خطأ ارجو تعديل الخطا كما في الصورة
RE: مشكلة فى كود الطباعة المباشرة - عمور2016 - 15-10-20
اخي انس ارجو الرد
RE: مشكلة فى كود الطباعة المباشرة - mustaf - 17-10-20
(15-10-20, 12:52 AM)عمور2016 كتب : هذا الكود استاذي واخي انس هذا الكود يطبع طوليا كيف يتم الطباعة عرض
اين يحتاج التعديل في المثال السابق بارك الله فيك
وشكرا
PHP كود :
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim rect As New Rectangle(20, 20, CInt(PrintDocument1.DefaultPageSettings.PrintableArea.Width), Label1.Height) Dim sf As New StringFormat sf.Alignment = StringAlignment.Center sf.LineAlignment = StringAlignment.Center
e.Graphics.DrawString(Label1.Text, Label1.Font, Brushes.Black, rect, sf)
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(startX, startY, DataGridView1.RowHeadersWidth, DataGridView1.ColumnHeadersHeight) e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell) e.Graphics.DrawRectangle(Pens.Black, cell)
startY += DataGridView1.ColumnHeadersHeight
For r As Integer = pages(p).startRow To pages(p).startRow + pages(p).rows - 1 cell = New Rectangle(startX, startY, DataGridView1.RowHeadersWidth, DataGridView1.Rows(r).Height) e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell) e.Graphics.DrawRectangle(Pens.Black, cell) e.Graphics.DrawString(If(DataGridView1.Rows(r).HeaderCell.Value, String.Empty), DataGridView1.Font, Brushes.Black, cell, sf) 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(startX, startY, DataGridView1.Columns(c).Width, DataGridView1.ColumnHeadersHeight) e.Graphics.FillRectangle(New SolidBrush(SystemColors.ControlLight), cell) e.Graphics.DrawRectangle(Pens.Black, cell) e.Graphics.DrawString(DataGridView1.Columns(c).HeaderCell.Value.ToString, DataGridView1.Font, Brushes.Black, cell, sf) 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(startX, startY, DataGridView1.Columns(c).Width, DataGridView1.Rows(r).Height) e.Graphics.DrawRectangle(Pens.Black, cell) e.Graphics.DrawString(DataGridView1(c, r).Value.ToString, DataGridView1.Font, Brushes.Black, cell, sf) startX += DataGridView1.Columns(c).Width Next startY += DataGridView1.Rows(r).Height Next
If p <> pages.Count - 1 Then startPage = p + 1 e.HasMorePages = True Return Else startPage = 0 End If
Next
End Sub
زر الطباعة
PHP كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 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.Object, ByVal e As System.EventArgs) Handles 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)
|