شاطر
اذهب الى الأسفل
عدد المساهمات : 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
الرجوع الى أعلى الصفحة
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى