![]() |
|
الدرس الثانى مع اداة PrintDocument هى الافضل - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : الدرس الثانى مع اداة PrintDocument هى الافضل (/showthread.php?tid=4874) |
الدرس الثانى مع اداة PrintDocument هى الافضل - RaggiTech - 02-10-12 كاتب الموضوع : myprogs
مع الدرس الثانى سنحاول طباعة بيانات من داخل داتا جرد 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
ثم اسحب اداة PintDocument وسمها Print_Doc وهى الاداة المسئولة عن الطباعة وفى حدث Print_page الخاص بها اكتب الاكواد التالية(" 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 'رقم 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
'عرض الجدول الكلى عبارة عن 5 اعمدة × 3.5 سم باجمالى 17.5 سمDim strt As Single = 0 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)
'رسم الخطوط الرأسية للجدول من خلال حلقة تكرارية بحيث يكون عرض العمود 3.5 سمpns.Width = 0.25 For ii As Integer = 1 To dta_data.ColumnCount 'زيادة الاذاحة اليسرى بمقدار 3.5 سم وهى قيمة عرض العمود strt = strt + 3.5 * 10
'زيادة الاذاحة الرأسية بمقدار 4 سم - قيمة الفراغ العلوى بالاضافة الى 1 سم لتحديد قيمة الصف الاول ليكون اجمالى الاذاحة 5 سمe.Graphics.DrawLine(pns, lft + strt, tp, lft + strt, tp + hght) Next Dim er As Single = 5 * 10 ' رسم الخطوط الافقية للجدول من خلال حلقة تكرارية For ii As Integer = 1 To dta_data.RowCount
'زيادة الاذاحة الرأسية بمقدار 1 سم - اضافة صفe.Graphics.DrawLine(pns, lft, er, lft + wdth, er) 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
'بعد قراءة بيانات كل عمود تتم الاذاحة بمقدار 3.5 سم استعدادا لطباعة العمود الذى يليهtxt = dta_data.Item(ii, i).Value.ToString e.Graphics.DrawString(txt, fnt1, Brushes.Black, lft + strt, er, strfrmt) strt = strt + 3.5 * 10
'زيادة الاذاحة الرأسية بمقدار 1 سم - اضافة سطر Next er = er + 1 * 10
'طباعة العنوان الرئيسىNext 'لتوسيط العنوان الرئيسى قسمنا عرض الورقة 17.5 سم ÷ 2 strt = (17.5 * 10) / 2 'جعلنا الذاحة العلوية 2 سم er = 2 * 10
ثم اسحب اداة PrintPreviewDialog وهى الاداة المسئولة عن معاينة الطباعة وسمها Print_prev وغير خاصية Document لها الى Print_doc txt = Label1.Text e.Graphics.DrawString(txt, fnt2, Brushes.Black, lft + strt, er, strfrmt) ثم اسحب Button وسمه Btn_prev لمعاينة الطباعة واكتب فى حدث Click خاصته الكود التالى prnt_prev.ShowDialog() ثم اسحب Button وسمه Btn_print للطباعة واكتب فى حدث Click خاصته الكود التالى prnt_doc.Print() الدرس الثانى مع اداة PrintDocument هى الافضل - RaggiTech - 02-10-12 تعديل مهم .. سنقوم بتعريف المتغيرات التالية اللازمة لعملية الاتصال بقاعدة البيانات فى 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 عموما المشروع المرفق به كافة التفاصيل .. واعتذر للنسيان .. |