- tarik
- عدد المساهمات : 134
تاريخ التسجيل : 08/10/2012
الدرس الخامس طباعة جدول مخصص من خلال أداة PrintDocument
الإثنين أكتوبر 15, 2012 9:44 am
يسعدنى - وانا ما زلت مهتم بأداة PrintDocument - ان اقدم طربقة طباعة جدول مخصص بناء على متطلبات المستخدم .. اذ هو المنوط بتحديد عدد الصفوف والاعمدة وعرض الاعمدة وارتفاع الصفوف ..
عموما اليكم شرح سريع .. والمثال المرفق المرفق به شرح وافر ووافى ..
الادوات المطلوبة
4 TextBox و 4 label
panel
2 bottun
اداة PrintDocument
اداة PrintPreviewDailog
فى قسم التصاريح العامة اعلن عن المتغيرين التاليين ..
رموز PHP:
Dim all_high, all_wdth As Single
Dim all_value As Boolean
ايضا قم بكتابة الاجراء التالى والذى يتم من خلاله التأكد من المستخدم ادخل قيما فى مربعات النص التى تحدد عدد وعرض الاعنمدة وعدد وارتفاع الصفوف
رموز PHP:
Sub sur_size_page()
all_value = False
'معرفة اجمالى عرض الجدول من خلال ضرب عدد الصفوف فى ارتفاع الصف الواحد
all_high = Val(txt_NumOfRows.Text) * Val(txt_HighRows.Text)
'معرفة اجمالى عرض الجدول من خلال ضرب عدد الاعمدة فى عرض العمود الواحد
all_wdth = Val(txt_NumOfColum.Text) * Val(txt_WdthColm.Text)
If Val(txt_HighRows.Text) = 0 Or Val(txt_WdthColm.Text) = 0 Or Val(txt_NumOfColum.Text) = 0 Or Val(txt_NumOfRows.Text) = 0 Then
MessageBox.Show("هناك بعض القيم فارغة .. أو غير صحيحة ", "قيم غير صحيحة", MessageBoxButtons.OK)
Else
If all_high < 29 Then
If all_wdth < 19 Then
all_value = True
Else
MessageBox.Show("يجب الا يزيد عرض الجدول بالكامل عن 19 سم .. عرض جدولك بالمقياس الذى ادخلته هو: " & all_wdth.ToString & " سم", "مقياس لا يناسب الصفحة", MessageBoxButtons.OK)
End If
Else
MessageBox.Show("يجب الا يزيد ارتفاع الجدول بالكامل عن 29 سم .. ارتفاع جدولك بالمقياس الذى ادخلته هو: " & all_high.ToString & " سم", "مقياس لا يناسب الصفحة", MessageBoxButtons.OK)
End If
End If
End Sub
فى حدث print_page لأداة Prt_doc) PrintDocument ) قم بكتابة الاكواد التالية والتى تقوم برسم الجدول على الورقة
رموز PHP:
Private Sub prnt_doc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles prnt_doc.PrintPage
'رقم 29 يمثل العرض بالسم و10 تحويله الى مليمتر و3.94 يمثل تحويل الملمتر الى طيقة قياس الشاشة
Dim wdth_lin As Single = 19 * 10 * 3.94
Dim hght_lin As Single = 29 * 10 * 3.94
'تحديد الهامش الشمال
Dim lft As Single = ((e.PageBounds.Width - all_wdth * 10 * 3.94) / 2) / 3.94
Dim tp As Single = ((e.PageBounds.Height - all_high * 10 * 3.94) / 2) / 3.94
'تغييير قياس الصفحة الى مليمتر
e.Graphics.PageUnit = GraphicsUnit.Millimeter
'تغيي سمك الرسم
Dim pns As New Pen(Color.Black, 0.75)
'رسم الخطوط الافقية للجدول الاول
Dim high_row As Single
For i As Integer = 1 To Val(txt_NumOfRows.Text) + 1
If i = 1 Or i = Val(txt_NumOfRows.Text) + 1 Then pns.Width = 0.75 Else pns.Width = 0.25
e.Graphics.DrawLine(pns, lft, tp + high_row, lft + all_wdth * 10, tp + high_row)
high_row = high_row + Val(txt_HighRows.Text) * 10
Next
high_row = high_row - Val(txt_HighRows.Text) * 10
Dim wdth_colm As Single
'رسم الخطوط الرأسية للجدول الاول
For i As Integer = 1 To Val(txt_NumOfColum.Text) + 1
If i = 1 Or i = Val(txt_NumOfColum.Text) + 1 Then pns.Width = 0.75 Else pns.Width = 0.25
e.Graphics.DrawLine(pns, lft + wdth_colm, tp, lft + wdth_colm, tp + high_row)
wdth_colm = wdth_colm + Val(txt_WdthColm.Text) * 10
Next
End Sub
فى حدث click لزر معاينة الطباعة Btn_prev قم بكتابة الكود التالى
رموز PHP:
Private Sub brnt_prev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles brnt_prev.Click
sur_size_page()
If all_value = True Then prnt_prev.ShowDialog()
End Sub
فى حدث click لزر معاينة الطباعة Btn_prnt قم بكتابة الكود التالى
رموز PHP:
Private Sub btn_prnt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_prnt.Click
sur_size_page()
If all_value = True Then prnt_doc.Print()
End Sub
غير خاصية Document لأداة PrinrPreviewDailog (Prnt_Prev ( الى prnt_doc
عموما اليكم شرح سريع .. والمثال المرفق المرفق به شرح وافر ووافى ..
الادوات المطلوبة
4 TextBox و 4 label
panel
2 bottun
اداة PrintDocument
اداة PrintPreviewDailog
فى قسم التصاريح العامة اعلن عن المتغيرين التاليين ..
رموز PHP:
Dim all_high, all_wdth As Single
Dim all_value As Boolean
ايضا قم بكتابة الاجراء التالى والذى يتم من خلاله التأكد من المستخدم ادخل قيما فى مربعات النص التى تحدد عدد وعرض الاعنمدة وعدد وارتفاع الصفوف
رموز PHP:
Sub sur_size_page()
all_value = False
'معرفة اجمالى عرض الجدول من خلال ضرب عدد الصفوف فى ارتفاع الصف الواحد
all_high = Val(txt_NumOfRows.Text) * Val(txt_HighRows.Text)
'معرفة اجمالى عرض الجدول من خلال ضرب عدد الاعمدة فى عرض العمود الواحد
all_wdth = Val(txt_NumOfColum.Text) * Val(txt_WdthColm.Text)
If Val(txt_HighRows.Text) = 0 Or Val(txt_WdthColm.Text) = 0 Or Val(txt_NumOfColum.Text) = 0 Or Val(txt_NumOfRows.Text) = 0 Then
MessageBox.Show("هناك بعض القيم فارغة .. أو غير صحيحة ", "قيم غير صحيحة", MessageBoxButtons.OK)
Else
If all_high < 29 Then
If all_wdth < 19 Then
all_value = True
Else
MessageBox.Show("يجب الا يزيد عرض الجدول بالكامل عن 19 سم .. عرض جدولك بالمقياس الذى ادخلته هو: " & all_wdth.ToString & " سم", "مقياس لا يناسب الصفحة", MessageBoxButtons.OK)
End If
Else
MessageBox.Show("يجب الا يزيد ارتفاع الجدول بالكامل عن 29 سم .. ارتفاع جدولك بالمقياس الذى ادخلته هو: " & all_high.ToString & " سم", "مقياس لا يناسب الصفحة", MessageBoxButtons.OK)
End If
End If
End Sub
فى حدث print_page لأداة Prt_doc) PrintDocument ) قم بكتابة الاكواد التالية والتى تقوم برسم الجدول على الورقة
رموز PHP:
Private Sub prnt_doc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles prnt_doc.PrintPage
'رقم 29 يمثل العرض بالسم و10 تحويله الى مليمتر و3.94 يمثل تحويل الملمتر الى طيقة قياس الشاشة
Dim wdth_lin As Single = 19 * 10 * 3.94
Dim hght_lin As Single = 29 * 10 * 3.94
'تحديد الهامش الشمال
Dim lft As Single = ((e.PageBounds.Width - all_wdth * 10 * 3.94) / 2) / 3.94
Dim tp As Single = ((e.PageBounds.Height - all_high * 10 * 3.94) / 2) / 3.94
'تغييير قياس الصفحة الى مليمتر
e.Graphics.PageUnit = GraphicsUnit.Millimeter
'تغيي سمك الرسم
Dim pns As New Pen(Color.Black, 0.75)
'رسم الخطوط الافقية للجدول الاول
Dim high_row As Single
For i As Integer = 1 To Val(txt_NumOfRows.Text) + 1
If i = 1 Or i = Val(txt_NumOfRows.Text) + 1 Then pns.Width = 0.75 Else pns.Width = 0.25
e.Graphics.DrawLine(pns, lft, tp + high_row, lft + all_wdth * 10, tp + high_row)
high_row = high_row + Val(txt_HighRows.Text) * 10
Next
high_row = high_row - Val(txt_HighRows.Text) * 10
Dim wdth_colm As Single
'رسم الخطوط الرأسية للجدول الاول
For i As Integer = 1 To Val(txt_NumOfColum.Text) + 1
If i = 1 Or i = Val(txt_NumOfColum.Text) + 1 Then pns.Width = 0.75 Else pns.Width = 0.25
e.Graphics.DrawLine(pns, lft + wdth_colm, tp, lft + wdth_colm, tp + high_row)
wdth_colm = wdth_colm + Val(txt_WdthColm.Text) * 10
Next
End Sub
فى حدث click لزر معاينة الطباعة Btn_prev قم بكتابة الكود التالى
رموز PHP:
Private Sub brnt_prev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles brnt_prev.Click
sur_size_page()
If all_value = True Then prnt_prev.ShowDialog()
End Sub
فى حدث click لزر معاينة الطباعة Btn_prnt قم بكتابة الكود التالى
رموز PHP:
Private Sub btn_prnt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_prnt.Click
sur_size_page()
If all_value = True Then prnt_doc.Print()
End Sub
غير خاصية Document لأداة PrinrPreviewDailog (Prnt_Prev ( الى prnt_doc
- أداة PrintDocument أفضل من كريستال روبرت >>> الدرس الاول : طباعة لست بوكس فى شكل جدول
- الدرس السادس طباعة الاشكال من خلال اداة PrintDocument
- الدرس الرابع طباعة الصور من خلال اداة PrintDocument
- الدرس الثالث مع PrintDocument .. طباعة DataGrid
- درس مترجم : طريقة الكتابة في صفحة الإنترنت والضغط على الأزرار من خلال برنامجك آليا
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى