الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلق
بدأه Black Man في 4 مايو 2007 · 0 رد · 462 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1

هذا تكملة للموضوع!!

المقدمة :

في الدرس السابق تعلمنا طرق انشاء وربط قاعدة البيانات . وكيفية التعامل معها .

في هذا الدرس سوف نتعرف على أحد اشهر أنواع جداول العرض ، وهو 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© : محاذاة العمود الذي يتم ارسال قيمته .

Col Width© : عرض العمود المحدد بقيمة c .

Row Height® ارتفاع الصف المحدد بقيمة 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

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

هذا الموضوع مغلق.

مواضيع مشابهة