شاطر
اذهب الى الأسفل
عدد المساهمات : 134
تاريخ التسجيل : 08/10/2012
معاينة صفحة البيانات الشخصي للعضو

الدرس الثانى مع اداة PrintDocument هى الافضل

في الإثنين أكتوبر 15, 2012 9:40 am
مع الدرس الثانى سنحاول طباعة بيانات من داخل داتا جرد DataGridView تستقى بيناتها من قاعدة بيانات
سنقوم فى حدث load لـ Form1 بتعريف المتغيرات الاتية اللازمة لعملية الاتصال بقاعدة البيانات
تعريف اتصال
Dim my_con As New OleDb.OleDbConnection
تعريف كوماند
Dim my_com As New OleDb.OleDbCommand
تعريف ادابتور
Dim my_adp As New OleDb.OleDbDataAdapter
تعريف داتا ست
Dim my_ds As New DataSet
اسحب اداة DataGridView وسمها Dta_data
وسوف نستخدم button لجلب البيانات من قاعدة البيانات ونسميه btn_import_data وفى حدث click نضع الكود التالى

Try
(" my_ds.Tables.Remove("emp
Catch ex As Exception

End Try
btn_prev.Enabled = True
my_com.Connection = my_con
" my_com.CommandText = "select * from employee
my_adp.Fill(my_ds, "emp")
(" dta_data.DataSource = my_ds.Tables("emp
ثم اسحب اداة PintDocument وسمها Print_Doc وهى الاداة المسئولة عن الطباعة وفى حدث Print_page الخاص بها اكتب الاكواد التالية
'رقم 17.5 يمثل العرض بالسم و10 تحويله الى مليمتر و3.94 يمثل تحويل الملمتر الى طيقة قياس الشاشة

Dim wdth_lin As Single = 17.5 * 10 * 3.94
Dim hght_lin As Single = 26 * 10 * 3.94

'تحديد الهامش الشمال

Dim lft As Single = ((e.PageBounds.Width - wdth_lin) / 2) / 3.94
Dim tp As Single = 4 * 10
'تغييير قياس الصفحة الى مليمتر

e.Graphics.PageUnit = GraphicsUnit.Millimeter
Dim strt As Single = 0
'عرض الجدول الكلى عبارة عن 5 اعمدة × 3.5 سم باجمالى 17.5 سم
Dim wdth As Single = 17.5 * 10
'ارتفاع الجدول عبارة عن عدد صفوف الداتا جرد × 1 سم
Dim hght As Single = dta_data.RowCount * 10
'تغيير سمك الرسم لحدود الجدول
Dim pns As New Pen(Color.Black, 0.75)
'رسم الحدود الرئيسية للجدول

e.Graphics.DrawRectangle(pns, lft, tp, wdth, hght)
pns.Width = 0.25
'رسم الخطوط الرأسية للجدول من خلال حلقة تكرارية بحيث يكون عرض العمود 3.5 سم
For ii As Integer = 1 To dta_data.ColumnCount
'زيادة الاذاحة اليسرى بمقدار 3.5 سم وهى قيمة عرض العمود

strt = strt + 3.5 * 10
e.Graphics.DrawLine(pns, lft + strt, tp, lft + strt, tp + hght)
Next
'زيادة الاذاحة الرأسية بمقدار 4 سم - قيمة الفراغ العلوى بالاضافة الى 1 سم لتحديد قيمة الصف الاول ليكون اجمالى الاذاحة 5 سم
Dim er As Single = 5 * 10
' رسم الخطوط الافقية للجدول من خلال حلقة تكرارية

For ii As Integer = 1 To dta_data.RowCount
e.Graphics.DrawLine(pns, lft, er, lft + wdth, er)
'زيادة الاذاحة الرأسية بمقدار 1 سم - اضافة صف
er = er + 1 * 10
Next

'تعريف متغير يمثل التنسيق النصى وضبط المحاذاة الى وسط ومنتصف

Dim strfrmt As New StringFormat(0, 1)
strfrmt.Alignment = StringAlignment.Center
strfrmt.LineAlignment = StringAlignment.Center
'تحويل لغة الارقام الى العربية
strfrmt.SetDigitSubstitution(1, StringDigitSubstitute.Traditional)
'تعريف نوعى خط لاستخدامهما فى الطباعة

Dim fnt1 As New Font("Times New Roman", 3.5, FontStyle.Bold, GraphicsUnit.Millimeter)
Dim fnt2 As New Font("Mudir MT", 6, FontStyle.Bold, GraphicsUnit.Millimeter)
Dim txt As String
'بداية(الحلقة)
'ضبط الاذاحة الرأسية الى 4 سم + نصف سم يمثل منتصف الصف رأسيا
er = 4.5 * 10
'حلقة لقراءة بيانات صفوف الداتا
For i As Integer = 0 To dta_data.RowCount - 1
'جعل الاذاحة اليسرى تبدأ من منتص عرض العمود 3.5 ÷ 2 عند الانتقال الى صف جديد
strt = 1.75 * 10
'حلقة لقراءة محتويات اعمدة الداتا من الاخر الى الاول

For ii As Integer = dta_data.ColumnCount - 1 To 0 Step -1
txt = dta_data.Item(ii, i).Value.ToString
e.Graphics.DrawString(txt, fnt1, Brushes.Black, lft + strt, er, strfrmt)
'بعد قراءة بيانات كل عمود تتم الاذاحة بمقدار 3.5 سم استعدادا لطباعة العمود الذى يليه

strt = strt + 3.5 * 10
Next
'زيادة الاذاحة الرأسية بمقدار 1 سم - اضافة سطر

er = er + 1 * 10
Next
'طباعة العنوان الرئيسى
'لتوسيط العنوان الرئيسى قسمنا عرض الورقة 17.5 سم ÷ 2
strt = (17.5 * 10) / 2
'جعلنا الذاحة العلوية 2 سم

er = 2 * 10
txt = Label1.Text
e.Graphics.DrawString(txt, fnt2, Brushes.Black, lft + strt, er, strfrmt)
ثم اسحب اداة PrintPreviewDialog وهى الاداة المسئولة عن معاينة الطباعة وسمها Print_prev وغير خاصية Document لها الى Print_doc
ثم اسحب Button وسمه Btn_prev لمعاينة الطباعة واكتب فى حدث Click خاصته الكود التالى
prnt_prev.ShowDialog()
ثم اسحب Button وسمه Btn_print للطباعة واكتب فى حدث Click خاصته الكود التالى
تعديل مهم ..
سنقوم بتعريف المتغيرات التالية اللازمة لعملية الاتصال بقاعدة البيانات فى DEclaration العام وليس فى حدث load لـ Form1 بتعريف المتغيرات الاتية كما ذكرت
تعريف اتصال
Dim my_con As New OleDb.OleDbConnection
تعريف كوماند
Dim my_com As New OleDb.OleDbCommand
تعريف ادابتور
Dim my_adp As New OleDb.OleDbDataAdapter
تعريف داتا ست
Dim my_ds As New DataSet
اما فى حدث Load للـ Form1 سنضع الكود التالى :
my_con.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\employee.mdb"
my_adp.SelectCommand = my_com

prnt_doc.Print()
الرجوع الى أعلى الصفحة
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى