منتدى برامج نت | برامج نت | دليل المواقع | العاب فلاش | برامج | عيادة الطب | Free software
العاب افلام موقع منتديات

المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : برمجة Dao من خلال فيجوال بيسك (3/4)


mido_kholy
10-12-2006, 01:37 PM
بسم الله الرحمن الرحيم .

المقدمة :في الدرس السابق تعلمنا طرق انشاء وربط قاعدة البيانات . وكيفية التعامل معها .
في هذا الدرس سوف نتعرف على أحد اشهر أنواع جداول العرض ، وهو MSFlexGrid .


الدرس :في هذا الدرس سوف نتعامل مع أحد أشهر أنواع الجداول لعرض البيانات وهو MSFlexGrid .
للوصول اليه اضغط Ctrl+T واختر Microsoft FlexGrid Control 6.0 (SP3)

والآن إلى أهم خصائص properties وطرق methods هذه الأداة :


Clear : مسح كامل بيانات الجدول .

Cols : عدد الأعمدة الاجمالي في الجدول ، في مثالنا هو 3 ( الرقم - الاسم - الهاتف ) .
Rows : عدد الصفوف ، وهو في مثالنا ( عدد السجلات ) + 1 الخاص بالصف الرئيسي .

Fixed Col : عدد الاعمدة الثابته ، وتعرض هذه الخاصية الأعمدة بصورة دائمة مهما كان عرض الجدول .
Fixed Rows : نفس الخاصية السابقة ولكن بالنسبة للصفوف .

Row : الصف الحالي ، وذلك لتحديد الطرف الأول للخلية Cell .
Col : العمود الحالي ، وذلك لتحديد الطرف الثاني للخلية Cell .
ومن تقاطع قيمتيهما نستطيع اجراء أغلب العمليات الرئيسية .

Text : النص ، وهو النص المعروض في الخلية التي يقف عندها المؤشر ( تقاطع خاصيتي Row ، Col ) .
Text matrix(r,c) : لوضع - قراءة نص في مكان غير المكان الذي يقف عنده مؤشر ( Col , row ) نستخدم هذه الطريقة ، ونرسل للدالة صف وعمود الخلية Cell المطلوبة .

Col Aligment(c) : محاذاة العمود الذي يتم ارسال قيمته .
Col Width(c) : عرض العمود المحدد بقيمة c .
Row Height(r) ارتفاع الصف المحدد بقيمة r .

Back Color : لون خلفية الجدول .
Back Color Fixed : لون خلفية العناصر الثابتة .
Cell Back Color و Cell Fore Color : لون خلفية الخلية Cell والخط بداخلها على الترتيب .

Sort : تحدد طريقة ترتيب بيانات العمود الحالي ، وتأخذ قيم من 0 وحتى 9 .
0 : بدون ترتيب .
1،2 ترتيب تصاعدي وتنازلي على الترتيب .
3و4 : ترتيب تصاعدي وتنازلي بدلالة الارقام .
5و6 : ترتيب تصاعدي وتنازلي بالحروف دون النظر إلى حالة الحرف A=a .
7و8 : ترتيب تصاعدي وتنازلي بالحروف مع النظر إلى حالة الحرف A<>a .
9 ترتيب مخصص .
أول خطوة هي عمل اتصال بين قاعدة البيانات المؤقتة T2 والجدول :

Set T2 = D1.OpenRecordset("tb", dbOpenTable)

سوف نقوم الآن بعمل اجراء باسم fill_Table مهمته رسم الجدول ووضع بيانات T2 في داخله .


Private Sub fill_Table()

End Sub

ونستدعيه من خلال زر الأمر السابق بكتابة fill_Table .

في هذا الاجراء ومهمتنا الأولى قبل ادخال البيانات هي تصميم الشكل العام للجدول ، فإذا اردنا الكتابة في مربع 0 و 0 مثلاً ، فإننا نقوم بالتالي :

MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0

MSFlexGrid1.Text = "القيمة"

وكذلك مع أي صف في أي عمود ، بشرط أن يكون هذا العمود موجوداً أصلاً .

في بداية تشكيل الجدول ، فبعد مسح الجدول بالكامل ، سوف نجعل عدد الصفوف = 1 وهو صف العنوان فقط ، وعدد الأعمدة 3 ( الرقم - الاسم - الهاتف ) :

MSFlexGrid1.Clear
MSFlexGrid1.Cols = 3
MSFlexGrid1.Rows = 1

ومن ثم ننتقل بين الأعمدة في الصف الأول لوضع رؤوس الجداول :

MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = "الرقم"

MSFlexGrid1.Col = 1
MSFlexGrid1.Text = "الاسم"

MSFlexGrid1.Col = 2
MSFlexGrid1.Text = "الهاتف"

والآن جاء دور العمل مع قاعدة البيانات ، لا تنس أننا سوف نتعامل الآن مع T2 لأننا سوف نتنقل بينها دون أن نؤثر على العرض الرئيسي للبرنامج .
الخطوة الأولى هي معرفة عدد السجلات ، وهو عدد الصفوف في الجدول + 1 ( من أجل صف العنوان ) .

If T2.RecordCount < 1 Then Exit Sub

T2.MoveLast
T2.MoveFirst
N = T2.RecordCount

MSFlexGrid1.Rows = N + 1


والآن سوف نقوم بالدوران على كل سجلات قاعدة البيانات ، ومع كل سجل سوف ننقل إلى الصف الخاص به ، ومن ثم نتنقل بين الأعمدة الثلاثة لوضع كل بيان في موضعه الصحيح ، وأخيراً ننتقل إلى السجل التالي .

For i = 1 To N
MSFlexGrid1.Row = i
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = T2!nu

MSFlexGrid1.Col = 1
MSFlexGrid1.Text = T2!Fn

MSFlexGrid1.Col = 2
MSFlexGrid1.Text = T2!Te

T2.MoveNext

Next i

أخيراً سوف نقوم بتعديل عرض العمودين الأول والثاني ليستطيعا استيعاب مزيد من البيانات :


MSFlexGrid1.ColWidth(0) = 500
MSFlexGrid1.ColWidth(1) = 1500


تابع للجدول MSFlexGrid .

بالنسبة لأحداث Events الجدول MSFlexGrid فأغلبها مثل الأدوات العادية مثل الحدث Click و DblClick ، ولعرض محتوى الخلية عند الضغط عليها مرتين بالماوس نكتب :

Private Sub MSFlexGrid1_DblClick()
MsgBox MSFlexGrid1.Text
End Sub

وهناك بعض الأحداث الجديدة مثل EnterCell ، وينطلق هذا الحدث في كل مرة تضبط فيها خاصيتي Col , Row ليشكل تقاطعهما خلية جديدة سواء أكان ذلك من خلال الماس أو من خلال أوامر الكود ، ومقابلة الحدث LeaveCell وهو يحدث عندما تترك خلية .

أحداث أخرى مثل GetFocus و lostFocus تنطلق عندما يصل التركيز ( التحديد ) إلى الاداة أي بمعنى ان تصبح الأداة نشطة سواء من خلال استخدام مفتاح Tap أو من خلال اختيار الأداة بالماوس . أيضاً حدث RowColChange عند تغيير الصف أو العمود ، و SelChange عند تغيير التحديد . Scroll عند استخدام ال Scroll للتنقل بين صفوف الجدول أو اعمدته .

هناك أحداث Drag وهي مشتركة بين اغلب الادوات وهي الخاصة بعمليات سحب الأدوات أو السحب عليها ، أحداث الماوس Mouse أيضاً مشتركة وهي الخاصة بمرور الماوس أو الضغط - الرفع بأزراره المختلفة .

** مثال : كيفية تلوين صف بكامله في الجدول :لعمل ذلك نستخدم الخاصية Cellbackcolor ، فمثلاً لو اردنا تحديد الصف رقم 2 باللون الأحمر ، فإننا نكتب الأمر التالي :

MSFlexGrid1.Row = 2
For i = 0 To 2
MSFlexGrid1.Col = i
MSFlexGrid1.CellBackColor = QBColor(12)
Next i

وفي زر الامر الخاص بالتلوين ، سوف نقوم بقراءة رقم الصف المطلوب من خلال Input Box ، ونتأكد من أن الرقم لا يتجاوز الحد الأقصى من الصفوف ، ومن ثم نكتب الأوامر السابقة ، وبذلك يصبح الكود الاجمالي بالشكل التالي :

Dim x As Integer
x = Val(InputBox("ادخل رقماً يتراوح بين 0 و " & MSFlexGrid1.Rows - 1, "تحديد باللون الأحمر"))
If x < 0 Or x > (MSFlexGrid1.Rows - 1) Then
MsgBox "قيمة صف خاطئ !!!"
Exit Sub
End If

MSFlexGrid1.Row = x
For i = 0 To 2
MSFlexGrid1.Col = i
MSFlexGrid1.CellBackColor = QBColor(12)
Next i

وبنفس الطريقة إذا اردنا تحديد عمود ، حيث سنتقل بين الصفوف المختلفة .

خاتمة :
تعرفنا في هذا الدرس على بعض خصائص MSFlexGrid ، الاحداث ، وكيفية وضع القيم المختلفة داخل الجدول .
في الدرس القادم سوف نقوم بعمل بحث على القيم الموجودة في قاعدة البيانات .

* في الدرس الأخير سوف يكون ملف مرفق على جميع العمليات خلال الدروس بإذن الله .

veto_44
10-12-2006, 08:27 PM
بارك الله فيكط اخي ميدو وجزاك الله عنا كل خير
وننتظر درسك الرابع بهذه السلسة الرائعة حتى
اضيفها بمجلة برامج نت الشهرية عن قسم البرمجة
موضوعك مميز وهو تقريبا الاول من نوعه
بمنتدى البرمجة تابع وموفق دائما باذن الله .