عرض مشاركة واحدة
قديم 06-02-2008, 04:19 PM
  #33
محمد المعمري
مراقب سابق
 الصورة الرمزية محمد المعمري
تاريخ التسجيل: Oct 2007
الدولة: المنطقه الجنوبيه
المشاركات: 2,124
محمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond reputeمحمد المعمري has a reputation beyond repute
Read رد : المدخل إلى فيجوال بيسيك 2005و 2008 (الموضوع متجدد ويتبع )

Part5
1-تطبيق على استخدام مدير التعاملات(Currency Manager)الجزء الأول

الجزء الأول
اليوم سنقوم بعمل تطبيق لما تعلمناة فى Part 4 الذى هو Currency Manager وسنتعلم كيف نستخدم الوظائف مثل AddNew وCancelCurrentEdit وEndCurrentEdit وRemoveAt والمثال الذى سنتعامل معة اليوم يصلح لأن يستخدم للتعامل مع بيانات الأفراد والمعلومات الخاصة بهم مثل موظف أو تلميذ أو ملف لأحد المرضى فى مستشفى أو ما شابة ذلك
أولا يجب أن نقوم بإنشاء قاعدة بيانات جديدة وستحتوى قاعدة البيانات على جدول واحد بة 7 حقول
يمكننا تسمية الجدول باسم مثل Information وتسمية قاعدة البيانات بأى اسم
الحقول هى
1-اسم الحقل ID
Data Type=AutoNumber
Indexed= Yes (No Duplicates)
2- FirstName
3- LastName
4- HomePhone
وكلها نص Text
5- Grade
Data Type=Number
6- BirthDate
Data Type= Date/Time
7- PictureFile
Data Type= Text
قم بفتح مشروع جديد ثم ضع المكونات الاتية داخل الفورم وهى كالتالى
-عدد 3 TextBox
-Date Time Picker
- عدد 6 RadioButtons
- PictureBox
-عدد 5 Lable
-عدد 11 Buttons
-OpenFileDialog
-PrintPreviewDialog
أمامنا الان عملية ترتيب هذة المكونات لتكون شكل ملائم ومناسب
-يجب وضع الستة RadioButton داخل GroupBox ونقم بتسميتها فى Text باسم مناسب
-فى خصائص PictureBox يمكنكم تغيير BackColor إلى أى لون كما يفضل تغيير خاصية Size إلى المقياس 3/2
بمعنى أن يكون عرض مربع الصورة إلى طول مربع الصورة = 2 إلى 3 يعنى لو الطول 15 يكون العرض 10 ولو العرض 80 يكون الطول 120 وهكذا
-من المستسحن تغيير الخاصية SizeMode إلى Zoom لكى تستطيع مشاهدة جوانب الصورة كاملة شاملة الحواف
-من الممكن تغيير خاصية الإسم فى الأزرار الخاصة بالتالى فى Text وبدلا من أن نكتب السابق والتالى يمكننا كتابة
الأول كالتالى |< والأخير هكذا >| وكلا من < و > للسابق والتالى فتصبح أزرار التحكم بصورة أفضل
إليكم 2 تصميم لهذا المشروع يمكنكم اختيار أحدهما أو ابتكار تصميم ثالث

أو هذا التصميم

أو ابتكار شكل جديد اخر اعتمادا على المكونات التى لديكم ومن المستحسن وضع كل محموعة من الأزرار داخل GroupBox فهى تظهر الشكل أكثر تماسكا وتعطية صورة احترافية
بعد الإنتهاء من التصميم يجب حفظة ونقل قاعدة البيانات إلى المجلد الذى قمت بحفظ التطبيق الجديد بة
الان ندخل إلى مرحلة التعريفات وشرح الأكواد وكتابتها
التسمية
هناك بعض المكونات يفضل تسميتها بأى اسم مناسب كالتالى
مربعات النصوص الثلاثة يتم تسميتها
txtFirstName وtxtLastName وtxtHomePhone
مجموعة GroupBox2 التى تحتوى على RadioButtons يمكن تسميتها إلى grpGrade
Lable الموجود أسفل صندوق الصورة يتم تسميتة إلى lblPhotoFile
وأخيرا قم بوضع Lable جديد فى أى مكان وقم بتسميتة lblGrade وقم بجعل الخاصية Visible إلى False
***
2-تطبيق على استخدام مدير التعاملات(Currency Manager)الجزء الثانى

الكود
سنقوم باستيراد أسماء المجالات NameSpaces وهى


كود:
Imports System.Data
Imports System.Data.OleDb
وطبعا سيتم كتابتها فى General التى تسمى بالتصريحات العامة وهى المنطقة التى تسبق أسطر إدخال الكود فى أعلى الصفحة


ثم الإعلان عن المتغيرات
كود:
Dim InfoConnection As OleDbConnection
Dim InfoCommand As OleDbCommand
Dim InfoAdapter As OleDbDataAdapter
Dim InfoTable As DataTable
Dim InfoManager As CurrencyManager
Dim InfoState As String
Dim InfoBookmark As Integer
يجب علينا الان أن نقوم بعمل الإتصال بقاعدة البيانات وكذلك إنشاء عوامل الإتصال DataSet وTable وDataAdapter وتعريف المتغيرات لذلك سنكتب الكود التالى فى الفورم

ولكن ما معنى ShowRelated و SetState
الأول ShowRelated وهو استدعاء لعرض Related وهذا الإسم اختيارى وأقصد ية المتعلقات ولكن ما هى المتعلقات ؟
هى الصورة وكذلك العناصر التى فى داخل المجموعة grpGrade والذى سنقوم باستخدام واسطة بينة وبين InfoTable ومذة الواسطة هى التى ستتحكم فى الإدخال والإخراج هى lblGrade ولكن ماهى محتويات Related هذا؟
لتعريف ذلك قم بكتابة الكود التالى

كود:

Private Sub ShowRelated()
Select Case lblGrade.Text
Case "1"
RadioButton1.Checked = True
Case "2"
RadioButton2.Checked = True
Case "3"
RadioButton3.Checked = True
Case "4"
RadioButton4.Checked = True
Case "5"
RadioButton5.Checked = True
Case "6"
RadioButton6.Checked = True
End Select
Call ShowPhoto()
ولكننا نلا حظ أننا فى نهاية الكود وضعنا Call ShowPhoto() فماذا سيكون الكود


كود:
Private Sub ShowPhoto()
If lblPhotoFile.Text <> "" Then
Try
PictureBox1.Image = Image.FromFile(lblPhotoFile.Text)
Catch ex As Exception
MessageBox.Show(ex.Message, "خطاء فى تحميل الصورة", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
PictureBox1.Image = Nothing
End If
End Sub
ثم نقوم بإنشاء حدث الإغلاق بنفس الطريقة التى اتبعناها فى المثال رقم 2 (الإتصال بقاعدة البيانات وعرض محتوياتها)

كود:

Private Sub frmInfo_FormClosing(ByVal sender As Object, _
ByVal e As System.Windows.Forms. _
FormClosingEventArgs) Handles Me.FormClosing
If InfoState = "Edit" Or InfoState = "Add" Then
MessageBox.Show("يجب إنهاء التحرير أولا", "", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
e.Cancel = True
Else
Try
Dim InfoAdapterCommands As New OleDbCommandBuilder(InfoAdapter)
InfoAdapter.Update(InfoTable)
Catch ex As Exception
MessageBox.Show(ex.Message, "خطاء فى حفظ قاعدة البيانات", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
InfoConnection.Close()
InfoCommand.Dispose()
InfoAdapter.Dispose()
InfoTable.Dispose()
End If
End Sub
ثم نقوم بوضع الكود الخاص بحالة التغير الخاصة لكل زر داخل grpGrade يعنى تحديد الحالة التى يكون كل RadioButton فيها Checked أو non Checked

كود:

Private Sub RadioButtonGrade_CheckedChanged _
(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged _
, RadioButton3.CheckedChanged, RadioButton4.CheckedChanged _
, RadioButton5.CheckedChanged, RadioButton6.CheckedChanged
Dim ButtonChecked As RadioButton = CType(sender, RadioButton)
Select Case ButtonChecked.Text
Case "1"
lblGrade.Text = "1"
Case "2"
lblGrade.Text = "2"
Case "3"
lblGrade.Text = "3"
Case "4"
lblGrade.Text = "4"
Case "5"
lblGrade.Text = "5"
Case "6"
lblGrade.Text = "6"
End Select
End Sub
يجب الان أن نقوم بإنشاء إطار الطباعة أى الكادر الذى ستتم فية طباعة المعلومات وسأقوم بوضع كود سريع يمكنكم تخصيصة من ناحية الحجم والخطوط ....الخ

كود:

Private Sub PrintInfo(ByVal sender As Object _
, ByVal e As Drawing.Printing.PrintPageEventArgs)
Dim MyPen As Pen = New Pen(Color.Black, 3)
e.Graphics.DrawRectangle(MyPen, e.MarginBounds.X, e.MarginBounds.Y, 200, 350)
Dim MyFont As Font = New Font("Arial", 12, FontStyle.Bold)
Dim S As String = "أكتب هنا إسم المؤسسة أو الهيئة"
Dim SSize As SizeF = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black _
, e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)) _
, e.MarginBounds.Y + 15)
e.Graphics.DrawImage(PictureBox1.Image, _
e.MarginBounds.X + 25, e.MarginBounds.Y + 50, 150, 200)
e.HasMorePages = False
MyFont = New Font("Arial", 14)
Dim Y As Integer = e.MarginBounds.Y + 260
S = txtFirstName.Text
SSize = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black, _
e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)), Y)
Y += CInt(MyFont.GetHeight(e.Graphics))
S = txtLastName.Text
SSize = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black, _
e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)), Y)
Y += CInt(MyFont.GetHeight(e.Graphics))
S = "Grade " + lblGrade.Text
SSize = e.Graphics.MeasureString(S, MyFont)
e.Graphics.DrawString(S, MyFont, Brushes.Black, _
e.MarginBounds.X + CInt(0.5 * (200 - SSize.Width)), Y)
End Sub
ثم نقوم بانشاء حدث الإنتقال والتركيز على مربع النص الأول عند الإضافة والتحرير

كود:
Private Sub txtFirstName_KeyPress(ByVal sender As System.Object _
, ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles txtFirstName.KeyPress
If e.KeyChar = ControlChars.Cr Then
txtLastName.Focus()
End If

ثم أكواد الأزرار
فى زر الأول

كود:
InfoManager.Position = 0
Call ShowRelated()
فى زر السابق

كود:
InfoManager.Position -= 1
Call ShowRelated()
فى زر التالى

كود:
InfoManager.Position += 1
Call ShowRelated()
فى زر الأخير

كود:
InfoManager.Position = InfoManager.Count - 1
Call ShowRelated()
فى زر جديد أو إضافة

كود:
InfoBookmark = InfoManager.Position
Call SetState("Add")
InfoManager.AddNew()
RadioButton1.Checked = True : lblGrade.Text = "1"
PictureBox1.Image = Nothing
lblPhotoFile.Text = ""
فى زر إلغاء أو تراجع

كود:
InfoManager.CancelCurrentEdit()
If InfoState = "Add" Then
InfoManager.Position = InfoBookmark
End If
Call ShowRelated()
Call SetState("View"
فى زر الحفظ


كود:
If txtLastName.Text.Trim = "" Then
MessageBox.Show("يجب إدخال إسم العائلة", "إدخال خاطىء", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
txtLastName.Focus()
Exit Sub
End If
Dim SavedItem As String = txtLastName.Text
Dim SavedRow As Integer
InfoManager.EndCurrentEdit()
InfoTable.DefaultView.Sort = "LastName"
SavedRow = InfoTable.DefaultView.Find(SavedItem)
InfoManager.Position = SavedRow
Call ShowRelated()
Call SetState("View")
فى زر تحرير

كود:
Call SetState("Edit")
فى زر تحميل الصورة

كود:
Try
If OpenFileDialog1.ShowDialog _
= Windows.Forms.DialogResult.OK Then
lblPhotoFile.Text = OpenFileDialog1.FileName
Call ShowPhoto()
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "خطاءفى فتح الصورة", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
فى زر حذف

كود:
If MessageBox.Show("هل أنت متأكد من أنك تريد حذف هذا السجل" _
, "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question, _
MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then
InfoManager.RemoveAt(InfoManager.Position)
Call ShowRelated()
End If
Call SetState("View")
ثم زر الطباعة

كود:

Dim InfoDocument As Drawing.Printing.PrintDocument
InfoDocument = New Drawing.Printing.PrintDocument()
InfoDocument.DocumentName = "Info"
AddHandler InfoDocument.PrintPage, _
AddressOf Me.PrintInfo
Dim SavedPosition As Integer = InfoManager.Position
PrintPreviewDialog1.Document = InfoDocument
PrintPreviewDialog1.ShowDialog()
InfoDocument.Dispose()
InfoManager.Position = SavedPosition
وزر إنهاء

كود:

Close()


ورابط تحميل المشروع
http://www.zshare.net/download/37177295a64f52

أنتهى درس اليوم و الأمس معاً ,,,,,,,,, و يتبع.......
__________________



كثر الله خير و جمل الله حالك ياهبشان
لو أنني كنت شاعراً لكتبت معلقة غزل في روعة و جمال هذى النظام
أضغط على الصورة




كم هي جميلة شبكتنا .. وكم هي كبيره بكم
فشبكة قحطان بكم ولكم
فلننهظ بها
بصدق وأمانه
وبلا تذمر


محمد المعمري غير متواجد حالياً