تعلم كيفية التعامل مع الاداة أداة FlexGrid
صفحة 1 من اصل 1 • شاطر
تعلم كيفية التعامل مع الاداة أداة FlexGrid
بسم الله الرحمن الرحيم
لاحظت في الفترة الأخيرة كثرة الأسئلة عن أداة FlexGrid ..ولذلك انقل لكم شرح الاستاذ /مهند عبادي فى منتدى الفريق العربى للبرمجة وكان الشرح على النحو التالى :
أولاً = نظرة عامة
أداة MsFlexGrid لمن لا يعرفها : هي أداة تتألف من مجوعة أسطر Rows وأعمدة Columns بحيث يشكل تقاطع كل سطر وعمود خلية Cell بشكل يشابه لما هو موجود في Excel وتنقسم الأعمدة والأسطر إلى قسمين : ثابت Fixed كما هو الحال العمود المحتوي على أرقام الأسطر في إكسل والسطر المحتوي على أسماء الأعمدة ، وقسم عام تعطينا هذه الأداة ميزة التحكم في أي شيء مما يتعلق بها بدءاً من عدد الأعمدة والأسطر مروراً بخصائص كل خلية انتهاءً بالأحداث
وسأقسم هذه الدروس بناءً على مجموعة الخصائص التي نتكلم عنها وسأبدأ بسرد الخصائص مع مثال عن كل منها ثم في الدروس الأخيرة سأضع بعض الأمثلة بما فيها تعبئة MsFlexGrid بالبيانات من خلال ADO
ثانياً = التحكم بعدد الأعمدة والأسطر :
- لتحديد عدد الأسطر :
جيث N هو عدد الأسطر
- لتحديد عدد الأعمدة :
- لتحديد عدد الأسطر الثابتة :
جيث N هو عدد الأسطر الثابتة
- لتحديد عدد الأعمدة :
مثال :ضع أداة MsFlexGrid في نموذجك ثم اكتب الشفرة التالية في حدث عند التحميل :
يقوم هذا المثال بتحديد عدد الأسطر إلى 10 منها عمود واجد ثابت وعدد الأعمدة إلى 5 منها سطر واحد ثابت
ثالثاً : ملئ الخلايا بالقيم :
يبدأ ترقيم الأعمدة والأسطر بدءاً من رقم صفر و يشكل تقاطع كل سطر وعمود خلية Cell ، ولكتابة قيمة معينة بإحدى الخلايا نقوم أولاً بتحديد السطر والعمود اللذان يحددان بتقاطعهما الخلية بهذا الأسلوب :
ويجب أن لا ننسى أن الترقيم يبدأ من رقم 0 ولوضع قيمة في الخلية نستخدم :
مثال :من أجل ترقيم العمود الأول الثابت بترقيم يبدأ من 1 نكتب الكود التالي :
حيث أننا بدءنا بالحلقة من الرقم 1 بسبب عدم رغبتنا في ترقيم أول خلية
رابعا :الألوان
1- لون خلفية الاداة :
2- لون خلفية الخلايا الثابتة :
3- لون خلفية الخلايا العادية :
4- لون خلفية خلايا التحديد : أي عند التحديد
5- لون كتابة الخلايا الثابتة :
6- لون كتابة الخلايا العادية :
7- لون كتابة خلايا التحديد : أي عند التحديد
8- لون خط حدود الخلايا الثابتة :
9- لون خط حدود الخلايا العادية :
مثال :
10 – تلون خلية بحد ذاتها :بعد تحديد الخلية من خلال تحديد السطر والعمود كما ورد في الدرس الأول نستخدم التعليمات التالية :
- تحديد لون خلفية الخلية :
- تحديد لون خط الكتابة في الخلية :
مثال :من أجل تلوين خلايا العمود الثالث بشكل متباين نكتب الكود التالي :
خامسا :المظهر ( الحدود والمحاذاة)
1- مظهر الأداة : (مظهر الأداة ككل)
2- نمط الحدود الخارجية للأداة :
3- نمط حدود الخلايا : (مظهر الخلايا)إن نمط الحدود في الخلايا له إحدى هذه القيم
المظهر القيمة أو استخدم الثابت
---------------------------------------------------------
بلا 0 flexGridNone
مسطح 1 flexGridFlat
غاطس 2 flexGridInset
بارز 3 flexGridRaised
ونستخدم لتحديد مظهر الخلايا الطرائق التالية :
أ – مظهر الخلايا الثابتة :
ب – مظهر الخلايا العادية :
مثال :
4- محاذاة الأداة :لمحاذاة الأداة على نمط محاذاة الورقة في إكسل نستخدم :
5- محاذاة محتويات الخلايا :إن نمط المحاذاة في الخلايا له إحدى هذه القيم
المحاذاة القيمة أو استخدم الثابت
---------------------------------------------------------------------
يمين أعلى 0 flexAlignRightTop
يمين وسط 1 flexAlignRightCenter
يمين أسفل 2 flexAlignRightBottom
وسط أعلى 3 flexAlignCenterTop
وسط وسط 4 flexAlignCenterCenter
وسط أسفل 5 flexAlignCenterBottom
يسار أعلى 6 flexAlignLeftTop
يسار وسط 7 flexAlignLeftCenter
يسار أسفل 8 flexAlignLeftBottom
محاذاة عامة 9 flexAlignGeneral
ونستخدم لمحاذاة الخلايا الطرائق التالية :
أ – محاذاة عمود بكامله :
ب- محاذاة الخلايا الثابتة :
في هذه الحالة إذا كان رقم العمود هو عمود ثابت يطبق عليه نمط المحاذاة وإلا فإن هذه المحاذاة تطبق فقط على الخلايا الثابتة في هذا العمود
جـ - محاذاة خلية بحد ذاتها :بعد تحديد الخلية من خلال تحديد السطر والعمود كما ورد في الدرس الأول نستتخدم صيغة التعليمة التالية:
مثال :
سادسا :تحكمات متقدمة :
1- إضافة سطر جديد بواسطة تعليمة AddItem
حيث
Item : النص المراد إدراجه في السطر الجديد
Index الترتيب المراد إدراج السطر به .. وفي حال لم تمرر هذه القيمة يتم إدراج السطر في آخر الجدول ولا يجوز إدراج سطر جديد في ترتيب سطر ثابت
مثال :
ويلاحظ أن الإدراج يتم في أول عمود فقط .. ولكي ندرج مجموعة قيم في أعمدة أخرى نستخدم محرف الـ Tab وهو إما VBTab أو Chr(9) كما يلي :
2- السماح بتغيير حدود الأعمدة والأسطر :إن صلاحية تغيير حدود الأعمدة والأسطر يكون له إحدى هذه القيم :
الصلاحية .................... القيمة .. أو استخدم الثابت
------------------------------------------------------------------
حدود ثابتة..................... 0 ..... flexResizeNone
تغيير حدود الأعمدة فقط ......... 1..... flexResizeColumns
تغيير حدود الأسطر فقط ......... 2 ..... flexResizeRows
تغيير حدود الأسطر والأعمدة ..... 3 ..... flexResizeBoth
3- تغيير أسلوب التحديد عند النقر على خلية ثابتة :
True : عند الضغط على الخلية الثابتة يتم تحديد كامل السطر او العمود الذي يبدأ بهذه الخلية
4- الإستعلام عن حالة خفاء / ظهور الأعمدة والأسطر :
مثال : إذا كان عدد الأسطر 15 ويظهر ضمن عرض أداة MsFlexGrid 7 أعمدة فقط فإن حالة ظهور الأعمدة من 7-15 تكون False
5- تحديد مجموعة خلايا :لتحديد مجموعة خلايا نضع نحدد الخلية التي سنبدأ منها التحديد ثم نستعمل خاصيتي RowSel و ColSel كما يلي :
مثال :لتحديد ثالث ورابع وخامس خلية في العمود الثاني نكتب :
في هذا المثال لا يتم تظليل الخلية الأولى لأنها هي الخلية التي عليها المؤشر (التحكم)
و يمكن استعمال خاصيتي RowSel و ColSel لقراءة قيمتهما.
مثال :لتغيير اللون الخلفي للخلايا المحددة إلى اللون الأصفر نكتب هذا الكود في الحدث الذي نريده وليكن عند الضغط على زر:
6- تغيير ترتيب الأسطر :
7- تغيير ترتيب الأعمدة :
مثال : لترتيب الأعمدة بشكل معكوس :
8- معرفة موقع الخلية بالنسبة للأداة MsFlexGid :نستعمل خاصيتي :
ColPos : لمعرفة بعد الحد الأيسر للعمود عن طرف الأداة من اليسار
RowPos : لمعرفة بعد الحد العلوي للسطر عن طرف الأداة من الأعلى
مثال تطبيقي :للإظهار مربع نص - وليكن اسمه Text1وهو مخفي حالياً - مكان الخلية عند النقر المزدوج عليها :
سابعا : تحكمات متقدمة (2)
1- أشرطة التمرير :إن نمط عرض أشرطة الأدوات في MsFlexGrid له إحدى هذه القيم الشريط القيمة أو استخدم الثابت
بلا 0 flexScrollBarNone
عمودي فقط 1 flexScrollBarHorizontal
أفقي فقط 2 flexScrollBarVertical
عمودي وأفقي 3 flexScrollBarBoth (افتراضي)
2- عرض حدود مربع تحديد الخلايا :وله إحدى هذه القيم العرض القيمة أو استخدم الثابت
بلا 0 flexFocusLight
رفيع 1 flexScrollBarHorizontal
ثخين 2 flexFocusHeavy
3- تحديد العمود والسطر الذي تتواجد فيهما الفأرة
مثال
وكتطبيق عملي يمكن عمل تأثير .. هو تلوين الخلية حيث تكون الفأرة موجودة ويتم تغييره مع تحرّك الفأرة
4- حذف سطر بواسطة تعليمة RemoveItem
حيث :
Index ترتيب السطر المراد حذفه ..
مثال : لحذف السطر الذي فيه التحديد
5- خاصية الصورة ضمن الخلية :نقوم بتحديد الخلية المراد وضع الصورة بها ثم نستخدم الصيغة
مثال إذا أردنا وضع صورة في الخلية التي في الزاوية (0،0) نكتب
نلاحظ استخدام Set في هذه الحالة
6- تحديد موقع الصورة ضمن الخلية
نستخدم في نمط المحاذاة نفس محاذاة محتويات الخلايا
مثال : لوضع صورة في منتصف الخلية التي في الزاوية (0،0) نكتب
سابعا :تعبئة جدول ADO في أداة MsFlexGrid
قبل أن أبدأ في هذا الدرس أود التذكير أنه يوجد أدوات Grid خاصة جاهزة للتعامل مع البيانات مثل DbGrid و MSHFlexGrid
هذا مثال على تعبئة جدول ضمن MsFlexGrid
1- في قسم التصريحات العامة للفورم (General) نضع هذان التعريفان
2- في حدث عند التحميل للفورم نكتب الكود التالي :
في هذا الكود يتم تحديد نوع قاعدة البيانات وهي Access ثم نربط المتحول MyDB بالقاعدة وهي موجودة في نفس مسار البرنامج باسم db1.mdb ثم نستخدم المتحول RS لفتح الجدول Table1 من قاعدة البيانات ثم نستدعي إجراء اسمه DrawFlex
3- هذا الإجراء سوف نعمله من أجل أن يملأ أداة MsFlexGrid بالبيانات الموجودة ضمن RS ويتم استدعاؤه كلما تغيرت مجموعة البيانات
وهذه هي شيفرة هذا الإجراء:
لاحظت في الفترة الأخيرة كثرة الأسئلة عن أداة FlexGrid ..ولذلك انقل لكم شرح الاستاذ /مهند عبادي فى منتدى الفريق العربى للبرمجة وكان الشرح على النحو التالى :
أولاً = نظرة عامة
أداة MsFlexGrid لمن لا يعرفها : هي أداة تتألف من مجوعة أسطر Rows وأعمدة Columns بحيث يشكل تقاطع كل سطر وعمود خلية Cell بشكل يشابه لما هو موجود في Excel وتنقسم الأعمدة والأسطر إلى قسمين : ثابت Fixed كما هو الحال العمود المحتوي على أرقام الأسطر في إكسل والسطر المحتوي على أسماء الأعمدة ، وقسم عام تعطينا هذه الأداة ميزة التحكم في أي شيء مما يتعلق بها بدءاً من عدد الأعمدة والأسطر مروراً بخصائص كل خلية انتهاءً بالأحداث
وسأقسم هذه الدروس بناءً على مجموعة الخصائص التي نتكلم عنها وسأبدأ بسرد الخصائص مع مثال عن كل منها ثم في الدروس الأخيرة سأضع بعض الأمثلة بما فيها تعبئة MsFlexGrid بالبيانات من خلال ADO
ثانياً = التحكم بعدد الأعمدة والأسطر :
- لتحديد عدد الأسطر :
- الكود:
MsFlexGrid.Rows= N
جيث N هو عدد الأسطر
- لتحديد عدد الأعمدة :
- الكود:
MsFlexGrid.Cols= N
- لتحديد عدد الأسطر الثابتة :
- الكود:
MsFlexGrid.FixedRows= N
جيث N هو عدد الأسطر الثابتة
- لتحديد عدد الأعمدة :
- الكود:
MsFlexGrid.FixedCols= N
مثال :ضع أداة MsFlexGrid في نموذجك ثم اكتب الشفرة التالية في حدث عند التحميل :
- الكود:
Private Sub Form_Load()
MsFlexGrid1.Rows = 10
MsFlexGrid1.Cols = 5
MsFlexGrid1.FixedCols = 1
MsFlexGrid1.FixedRows = 1
End Sub
يقوم هذا المثال بتحديد عدد الأسطر إلى 10 منها عمود واجد ثابت وعدد الأعمدة إلى 5 منها سطر واحد ثابت
ثالثاً : ملئ الخلايا بالقيم :
يبدأ ترقيم الأعمدة والأسطر بدءاً من رقم صفر و يشكل تقاطع كل سطر وعمود خلية Cell ، ولكتابة قيمة معينة بإحدى الخلايا نقوم أولاً بتحديد السطر والعمود اللذان يحددان بتقاطعهما الخلية بهذا الأسلوب :
- الكود:
MsFlexGrid.Col = ColNo <------------------ رقم العمود
MsFlexGrid.Row = RowNo <--------------- رقم السطر
ويجب أن لا ننسى أن الترقيم يبدأ من رقم 0 ولوضع قيمة في الخلية نستخدم :
- الكود:
MsFlexGrid.Text = MyText <------------ القيمة التي نريدها
مثال :من أجل ترقيم العمود الأول الثابت بترقيم يبدأ من 1 نكتب الكود التالي :
- الكود:
Dim R as integer
For R = 1 to 9
MsFlexGrid1.Col = 0
MsFlexGrid1.Row = R
MsFlexGrid1.Text = R
Next R
حيث أننا بدءنا بالحلقة من الرقم 1 بسبب عدم رغبتنا في ترقيم أول خلية
رابعا :الألوان
1- لون خلفية الاداة :
- الكود:
MsFlexGrid.BackColorBkg = Color
2- لون خلفية الخلايا الثابتة :
- الكود:
MsFlexGrid.BackColorFixed = Color
3- لون خلفية الخلايا العادية :
- الكود:
MsFlexGrid.BackColor = Color
4- لون خلفية خلايا التحديد : أي عند التحديد
- الكود:
MsFlexGrid.BackColorSel = Color
5- لون كتابة الخلايا الثابتة :
- الكود:
MsFlexGrid.ForeColorFixed = Color
6- لون كتابة الخلايا العادية :
- الكود:
MsFlexGrid.ForeColor = Color
7- لون كتابة خلايا التحديد : أي عند التحديد
- الكود:
MsFlexGrid.ForeColorSel = Color
8- لون خط حدود الخلايا الثابتة :
- الكود:
MsFlexGrid.GridColorFixed = Color
9- لون خط حدود الخلايا العادية :
- الكود:
MsFlexGrid.GridColor = Color
مثال :
- الكود:
MsFlexGrid1.BackColorBkg = QbColor(3)
MsFlexGrid1.BackColorFixed = QbColor(7)
MsFlexGrid1.BackColor = QbColor(15)
MsFlexGrid1.BackColorSel = QbColor(1)
MsFlexGrid1.ForeColorFixed = QbColor(0)
MsFlexGrid1.ForeColor = QbColor(1)
MsFlexGrid1.ForeColorSel = QbColor(14)
MsFlexGrid1.GridColorFixed = QbColor(8)
MsFlexGrid1.GridColor = QbColor(2)
10 – تلون خلية بحد ذاتها :بعد تحديد الخلية من خلال تحديد السطر والعمود كما ورد في الدرس الأول نستخدم التعليمات التالية :
- تحديد لون خلفية الخلية :
- الكود:
MsFlexGrid.CellBackColor = Color
- تحديد لون خط الكتابة في الخلية :
- الكود:
MsFlexGrid.CellForeColor = Color
مثال :من أجل تلوين خلايا العمود الثالث بشكل متباين نكتب الكود التالي :
- الكود:
Dim R as integer
For R = 1 to 9
MsFlexGrid1.Col = 2
MsFlexGrid1.Row = R
MsFlexGrid1.CellBackColor = QbColor(R)
Next R
خامسا :المظهر ( الحدود والمحاذاة)
1- مظهر الأداة : (مظهر الأداة ككل)
- الكود:
MsFlexGrid.Appearance = flexFlat <------------------- ثلاثي أبعاد
MsFlexGrid.Appearance = flex3D <------------------- مسطح
2- نمط الحدود الخارجية للأداة :
- الكود:
MsFlexGrid.BorderStyle = flexBorderSingle<-------------- خط مفرد
MsFlexGrid.BorderStyle = flexBorderNone <-------------- بدون خط
3- نمط حدود الخلايا : (مظهر الخلايا)إن نمط الحدود في الخلايا له إحدى هذه القيم
المظهر القيمة أو استخدم الثابت
---------------------------------------------------------
بلا 0 flexGridNone
مسطح 1 flexGridFlat
غاطس 2 flexGridInset
بارز 3 flexGridRaised
ونستخدم لتحديد مظهر الخلايا الطرائق التالية :
أ – مظهر الخلايا الثابتة :
- الكود:
MsFlexGrid.GridLinesFixed = نمط الحدود
ب – مظهر الخلايا العادية :
- الكود:
MsFlexGrid.GridLines = نمط الحدود
مثال :
- الكود:
MsFlexGrid1.Appearance = flex3D
MsFlexGrid1.BorderStyle = flexBorderNone
MsFlexGrid1.GridLinesFixed = flexGridInset
MsFlexGrid1.GridLines = 0
4- محاذاة الأداة :لمحاذاة الأداة على نمط محاذاة الورقة في إكسل نستخدم :
- الكود:
MsFlexGrid.RightToLeft = True <------------------- محاذاة إلى اليمين
MsFlexGrid.RightToLeft = False <------------------- محاذاة إلى اليسار
5- محاذاة محتويات الخلايا :إن نمط المحاذاة في الخلايا له إحدى هذه القيم
المحاذاة القيمة أو استخدم الثابت
---------------------------------------------------------------------
يمين أعلى 0 flexAlignRightTop
يمين وسط 1 flexAlignRightCenter
يمين أسفل 2 flexAlignRightBottom
وسط أعلى 3 flexAlignCenterTop
وسط وسط 4 flexAlignCenterCenter
وسط أسفل 5 flexAlignCenterBottom
يسار أعلى 6 flexAlignLeftTop
يسار وسط 7 flexAlignLeftCenter
يسار أسفل 8 flexAlignLeftBottom
محاذاة عامة 9 flexAlignGeneral
ونستخدم لمحاذاة الخلايا الطرائق التالية :
أ – محاذاة عمود بكامله :
- الكود:
MsFlexGrid.ColAlignment(رقم العمود) = N <--------------- نمط المحاذاة
ب- محاذاة الخلايا الثابتة :
- الكود:
MsFlexGrid.FixedAlignment(رقم العمود) = N <--------------- نمط المحاذاة
في هذه الحالة إذا كان رقم العمود هو عمود ثابت يطبق عليه نمط المحاذاة وإلا فإن هذه المحاذاة تطبق فقط على الخلايا الثابتة في هذا العمود
جـ - محاذاة خلية بحد ذاتها :بعد تحديد الخلية من خلال تحديد السطر والعمود كما ورد في الدرس الأول نستتخدم صيغة التعليمة التالية:
- الكود:
MsFlexGrid.CellAlignment = N <--------------- نمط المحاذاة
مثال :
- الكود:
Dim X as Integer , Y as Integer
MsFlexGrid1.RightToLeft = True
For X = 0 To MsFlexGrid1.cols-1
MsFlexGrid1.FixedAlignment (X) = 1
For Y = MsFlexGrid1.FixedRows to MsFlexGrid1.Rows -1
MsFlexGrid1.Col = X
MsFlexGrid1.Row = Y
If MsFlexGrid1.text = "0" then
MsFlexGrid1.CellAlignment = flexAlignCenterCenter
End If
Next Y
Next X
سادسا :تحكمات متقدمة :
1- إضافة سطر جديد بواسطة تعليمة AddItem
- الكود:
MsFlexGrid.AddItem Item, Idnex
حيث
Item : النص المراد إدراجه في السطر الجديد
Index الترتيب المراد إدراج السطر به .. وفي حال لم تمرر هذه القيمة يتم إدراج السطر في آخر الجدول ولا يجوز إدراج سطر جديد في ترتيب سطر ثابت
مثال :
- الكود:
MsFlexGrid1.AddItem "Sum :"
ويلاحظ أن الإدراج يتم في أول عمود فقط .. ولكي ندرج مجموعة قيم في أعمدة أخرى نستخدم محرف الـ Tab وهو إما VBTab أو Chr(9) كما يلي :
- الكود:
MsFlexGrid1.AddItem "Sum :" & VBTab & "12000" & chr(9) & "2455"
2- السماح بتغيير حدود الأعمدة والأسطر :إن صلاحية تغيير حدود الأعمدة والأسطر يكون له إحدى هذه القيم :
الصلاحية .................... القيمة .. أو استخدم الثابت
------------------------------------------------------------------
حدود ثابتة..................... 0 ..... flexResizeNone
تغيير حدود الأعمدة فقط ......... 1..... flexResizeColumns
تغيير حدود الأسطر فقط ......... 2 ..... flexResizeRows
تغيير حدود الأسطر والأعمدة ..... 3 ..... flexResizeBoth
- الكود:
MsFlexGrid.AllowUserResizing = الصلاحية
3- تغيير أسلوب التحديد عند النقر على خلية ثابتة :
- الكود:
MsFlexGrid.AllowBigSelection = False أو True
True : عند الضغط على الخلية الثابتة يتم تحديد كامل السطر او العمود الذي يبدأ بهذه الخلية
4- الإستعلام عن حالة خفاء / ظهور الأعمدة والأسطر :
- الكود:
MsFlexGrid.ColIsVisible(رقم العمود)
MsFlexGrid.RowIsVisible(رقم السطر)
مثال : إذا كان عدد الأسطر 15 ويظهر ضمن عرض أداة MsFlexGrid 7 أعمدة فقط فإن حالة ظهور الأعمدة من 7-15 تكون False
- الكود:
MsgBox MsFlexGrid1.ColIsVisible(MsFlexGrid1.cols)
5- تحديد مجموعة خلايا :لتحديد مجموعة خلايا نضع نحدد الخلية التي سنبدأ منها التحديد ثم نستعمل خاصيتي RowSel و ColSel كما يلي :
- الكود:
MsFlexGrid.ColSel = N <---------- يتم التحديد حتى هذا العمود
MsFlexGrid.RowSel = N <---------- يتم التحديد حتى هذا السطر
مثال :لتحديد ثالث ورابع وخامس خلية في العمود الثاني نكتب :
- الكود:
MsFlexGrid1.Col = 1
MsFlexGrid1.Row = 2
MsFlexGrid1.RowSel = 4
في هذا المثال لا يتم تظليل الخلية الأولى لأنها هي الخلية التي عليها المؤشر (التحكم)
و يمكن استعمال خاصيتي RowSel و ColSel لقراءة قيمتهما.
مثال :لتغيير اللون الخلفي للخلايا المحددة إلى اللون الأصفر نكتب هذا الكود في الحدث الذي نريده وليكن عند الضغط على زر:
- الكود:
Dim X as Integer , Y as Integer
Dim BC as Integer , EC as Integer
Dim BR as Integer , ER as Integer
BC = MsFlexGrid1.Col
EC = MsFlexGrid1.ColSel
BR = MsFlexGrid1.Row
ER = MsFlexGrid1.RowSel
For X = BC To EC Step IIf(BC > EC, -1, 1)
For Y = BR To ER Step IIf(BR > ER, -1, 1)
MsFlexGrid1.Col = X
MsFlexGrid1.Row = Y
MsFlexGrid1.CellBackColor = VbYellow
Next Y
Next X
6- تغيير ترتيب الأسطر :
- الكود:
MsFlexGrid.RowPosition(رقم السطر) = الترتيب الذي نريده
7- تغيير ترتيب الأعمدة :
- الكود:
MsFlexGrid.ColPosition(رقم العمود) = الترتيب الذي نريده
مثال : لترتيب الأعمدة بشكل معكوس :
- الكود:
Dim R as Integer
For R = 2 To MsFlexGrid1.Cols - 1
MsFlexGrid1.ColPosition(R) = 1
Next
8- معرفة موقع الخلية بالنسبة للأداة MsFlexGid :نستعمل خاصيتي :
ColPos : لمعرفة بعد الحد الأيسر للعمود عن طرف الأداة من اليسار
RowPos : لمعرفة بعد الحد العلوي للسطر عن طرف الأداة من الأعلى
مثال تطبيقي :للإظهار مربع نص - وليكن اسمه Text1وهو مخفي حالياً - مكان الخلية عند النقر المزدوج عليها :
- الكود:
With MsFlexGrid1
Set Text1.Font = .Font
Text1.RightToLeft = .RightToLeft
Text1.Alignment = .CellAlignment
Text1.Left = .Left + .ColPos(.Col) + .BorderStyle * 30
Text1.Top = .Top + .RowPos(.Row) + .BorderStyle * 30
Text1.Width = .ColWidth(.Col)
Text1.Height = .RowHeight(.Row)
Text1.Appearance = vbFlat
Text1.Text = .Text
Text1.Visible = True
Text1.SetFocus
End With
سابعا : تحكمات متقدمة (2)
1- أشرطة التمرير :إن نمط عرض أشرطة الأدوات في MsFlexGrid له إحدى هذه القيم الشريط القيمة أو استخدم الثابت
بلا 0 flexScrollBarNone
عمودي فقط 1 flexScrollBarHorizontal
أفقي فقط 2 flexScrollBarVertical
عمودي وأفقي 3 flexScrollBarBoth (افتراضي)
- الكود:
MsFlexGrid.ScrollBars = نمط عرض أشرطة الأدوات
2- عرض حدود مربع تحديد الخلايا :وله إحدى هذه القيم العرض القيمة أو استخدم الثابت
بلا 0 flexFocusLight
رفيع 1 flexScrollBarHorizontal
ثخين 2 flexFocusHeavy
- الكود:
MsFlexGrid.FocusRect = عرض حدود مربع التحديد
3- تحديد العمود والسطر الذي تتواجد فيهما الفأرة
- الكود:
MsFlexGrid.MouseCol
MsFlexGrid.MouseRow
مثال
- الكود:
Private Sub MsFlexGrid1_DblClick()
With MsFlexGrid1
MsgBox "Mouse in Row :" &.MouseRow & vbCr & _
"Mouse in Col :" &.MouseCol
End With
End Sub
وكتطبيق عملي يمكن عمل تأثير .. هو تلوين الخلية حيث تكون الفأرة موجودة ويتم تغييره مع تحرّك الفأرة
4- حذف سطر بواسطة تعليمة RemoveItem
- الكود:
MsFlexGrid.RemoveItem (Idnex)
حيث :
Index ترتيب السطر المراد حذفه ..
مثال : لحذف السطر الذي فيه التحديد
- الكود:
MsFlexGrid1.RemoveItem (MsFlexGrid1.Row)
5- خاصية الصورة ضمن الخلية :نقوم بتحديد الخلية المراد وضع الصورة بها ثم نستخدم الصيغة
- الكود:
MsFlexGrid.CellPicture
مثال إذا أردنا وضع صورة في الخلية التي في الزاوية (0،0) نكتب
- الكود:
MsFlexGrid1.Row = 0
MsFlexGrid1.Col = 0
Set MsFlexGrid1.CellPicture = LoadPicture(".\hand.ico")
نلاحظ استخدام Set في هذه الحالة
6- تحديد موقع الصورة ضمن الخلية
- الكود:
MsFlexGrid.CellPictureAlignment = N <--------------- نمط المحاذاة
نستخدم في نمط المحاذاة نفس محاذاة محتويات الخلايا
مثال : لوضع صورة في منتصف الخلية التي في الزاوية (0،0) نكتب
- الكود:
MsFlexGrid1.Row = 0
MsFlexGrid1.Col = 0
Set MsFlexGrid1.CellPicture = LoadPicture(".\hand.ico")
MsFlexGrid1.CellPictureAlignment = flexAlignCenterCenter
سابعا :تعبئة جدول ADO في أداة MsFlexGrid
قبل أن أبدأ في هذا الدرس أود التذكير أنه يوجد أدوات Grid خاصة جاهزة للتعامل مع البيانات مثل DbGrid و MSHFlexGrid
هذا مثال على تعبئة جدول ضمن MsFlexGrid
1- في قسم التصريحات العامة للفورم (General) نضع هذان التعريفان
- الكود:
Dim MyDb As New ADODB.Connection
Dim rs As New ADODB.Recordset
2- في حدث عند التحميل للفورم نكتب الكود التالي :
- الكود:
Private Sub Form_Load()
MyDb.Provider = "Microsoft.JET.OLEDB.4.0;"
MyDb.Open App.Path & "\Db1.mdb "
rs.Open "table1", MyDb, adOpenStatic, adLockPessimistic
DrawFlex
End Sub
في هذا الكود يتم تحديد نوع قاعدة البيانات وهي Access ثم نربط المتحول MyDB بالقاعدة وهي موجودة في نفس مسار البرنامج باسم db1.mdb ثم نستخدم المتحول RS لفتح الجدول Table1 من قاعدة البيانات ثم نستدعي إجراء اسمه DrawFlex
3- هذا الإجراء سوف نعمله من أجل أن يملأ أداة MsFlexGrid بالبيانات الموجودة ضمن RS ويتم استدعاؤه كلما تغيرت مجموعة البيانات
وهذه هي شيفرة هذا الإجراء:
- الكود:
Private Sub DrawFlex()
Dim R As Integer
With MsFlexGrid1
.Clear
.AllowUserResizing = flexResizeColumns
.FixedCols = 0
.FixedRows = 1
' تحديد عدد الأعمدة يساوي عدد الحقول
.Cols = rs.Fields.Count
' تحديد عدد الأسطر يساوي عدد السجلات زائد واحد لأن أول سطر سيستخدم لكتابة عناوين الأعمدة
.Rows = rs.RecordCount + 1
' لكتابة عناوين الأعمدة
.Row = 0
For R = 0 To .Cols - 1
.Col = R
.Text = rs.Fields(R).Name
Next R
' ملئ الأسطر بالمعلومات
rs.MoveFirst
.Row = 0
Do Until rs.EOF
.Row = .Row + 1
For R = 0 To .Cols - 1
.Col = R
A = rs.Fields(R).Value
A = IIf(IsNull(A), "", A)
.Text = A
Next R
rs.MoveNext
Loop
End With
End Sub
م/موسي- الاشراف
- تاريخ التسجيل : 18/02/2011
المساهمات : 178
النقاط : 346
التقيم : 12
الدولة :
الجنس :
رد: تعلم كيفية التعامل مع الاداة أداة FlexGrid
اداه تستخدم كثير ولا غنى عنها
شرح سلس وممتع استفدنا منك الله يعطيك العافية والصحة
شرح سلس وممتع استفدنا منك الله يعطيك العافية والصحة
ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
ليس من اخترق جهاز اصبح هكر
وليس من كتب كود اصبح مبرمج
وليس من كسر برنامج صار خيبير كسر
ولكن من تواضع لله رفعة
tryold- ...
- تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 47
التقيم : 2
الدولة :
الجنس :
رد: تعلم كيفية التعامل مع الاداة أداة FlexGrid
بارك الله فيك
ولكن كيف يمكن أن أجعل المستخدم يعبئ الMsFlexGrid بنفسه لأضع هذه البيانات فى جدول قاعدة البيانات بعد ضغطه على الزر"OK"
بفرض لدينا جدول من ثلاثة حقول (XXX1,XXX2,XXX3)
ونريد أن يضع المستخدم فيه سبعة سجلات مثلآ عن طريق الMsFlexGrid
ثم يضغط على الزر"OK"
فكيف ذلك ؟
ولكم ألف شكر
مثال على تعبئة جدول ضمن MsFlexGrid كتب:مثال على تعبئة جدول ضمن MsFlexGrid
ولكن كيف يمكن أن أجعل المستخدم يعبئ الMsFlexGrid بنفسه لأضع هذه البيانات فى جدول قاعدة البيانات بعد ضغطه على الزر"OK"
بفرض لدينا جدول من ثلاثة حقول (XXX1,XXX2,XXX3)
ونريد أن يضع المستخدم فيه سبعة سجلات مثلآ عن طريق الMsFlexGrid
ثم يضغط على الزر"OK"
فكيف ذلك ؟
ولكم ألف شكر
اسلام الكبابى- ...
- تاريخ التسجيل : 16/02/2017
المساهمات : 42
النقاط : 92
التقيم : 0
الدولة :
الجنس :
رد: تعلم كيفية التعامل مع الاداة أداة FlexGrid
هل سؤالى غير مفهوم ؟ أم ليس له حل ؟
ولكم ألف شكر
ولكم ألف شكر
اسلام الكبابى- ...
- تاريخ التسجيل : 16/02/2017
المساهمات : 42
النقاط : 92
التقيم : 0
الدولة :
الجنس :
| |
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
أمس في 12:41 am من طرف marketing118
» شركة تنظيف ستائر بالرياض
الأحد مارس 17, 2024 10:46 pm من طرف moslema_r
» خيام ملكيه من الداخل
الأحد مارس 17, 2024 8:13 pm من طرف marketing118
» شركة نقل عفش بالطائف
الأحد مارس 17, 2024 6:34 pm من طرف marketing118
» كهربائي منازل بالرياض
الأحد مارس 17, 2024 1:52 pm من طرف رانيا حماد
» افضل شركة نقل عفش بالرياض نقل باكستاني 40% خصم | موقع الانوار
الأحد مارس 17, 2024 1:25 pm من طرف رانيا حماد
» افضل معلم جبس بالرياض تركيب جبس بورد بالرياض 20% خصم اتصل الآن
الأحد مارس 17, 2024 1:09 pm من طرف رانيا حماد
» شراء اثاث مستعمل بالكويت بخصم 30%
الأحد مارس 17, 2024 12:54 pm من طرف رانيا حماد
» افضل فني كهربائي منازل بالرياض جودة 100% | اتصل الآن
الأحد مارس 17, 2024 12:36 pm من طرف رانيا حماد
» أفضل فني سباك بالرياض ممتاز بالرياض | اتصل الآن
الأحد مارس 17, 2024 12:25 pm من طرف رانيا حماد