تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الثانى مع اداة PrintDocument هى الافضل
#1
كاتب الموضوع : 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
(" 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 خاصته الكود التالى
prnt_doc.Print()
}}}}
تم الشكر بواسطة: Amir_alzubidy , T.ALKATHIRI
#2
تعديل مهم ..
سنقوم بتعريف المتغيرات التالية اللازمة لعملية الاتصال بقاعدة البيانات فى 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
عموما المشروع المرفق به كافة التفاصيل ..
واعتذر للنسيان ..
}}}}
تم الشكر بواسطة: Amir_alzubidy


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Brick [مثال] السحب والاسقاط من اداة picturebox الى مجلد مفتوح الطالب 0 424 23-05-15, 06:06 PM
آخر رد: الطالب
  دورة الفيجوال بيسك و اللينيكس - الدرس الثاني RaggiTech 0 541 03-10-12, 03:01 PM
آخر رد: RaggiTech
  دورة الفيجوال بيسك و اللينيكس - الدرس الاول RaggiTech 0 622 03-10-12, 03:00 PM
آخر رد: RaggiTech
  حساب قيمة معادلة(اقصد صيغة دون مجاهيل) مكتوبة بالتكست - الدرس الخامس والاخير RaggiTech 0 538 03-10-12, 12:34 PM
آخر رد: RaggiTech
  الدرس السادس -تابع المتغيرات ( امكانية الوصول) RaggiTech 0 426 02-10-12, 06:19 PM
آخر رد: RaggiTech
  الدرس السادس - المتغيرات RaggiTech 0 397 02-10-12, 06:17 PM
آخر رد: RaggiTech
  الدرس الرابع - تعرف على قوائم VB.Net 2005 (ج 2) RaggiTech 0 612 02-10-12, 06:15 PM
آخر رد: RaggiTech
  الدرس الرابع - تعرف على قوائم VB.Net 2005(ج 1) RaggiTech 0 421 02-10-12, 06:10 PM
آخر رد: RaggiTech
  الدرس الخامس-الادوات في vb.net 2005 (ج 1) RaggiTech 0 1,378 02-10-12, 05:55 PM
آخر رد: RaggiTech
  الدرس الخامس - تابع درس الادوات (ج 2) RaggiTech 0 556 02-10-12, 05:46 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم