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

مشاهدة النسخة كاملة : التعامل مع Flex Grid فى الفيجوال بيسك


مصطفى عدوية
09-06-2007, 06:25 PM
التعامل مع Flex Grid

ان أداة FlexGrid احدى ادوات اظهار البيانات في شكل شبكي او جدولي ان صح التعبير سنتطرق في هذا الدرس الى كيفية وضع نتائج استفسار فيها واظهاره للمستخدم وكذلك بعض الافكار في التعامل مع هذه الاداة

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

انظر الصورة التالية :

http://lessons.roro44.com/upload/7.gif

لكي نبدأ بالدرس اضف مشروع جديد و انشأ او استخدم اي قاعدة بيانات و اربطها في البرنامج كما تعلمنا سابقا ، وسنفترض ان قاعدة البيانات التي سنتعامل معها اسمها db وفيها جدول باسم tb ويحتوي على الحقول التالية namd و job و age سنكتفي بثلاثة حقول بعد ذلك يجب ان تضيف اداة هذه الشبكة ولفعل ذلك ، اذهب الى قائمة project >> combonent او اضغط على ctrl+T ستفتح لك قائمة المكونات اختر منها المكون التالي وضع بجانبه علامة صح Microsoft FlexGrid Control 6.0

كما هو موضح في الصورة

http://lessons.roro44.com/upload/8.gif

بعد ان تحدد المكون الذي في الصورة السابقة اضغط Ok لتضيف المكون للمشروع وتعود للمشروع

بعد ذلك اختر الاداة الخاصة برسم FliexGrid كما هو مبين في الصورة التالية وارسم على الفورم مساحة معقولة تأخذ تقريبا ثلث الفورم

http://lessons.roro44.com/upload/56.gif

اضغط بالزر الايمن على الشبكة التي قمت برسمها واختر Properties ستفتح لك نافذة الخصائص وفي علامة التبويب General يمكنم اختيار عدد الصفوف من الخاصية Rows وعدد الاعمدة من الخاصية Cols كما يمكنك تحديد عدد الاعمد التي تكون بلون داكن كمفتاح للشبكة من الخاصيةFixed Cols او الصفوف التي بلون داكن من الخاصية Fixed Rows

الان سنتعلم التحكم بخصائص FlexGrid بواسطة الكود ، يجب ان تعلم ان جميع الاوامر التي تكتب لهذه الاداة غالبا ما تكتب في حدث التحميل للفورم Load ، ومن الخصائص التي يجب ان تتعلمها هي التحكم في عرض الصفوف مع العلم بأن الصفوف مرقمة من اليسار الى اليمين ابتداء من الصفر واذا اردنا مثلا ان نغير عرض العمودين رقم 0 و 3 مثلا ونريد ان يكون عرضهما 2000 و 1000 على التوالي

فإننا سنحتاج الى كتابة الكود التالي :

MSFlexGrid1.Colwidth(0) = 2000

MSFlexGrid1.Colwidth(3) = 1000

مع العلم بأن اسم الاداة في المكود السابق هو MSFlexGrid1، لاحظ أننا نقوم بحصر رقم الصف بين قوسين

والان كيف سنقوم بوضع عناوين الحقول على الاعمدة في هذه الشبكة لكي نفرق بين الحقول ، الفكرة بأن تقوم بتحديد الخلية بالصف و العمود بعد ذلك تكتب النص المراد ، مثلا نريد أن نكتب عنوان الحقل الاول وهو "الاسم " في العمود الاول وعنوان الحقل الثاني وهو " العمل " في العمود الثاني

فماذا سنعمل انظر للكود التالي وستعرف


MSFlexGrid1.Row = 0

MSFlexGrid1.Col = 0

MSFlexGrid1.Text = "الاسم "

MSFlexGrid1.Col = 1

MSFlexGrid1.Text = "العمل"

لاحظ أننا في اول سطرين من الكود السابق قد قمنا بتحديد اول خلية على اليسار في الزاوية العليا وذلك بتحديد احداثياتها وهي الصف الاول والعمود الاول ، ثم قمنا بكتابة العنوان بالخاصية Text ، مع العلم بأن البرنامج يقوم بتخزين احداثيات اخر خلية تقوم بكتابتها ، لذلك وعندما نكتب احداثيات النقطة الثانية ستتفيد من هذه الميزة فسنكتب احداثي العمود وهو 1 لأن الاحداثي السابق للصف هو 0 وهو مخزن فماذا نكتبه مرة اخرى مادمنا لانحتاج لتغييره ، بعد ذلك نكتب العنوان باستخدام الخاصية Text كما فعلنا مع الاولى ونستمر بهذه العملية اذا احتجنا الى عناوين اخرى ، وستظهر العناوين التي عملناها بالكود السابق كما الشكل التالي :

http://lessons.roro44.com/upload/10.gif

والان كيف نقوم بتعبئة البيانات من جدول او استعلام ؟

كما تعلمنا في الدروس السابقة فإننا نقوم بإنشاء جدول وهمي لكي نخزن فيه البيانات مؤقتا كما هو حال الرام RAM في الجهاز لتخزين البيانات لنتعامل معها وبعد اغلاق الجهاز تذهب المعلومات ، ان ديناميكية تعبئة البيانات بسيطة وسلسة ونحتاج اولا وضع عناوين الاعمدة كما تعلمنا في الفقرة السابقة ويكتب ذلك غالبا في حدث التحميل Load بعد ذلك يأتي دور تعبئة السجلات ، وقبل كل شيء اضف سطر يتأكد من وجود بيانات في الجدول لكي لاتواجه مشاكل ، بعد ذلك احسب عدد السجلات في الجدول ولفعل ذلك كما تعلمنا سابقا يجب اولا ان نمر على الجدول الى النهاية ثم نعود الى البداية لكي نستطيع ايجاد عدد السجلات بواسطة الخاصية Count نقوم بعد ذلك بعمل تكرار على عدد السجلات ونضع داخله كود يقوم بتعبئة البيانات بنفس الطريقة التي قمنا فيها بوضع عناوين الاعمدة ولكن يكون المصدر هو الجدول ،لن تفهم ما ذكرته الا عندما تشاهد الكود المطلوب والذي سأورده الان مع ملاحظة ان اسم الجدول الوهمي TB ويوجد به الحقول Name و Job ، مع ملاحظة ان اسم FlexGrid في الكود التالي هو flx1

If tb.RecordCount < 1 Then Exit Sub ' لكي نتأكد من وجود سجلات في الجدول او نخرج في عدمها

tb.MoveLast ' نتحرك الى الحقل الاخير

tb.MoveFirst ' نتحرك الى الحقل الاول

n = tb.RecordCount ' n نخزن عدد السجلات في المتغير

For i = 1 To n

flx1.Row = i ' رقم الصف حسب رقم التكرار

flx1.Col = 0 ' رقم العمود ثابت لأننا سوف نضع جميع القيم في للحقل في عمود واحد

flx1.Text = tb!Name ' نضع قيمة الحقل في الخلية المحددة

flx1.Col = 1

flx1.Text = tb!job

tb1.MoveNext ' نتحرك للسجل التالي

Next i

End Sub

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

من المهارات الممتازة ان تعرف كيف تجعل عدد الصفوف يتغير حسب عدد السجلات ولعمل ذلك اجعل خاصية عدد الصفوف تساوي عدد السجلات في الجدول زائدا واحد ، وقمنا بهذه الزيادة لأنها تعبر عن صف عناوين الحقول وضع هذه الجملة في المكان المناسب بعد حساب عدد الحقول في الجدول

ويوضح الكود التالي موقع الجملة من الكود السابق :

If tb.RecordCount < 1 Then Exit Sub

tb.MoveLast

tb.MoveFirst

n = tb.RecordCount

flx1.Rows = n + 1

For i = 1 To n

flx1.Row = i

flx1.Col = 0

flx1.Text = tb!Name

flx1.Col = 1

flx1.Text = tb!job

tb.MoveNext

Next i

End Sub

hardtoget410
10-14-2007, 08:47 AM
Thank you for your topic and we are waiting more

asonly
03-15-2008, 11:55 AM
مشكوووووووووووووور وماقصــــرت